Daniel Brötzmann pushed to branch gtk4 at gajim / gajim


Commits:
de6eb308 by wurstsalat at 2024-10-05T12:33:58+02:00
fix message avatar menu handling

- - - - -


1 changed file:

- gajim/gtk/conversation/rows/widgets.py


Changes:

=====================================
gajim/gtk/conversation/rows/widgets.py
=====================================
@@ -4,7 +4,6 @@
 
 from __future__ import annotations
 
-from typing import Any
 from typing import TYPE_CHECKING
 
 from datetime import datetime
@@ -27,7 +26,6 @@
 from gajim.gtk.conversation.reactions_bar import AddReactionButton
 from gajim.gtk.menus import get_groupchat_participant_menu
 from gajim.gtk.util import GajimPopover
-from gajim.gtk.util import get_cursor
 
 if TYPE_CHECKING:
     from gajim.gtk.conversation.rows.message import MessageRow
@@ -436,13 +434,16 @@ def __init__(self, contact: ChatContactT) -> None:
         self.append(self._image)
 
         if self._contact.is_groupchat:
-            self.connect('realize', self._on_realize)
+            self.set_cursor(Gdk.Cursor.new_from_name('pointer'))
 
-        gesture_left_click = Gtk.GestureClick(button=1)
+        self._menu_popover = GajimPopover(None)
+        self.append(self._menu_popover)
+
+        gesture_left_click = Gtk.GestureClick(button=Gdk.BUTTON_PRIMARY)
         gesture_left_click.connect('pressed', self._on_avatar_clicked)
         self.add_controller(gesture_left_click)
 
-        gesture_right_click = Gtk.GestureClick(button=3)
+        gesture_right_click = Gtk.GestureClick(button=Gdk.BUTTON_SECONDARY)
         gesture_right_click.connect('pressed', self._on_avatar_clicked)
         self.add_controller(gesture_right_click)
 
@@ -454,38 +455,26 @@ def set_name(self, name: str) -> None:
         self._name = name
 
     def set_merged(self, merged: bool) -> None:
-        # TODO GTK4
-        # self._image.set_no_show_all(merged)
         self._image.set_visible(not merged)
 
-    @staticmethod
-    def _on_realize(event_box: Gtk.Box) -> None:
-        # TODO GTK4
-        return
-        window = event_box.get_window()
-        if window is not None:
-            window.set_cursor(get_cursor('pointer'))
-
     def _on_avatar_clicked(
         self,
         gesture_click : Gtk.GestureClick,
         _n_press: int,
-        _x: float,
-        _y: float,
+        x: float,
+        y: float,
     ) -> int:
-
         if not isinstance(self._contact, GroupchatContact):
             return Gdk.EVENT_STOP
 
-        # TODO GTK4
         if gesture_click.get_current_button() == Gdk.BUTTON_PRIMARY:
             app.window.activate_action('mention', GLib.Variant('s', 
self._name))
         elif gesture_click.get_current_button() == Gdk.BUTTON_SECONDARY:
-            self._show_participant_menu(self._name, 
gesture_click.get_current_event())
+            self._show_participant_menu(self._name, x, y)
 
         return Gdk.EVENT_STOP
 
-    def _show_participant_menu(self, nick: str, event: Any) -> None:
+    def _show_participant_menu(self, nick: str, x: float, y: float) -> None:
         assert isinstance(self._contact, GroupchatContact)
         if not self._contact.is_joined:
             return
@@ -502,5 +491,7 @@ def _show_participant_menu(self, nick: str, event: Any) -> 
None:
             self._contact.account, self_contact, contact
         )
 
-        popover = GajimPopover(menu, relative_to=self, event=event)
-        popover.popup()
+        # TODO GTK4: Menu moves content of adjacent widgets
+        self._menu_popover.set_menu_model(menu)
+        self._menu_popover.set_pointing_to_coord(x, y)
+        self._menu_popover.popup()



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/de6eb308dbbaf3f112d5492d0658dc0332d80901

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/de6eb308dbbaf3f112d5492d0658dc0332d80901
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- commits@gajim.org
To unsubscribe send an email to commits-le...@gajim.org

Reply via email to