diff options
author | Florian Bruhin <git@the-compiler.org> | 2014-07-16 11:07:05 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2014-07-16 11:07:05 +0200 |
commit | 98edd45fee22e31a91f79eb42c1d35522502bd56 (patch) | |
tree | 38836ed26c08a8e6c4f679751a2af404e73aca75 /qutebrowser/browser/signalfilter.py | |
parent | 8757f016cb846927b447c6cdc0f6c6f7a2a95135 (diff) | |
download | qutebrowser-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.py | 24 |
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)) |