Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicoco <nicoco@nicoco.fr>2023-10-15 22:32:04 +0300
committerPhilipp Hörist <philipp@hoerist.com>2023-10-15 22:32:04 +0300
commitd828a0eadb7af45de9887fa6f2d35cbf90c37c1b (patch)
treefed3c55fa6a0b528fe051bbfc6b80ad0acd3fba7
parent72024252fb43fd67a44b4b6784735957c9e55dc9 (diff)
feat: ChatBanner: Show contact tooltip when hovering the avatar
-rw-r--r--gajim/data/gui/chat_banner.ui2
-rw-r--r--gajim/gtk/chat_banner.py15
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)