summaryrefslogtreecommitdiff
path: root/qutebrowser/browser/signalfilter.py
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2014-07-16 11:07:05 +0200
committerFlorian Bruhin <git@the-compiler.org>2014-07-16 11:07:05 +0200
commit98edd45fee22e31a91f79eb42c1d35522502bd56 (patch)
tree38836ed26c08a8e6c4f679751a2af404e73aca75 /qutebrowser/browser/signalfilter.py
parent8757f016cb846927b447c6cdc0f6c6f7a2a95135 (diff)
downloadqutebrowser-98edd45fee22e31a91f79eb42c1d35522502bd56.tar.gz
qutebrowser-98edd45fee22e31a91f79eb42c1d35522502bd56.zip
Stop using self.sender() in signalfilter, connect signals to mainframe
Diffstat (limited to 'qutebrowser/browser/signalfilter.py')
-rw-r--r--qutebrowser/browser/signalfilter.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/qutebrowser/browser/signalfilter.py b/qutebrowser/browser/signalfilter.py
index dd9f71ed7..cb073cce3 100644
--- a/qutebrowser/browser/signalfilter.py
+++ b/qutebrowser/browser/signalfilter.py
@@ -48,18 +48,22 @@ class SignalFilter(QObject):
super().__init__(tabs)
self._tabs = tabs
- def create(self, signal):
+ def create(self, signal, tab):
"""Factory for partial _filter_signals functions.
Args:
signal: The pyqtSignal to filter.
+ tab: The WebView to create filters for.
Return:
A partial functon calling _filter_signals with a signal.
"""
- return partial(self._filter_signals, signal)
+ if not isinstance(tab, WebView):
+ raise ValueError("Tried to create filter for {} which is no "
+ "WebView!".format(tab))
+ return partial(self._filter_signals, signal, tab)
- def _filter_signals(self, signal, *args):
+ def _filter_signals(self, signal, tab, *args):
"""Filter signals and trigger TabbedBrowser signals if needed.
Triggers signal if the original signal was sent from the _current_ tab
@@ -70,24 +74,20 @@ class SignalFilter(QObject):
Args:
signal: The signal to emit if the sender was the current widget.
+ tab: The WebView which the filter belongs to.
*args: The args to pass to the signal.
Emit:
The target signal if the sender was the current widget.
"""
- sender = self.sender()
log_signal = signal_name(signal) not in self.BLACKLIST
- if not isinstance(sender, WebView):
- # BUG? This should never happen, but it does regularely...
- logger.warning("Got signal {} by {} which is no tab!".format(
- dbg_signal(signal, args), sender))
- return
- if self._tabs.currentWidget() == sender:
+ tabidx = self._tabs.indexOf(tab)
+ if tabidx == self._tabs.currentIndex():
if log_signal:
logger.debug("emitting: {} (tab {})".format(
- dbg_signal(signal, args), self._tabs.indexOf(sender)))
+ dbg_signal(signal, args), tabidx))
signal.emit(*args)
else:
if log_signal:
logger.debug("ignoring: {} (tab {})".format(
- dbg_signal(signal, args), self._tabs.indexOf(sender)))
+ dbg_signal(signal, args), tabidx))