Skip to content

Commit 1648aee

Browse files
committed
Context menu: fix note groups getting 'stuck' or not updating properly
Prior to 8013f4c, these weren't issues due to the menu always being rebuilt before opening the context menu. Now that it isn't being rebuilt, the menu items weren't being deselected when another group was selected from the context menu, and they weren't being updated at all when the current group was changed through the manager. This commit fixes both of those issues by adding the radio items to a group as they should have been from the start, and making sure the correct item is selected whenever the current group setting is changed. Fixes #166
1 parent d0c6ba5 commit 1648aee

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

usr/lib/sticky/sticky.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,7 @@ def __init__(self, *args):
693693
self.notes_hidden = False
694694
self.autostart_mode = False # indicates if we're in autostart mode
695695
self.dbus_register_id = 0
696+
self.group_buttons = {}
696697

697698
self.add_main_option(
698699
'autostart',
@@ -776,7 +777,7 @@ def do_activate(self):
776777

777778
self.settings.connect('changed::show-in-tray', self.update_tray_icon)
778779
self.settings.connect('changed::show-in-taskbar', self.update_dummy_window)
779-
self.settings.connect('changed::active-group', self.on_active_group_changed)
780+
self.active_group_changed_id = self.settings.connect('changed::active-group', self.on_active_group_changed)
780781
self.update_dummy_window()
781782

782783
self.note_group = self.settings.get_string('active-group')
@@ -904,6 +905,8 @@ def rebuild_tray_context_menu(self):
904905
if self.status_icon is None:
905906
return
906907

908+
self.group_buttons = {}
909+
907910
self.context_menu = Gtk.Menu()
908911
item = Gtk.MenuItem(label=_("New Note"))
909912
item.connect('activate', self.new_note)
@@ -915,13 +918,21 @@ def rebuild_tray_context_menu(self):
915918

916919
self.context_menu.append(Gtk.SeparatorMenuItem())
917920

921+
last_item = None
918922
for group in self.file_handler.get_note_group_names():
919923
item = Gtk.RadioMenuItem(label=group)
924+
925+
if last_item is not None:
926+
item.join_group(last_item)
927+
920928
if group == self.settings.get_string('active-group'):
921929
item.set_active(True)
922-
else:
923-
item.connect('activate', self.on_tray_group_selected, group)
930+
931+
last_item = item
932+
933+
item.connect('activate', self.on_tray_group_selected, group)
924934
self.context_menu.append(item)
935+
self.group_buttons[group] = item
925936

926937
self.context_menu.append(Gtk.SeparatorMenuItem())
927938

@@ -954,6 +965,12 @@ def on_tray_group_selected(self, widget, name):
954965
self.settings.set_string('active-group', name)
955966

956967
def on_active_group_changed(self, settings, key):
968+
group = settings.get_string('active-group')
969+
if self.status_icon and not self.group_buttons[group].get_active():
970+
self.settings.disconnect(self.active_group_changed_id)
971+
self.group_buttons[group].set_active(True)
972+
self.active_group_changed_id = self.settings.connect('changed::active-group', self.on_active_group_changed)
973+
957974
self.change_visible_note_group()
958975

959976
def update_dummy_window(self, *args):

0 commit comments

Comments
 (0)