diff options
author | Nicoco <nicoco@nicoco.fr> | 2023-10-15 22:32:04 +0300 |
---|---|---|
committer | Philipp Hörist <philipp@hoerist.com> | 2023-10-15 22:32:04 +0300 |
commit | d828a0eadb7af45de9887fa6f2d35cbf90c37c1b (patch) | |
tree | fed3c55fa6a0b528fe051bbfc6b80ad0acd3fba7 | |
parent | 72024252fb43fd67a44b4b6784735957c9e55dc9 (diff) |
feat: ChatBanner: Show contact tooltip when hovering the avatar
-rw-r--r-- | gajim/data/gui/chat_banner.ui | 2 | ||||
-rw-r--r-- | gajim/gtk/chat_banner.py | 15 |
2 files changed, 17 insertions, 0 deletions
diff --git a/gajim/data/gui/chat_banner.ui b/gajim/data/gui/chat_banner.ui index 41dddfbeb..d67bee0f1 100644 --- a/gajim/data/gui/chat_banner.ui +++ b/gajim/data/gui/chat_banner.ui @@ -118,6 +118,8 @@ <object class="GtkImage" id="avatar_image"> <property name="visible">True</property> <property name="can-focus">False</property> + <property name="has-tooltip">True</property> + <signal name="query-tooltip" handler="_on_query_tooltip" swapped="no"/> </object> <packing> <property name="expand">False</property> diff --git a/gajim/gtk/chat_banner.py b/gajim/gtk/chat_banner.py index 40d1a23db..644b59476 100644 --- a/gajim/gtk/chat_banner.py +++ b/gajim/gtk/chat_banner.py @@ -43,6 +43,7 @@ from gajim.gtk.menus import get_groupchat_menu from gajim.gtk.menus import get_private_chat_menu from gajim.gtk.menus import get_self_contact_menu from gajim.gtk.menus import get_singlechat_menu +from gajim.gtk.tooltips import ContactTooltip from gajim.gtk.util import AccountBadge @@ -276,6 +277,20 @@ class ChatBanner(Gtk.Box, EventHelper): assert isinstance(surface, cairo.ImageSurface) self._ui.avatar_image.set_from_surface(surface) + self._avatar_image_tooltip = ContactTooltip() + + def _on_query_tooltip(self, + _img: Gtk.Image, + _x_coord: int, + _y_coord: int, + _keyboard_mode: bool, + tooltip: Gtk.Tooltip) -> bool: + if not isinstance(self._contact, BareContact): + return False + res, widget = self._avatar_image_tooltip.get_tooltip(self._contact) + tooltip.set_custom(widget) + return res + def _update_visitor_button(self) -> None: if not isinstance(self._contact, GroupchatContact): self._ui.visitor_box.set_visible(False) |