From 8e405b85e1795146ebe56290c812fb58bcf71b68 Mon Sep 17 00:00:00 2001 From: youve <25477622+youve@users.noreply.github.com> Date: Sun, 31 Jul 2022 15:40:00 +0200 Subject: [PATCH 1/5] Display title or alt text on hover if available When I create a keyboard driven hover event, with `;h`, I want to get the same information I would have received if I created the hover event with the mouse. --- qutebrowser/browser/webelem.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 344292166..c82cdf7d0 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -27,7 +27,7 @@ from PyQt5.QtGui import QMouseEvent from qutebrowser.config import config from qutebrowser.keyinput import modeman -from qutebrowser.utils import log, usertypes, utils, qtutils, objreg +from qutebrowser.utils import log, usertypes, utils, qtutils, objreg, message if TYPE_CHECKING: from qutebrowser.browser import browsertab @@ -449,6 +449,9 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a event = QMouseEvent(QEvent.MouseMove, pos, Qt.NoButton, Qt.NoButton, Qt.NoModifier) self._tab.send_event(event) + title_or_alt_text = self.get("title") or self.get("alt") or "" + if len(title_or_alt_text): + message.info(title_or_alt_text) def right_click(self) -> None: """Simulate a right-click on the element.""" From dcb4b64bf6a61faa804718b65040ce10c2de61b4 Mon Sep 17 00:00:00 2001 From: youve <25477622+youve@users.noreply.github.com> Date: Mon, 1 Aug 2022 19:40:38 +0200 Subject: [PATCH 2/5] Display title or alt text on hover if available When I create a keyboard driven hover event, with `;h`, I want to get the same information I would have received if I created the hover event with the mouse. --- qutebrowser/browser/hints.py | 6 ++++++ qutebrowser/browser/webelem.py | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index ed933e10c..cead2eb8c 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -237,6 +237,12 @@ class HintActions: try: if context.target == Target.hover: elem.hover() + elem_info = elem.info_str() + if elem_info: + elem_info = elem_info.strip() + if elem_info: + # Don't display an empty message + message.info(elem_info) elif context.target == Target.right_click: elem.right_click() elif context.target == Target.current: diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index c82cdf7d0..fc35b3ad6 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -27,7 +27,7 @@ from PyQt5.QtGui import QMouseEvent from qutebrowser.config import config from qutebrowser.keyinput import modeman -from qutebrowser.utils import log, usertypes, utils, qtutils, objreg, message +from qutebrowser.utils import log, usertypes, utils, qtutils, objreg if TYPE_CHECKING: from qutebrowser.browser import browsertab @@ -449,9 +449,10 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a event = QMouseEvent(QEvent.MouseMove, pos, Qt.NoButton, Qt.NoButton, Qt.NoModifier) self._tab.send_event(event) - title_or_alt_text = self.get("title") or self.get("alt") or "" - if len(title_or_alt_text): - message.info(title_or_alt_text) + + def info_str(self) -> str: + """Return the contents of the element's title or alt tag for display""" + return self.get("title") or self.get("alt") or None def right_click(self) -> None: """Simulate a right-click on the element.""" From 394ac9c3cc94669b730e5d2b7bfe41732ed1aedb Mon Sep 17 00:00:00 2001 From: youve <25477622+youve@users.noreply.github.com> Date: Mon, 1 Aug 2022 20:06:46 +0200 Subject: [PATCH 3/5] lint --- qutebrowser/browser/webelem.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index fc35b3ad6..3c9fa17e5 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -450,8 +450,8 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a Qt.NoModifier) self._tab.send_event(event) - def info_str(self) -> str: - """Return the contents of the element's title or alt tag for display""" + def info_str(self) -> Union[str,None]: + """Return the contents of the element's title or alt tag for display.""" return self.get("title") or self.get("alt") or None def right_click(self) -> None: From 0c46aeb45824143af825a926d26f21d52a9006d4 Mon Sep 17 00:00:00 2001 From: youve <25477622+youve@users.noreply.github.com> Date: Mon, 1 Aug 2022 20:09:47 +0200 Subject: [PATCH 4/5] lint --- qutebrowser/browser/webelem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 3c9fa17e5..512f811e4 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -450,7 +450,7 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a Qt.NoModifier) self._tab.send_event(event) - def info_str(self) -> Union[str,None]: + def info_str(self) -> Union[str, None]: """Return the contents of the element's title or alt tag for display.""" return self.get("title") or self.get("alt") or None From e42ab05791826b7c4953c3c90f805b0f490e53a2 Mon Sep 17 00:00:00 2001 From: youve <25477622+youve@users.noreply.github.com> Date: Tue, 16 Aug 2022 21:38:10 +0200 Subject: [PATCH 5/5] Make the return type more human readable Co-authored-by: Florian Bruhin --- qutebrowser/browser/webelem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qutebrowser/browser/webelem.py b/qutebrowser/browser/webelem.py index 512f811e4..1771a915a 100644 --- a/qutebrowser/browser/webelem.py +++ b/qutebrowser/browser/webelem.py @@ -450,7 +450,7 @@ class AbstractWebElement(collections.abc.MutableMapping): # type: ignore[type-a Qt.NoModifier) self._tab.send_event(event) - def info_str(self) -> Union[str, None]: + def info_str(self) -> Optional[str]: """Return the contents of the element's title or alt tag for display.""" return self.get("title") or self.get("alt") or None