From bf47875b847d74d6bb3f66a0faeaeb32af1bf93c Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Tue, 23 Jun 2026 14:31:12 +0545 Subject: [PATCH] refactor(src/utils): remove GTK menu fallback and add invalidate on ActionMenuClient Drop unused GTK menu parsing to simplify maintenance and add invalidate hook to clear cached items when menu state changes. --- src/utils/dbusmenu.py | 48 ------------------------------------------- src/utils/gtkmenu.py | 4 ++++ 2 files changed, 4 insertions(+), 48 deletions(-) diff --git a/src/utils/dbusmenu.py b/src/utils/dbusmenu.py index 9fdc394..1ec870e 100644 --- a/src/utils/dbusmenu.py +++ b/src/utils/dbusmenu.py @@ -130,12 +130,6 @@ class DBusMenuClient: res = self._call("GetLayout", params) if not res: - gtk_menu = self._try_gtk_menu() - if gtk_menu: - parsed = self._parse_gtk_menu(gtk_menu) - self._cache = parsed - self._cache_valid = True - return parsed return [] try: @@ -234,48 +228,6 @@ class DBusMenuClient: return item - # GTK FALLBACK (GMenuModel-style) - def _try_gtk_menu(self): - try: - res = _get_bus().call_sync( - self.service_name, - self.object_path, - "org.gtk.Menus", - "Start", - GLib.Variant("(au)", ([0],)), - None, - Gio.DBusCallFlags.NONE, - 1000, - None, - ) - return res.get_child_value(0) if res else None - except Exception: - return None - - def _parse_gtk_menu(self, variant, _depth: int = 0): - if _depth > 10: - return [] - items = [] - try: - if not variant or not variant.is_container(): - return [] - for i in range(variant.n_children()): - c = variant.get_child_value(i) - item = DBusMenuItem(id=i) - try: - if c.n_children() > 0: - item.label = c.get_child_value(0).get_string() - except Exception: - pass - if c.n_children() > 1: - sub = c.get_child_value(c.n_children() - 1) - item.children = self._parse_gtk_menu(sub, _depth + 1) - item.has_submenu = bool(item.children) - items.append(item) - except Exception: - pass - return items - # ACTIONS def about_to_show(self, item_id): try: diff --git a/src/utils/gtkmenu.py b/src/utils/gtkmenu.py index 917fcdb..1fbb96a 100644 --- a/src/utils/gtkmenu.py +++ b/src/utils/gtkmenu.py @@ -236,6 +236,10 @@ class ActionMenuClient: def about_to_show(self, item_id: int) -> bool: return False + def invalidate(self): + self._cached_items = [] + self._action_map = {} + def click_item( self, item_id: int, action_name: str = "", action_target=None ) -> None: