From c13e09b706b4302d962ea6777e0861955a9e432c Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sun, 22 Mar 2015 23:47:16 +0100 Subject: [PATCH] Add option to queue all msgs in unfocused windows. --- qutebrowser/config/configdata.py | 4 ++++ qutebrowser/utils/message.py | 25 +++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index 3fd27b954..c4937bcb9 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -222,6 +222,10 @@ DATA = collections.OrderedDict([ SettingValue(typ.Int(), '2000'), "Time (in ms) to show messages in the statusbar for."), + ('message-unfocused', + SettingValue(typ.Bool(), 'false'), + "Whether to show messages in unfocused windows."), + ('confirm-quit', SettingValue(typ.ConfirmQuit(), 'never'), "Whether to confirm quitting the application."), diff --git a/qutebrowser/utils/message.py b/qutebrowser/utils/message.py index ef98af646..48fa5fc07 100644 --- a/qutebrowser/utils/message.py +++ b/qutebrowser/utils/message.py @@ -23,6 +23,7 @@ import datetime import collections from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject +from PyQt5.QtWidgets import QApplication from qutebrowser.utils import usertypes, log, objreg, utils @@ -44,20 +45,32 @@ def _wrapper(win_id, method_name, text, *args, **kwargs): text: The text do display. *args/**kwargs: Arguments to pass to the method. """ + msg = QueuedMsg(time=datetime.datetime.now(), win_id=win_id, + method_name=method_name, text=text, args=args, + kwargs=kwargs) try: bridge = _get_bridge(win_id) except objreg.RegistryUnavailableError: if win_id == 'current': - log.misc.debug("Queueing {} for window {}".format(method_name, - win_id)) - msg = QueuedMsg(time=datetime.datetime.now(), win_id=win_id, - method_name=method_name, text=text, args=args, - kwargs=kwargs) + log.misc.debug("Queueing {} for current window".format( + method_name)) _QUEUED.append(msg) else: raise else: - getattr(bridge, method_name)(text, *args, **kwargs) + from qutebrowser.config import config + win = QApplication.instance().activeWindow() + window_focused = (win is not None and + win in objreg.window_registry.values() and + win.win_id == win_id) + if (config.get('ui', 'message-unfocused') or + method_name not in ('error', 'warning', 'info') or + window_focused): + getattr(bridge, method_name)(text, *args, **kwargs) + else: + log.misc.debug("Queueing {} for window {}".format(method_name, + win_id)) + _QUEUED.append(msg) def _get_bridge(win_id):