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.
This commit is contained in:
sankalp committed 2026-06-23 14:31:12 +05:45
1 parent ab7ac85b80
commit bf47875b84
2 files changed
+4 -48

No files matched your search

-48
View File
@@ -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:
+4
View File
@@ -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: