Skip to content

Commit

Permalink
Fix lookup in GetLayout
Browse files Browse the repository at this point in the history
The item IDs got misused as list indexes there which does not fit #1652.
  • Loading branch information
cschramm committed Sep 10, 2022
1 parent c0691a8 commit 8a155e1
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions blueman/main/indicators/StatusNotifierItem.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from collections import OrderedDict
from typing import Iterable, TYPE_CHECKING, Callable, List, Tuple, Dict, Union, TypeVar

from gi.repository import Gio, GLib, Pango
Expand All @@ -13,7 +14,7 @@
class MenuService(DbusService):
def __init__(self, on_activate_menu_item: "MenuItemActivator") -> None:
super().__init__(None, "com.canonical.dbusmenu", "/org/blueman/sni/menu", Gio.BusType.SESSION)
self._items: List["MenuItemDict"] = []
self._items: OrderedDict[int, "MenuItemDict"] = OrderedDict()
self._revision = 0
self._revision_advertised = -1
self._on_activate = on_activate_menu_item
Expand All @@ -30,7 +31,7 @@ def __init__(self, on_activate_menu_item: "MenuItemActivator") -> None:
GLib.timeout_add(100, self._advertise_revision)

def set_items(self, items: Iterable["MenuItemDict"]) -> None:
self._items = list(items)
self._items = OrderedDict((item["id"], item) for item in items)
self._revision += 1

def _advertise_revision(self) -> bool:
Expand All @@ -42,10 +43,9 @@ def _advertise_revision(self) -> bool:
def _get_layout(self, parent_id: int, _recursion_depth: int, _property_names: List[str]
) -> Tuple[int, Tuple[int, Dict[str, GLib.Variant], List[GLib.Variant]]]:
if parent_id == 0:
return self._revision, (0, {}, self._render_menu(((item["id"], item) for item in self._items),
self._render_submenu))
return self._revision, (0, {}, self._render_menu(self._items.items(), self._render_submenu))
else:
item = self._items[parent_id - 1]
item = self._items[parent_id]
if "submenu" in item and _recursion_depth != 0:
return self._revision, (parent_id, self._render_item(item), self._render_submenu(item, parent_id))
return self._revision, (parent_id, self._render_item(item), [])
Expand All @@ -64,7 +64,7 @@ def _render_menu(self, items: Iterable[Tuple[int, _T]], submenu_callback: Callab
for (idx, item) in items]

def _iterate_items(self) -> Iterable[Tuple[int, "SubmenuItemDict"]]:
for item in self._items:
for item in self._items.values():
yield item["id"], item
if "submenu" in item:
yield from enumerate(item["submenu"], item["id"] * 100 + 1)
Expand Down

0 comments on commit 8a155e1

Please sign in to comment.