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


Commits:
5dfffcf3 by wurstsalat at 2024-11-07T19:35:55+01:00
refactor: Rosters: Don't unfocus row when showing popoper

- - - - -


2 changed files:

- gajim/gtk/groupchat_roster.py
- gajim/gtk/roster.py


Changes:

=====================================
gajim/gtk/groupchat_roster.py
=====================================
@@ -87,8 +87,9 @@ def __init__(self) -> None:
 
         self._roster = self._ui.roster_treeview
 
-        self._menu_popover = GajimPopover(None)
-        self._ui.box.append(self._menu_popover)
+        self._popover_menu = GajimPopover(None)
+        self._connect(self._popover_menu, "closed", 
self._on_popover_menu_closed)
+        self._ui.box.append(self._popover_menu)
 
         self._filter_string = ""
         self._modelfilter = self._store.filter_new()
@@ -180,9 +181,6 @@ def switch_contact(self, contact: types.ChatContactT) -> 
None:
         if self._contact.is_joined:
             self._load_roster()
 
-    def _on_focus_out(self, _event_controller_focus: Gtk.EventControllerFocus) 
-> None:
-        self._ui.roster_treeview.get_selection().unselect_all()
-
     def _query_tooltip(
         self,
         widget: Gtk.Widget,
@@ -474,9 +472,18 @@ def _show_contact_menu(self, nick: str, x: float, y: 
float) -> None:
             self._contact.account, self_contact, contact
         )
 
-        self._menu_popover.set_menu_model(menu)
-        self._menu_popover.set_pointing_to_coord(x, y)
-        self._menu_popover.popup()
+        self._popover_menu.set_menu_model(menu)
+        self._popover_menu.set_pointing_to_coord(x, y)
+        self._popover_menu.popup()
+        self._popover_menu_open = True
+
+    def _on_popover_menu_closed(self, _popover: GajimPopover) -> None:
+        self._popover_menu_open = False
+        self._ui.roster_treeview.get_selection().unselect_all()
+
+    def _on_focus_out(self, _event_controller_focus: Gtk.EventControllerFocus) 
-> None:
+        if not self._popover_menu:
+            self._ui.roster_treeview.get_selection().unselect_all()
 
     def _on_muc_state_changed(
         self, contact: GroupchatContact, _signal_name: str


=====================================
gajim/gtk/roster.py
=====================================
@@ -78,6 +78,7 @@ def __init__(self, account: str) -> None:
         self.set_child(box)
 
         self._popover_menu = GajimPopover(None)
+        self._connect(self._popover_menu, "closed", 
self._on_popover_menu_closed)
         box.append(self._popover_menu)
 
         gesture_middle_click = Gtk.GestureClick(button=Gdk.BUTTON_MIDDLE)
@@ -398,10 +399,16 @@ def _show_contact_menu(self, jid: str, x: float, y: 
float) -> None:
         self._popover_menu.set_menu_model(menu)
         self._popover_menu.set_pointing_to_coord(x, y)
         self._popover_menu.popup()
+        self._popover_menu_open = True
 
-    def _on_focus_out(self, _event_controller_focus: Gtk.EventControllerFocus) 
-> None:
+    def _on_popover_menu_closed(self, _popover: GajimPopover) -> None:
+        self._popover_menu_open = False
         self._roster.get_selection().unselect_all()
 
+    def _on_focus_out(self, _event_controller_focus: Gtk.EventControllerFocus) 
-> None:
+        if not self._popover_menu:
+            self._roster.get_selection().unselect_all()
+
     def set_search_string(self, text: str) -> None:
         self._filter_string = text.lower()
         self._filter_enabled = bool(text)



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

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


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to