destroy sub menus in systray popup menu before creating new. Fixes #1820
This commit is contained in:
parent
52d01323ce
commit
e9bd817680
|
@ -63,6 +63,7 @@ class Systray:
|
||||||
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'systray_context_menu', APP)
|
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'systray_context_menu', APP)
|
||||||
self.systray_context_menu = self.xml.get_widget('systray_context_menu')
|
self.systray_context_menu = self.xml.get_widget('systray_context_menu')
|
||||||
self.xml.signal_autoconnect(self)
|
self.xml.signal_autoconnect(self)
|
||||||
|
self.popup_menus = []
|
||||||
|
|
||||||
def set_img(self):
|
def set_img(self):
|
||||||
if len(self.jids) > 0:
|
if len(self.jids) > 0:
|
||||||
|
@ -114,6 +115,9 @@ class Systray:
|
||||||
event is None when we're in Windows
|
event is None when we're in Windows
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
for m in self.popup_menus:
|
||||||
|
m.destroy()
|
||||||
|
|
||||||
chat_with_menuitem = self.xml.get_widget('chat_with_menuitem')
|
chat_with_menuitem = self.xml.get_widget('chat_with_menuitem')
|
||||||
single_message_menuitem = self.xml.get_widget('single_message_menuitem')
|
single_message_menuitem = self.xml.get_widget('single_message_menuitem')
|
||||||
status_menuitem = self.xml.get_widget('status_menu')
|
status_menuitem = self.xml.get_widget('status_menu')
|
||||||
|
@ -124,6 +128,7 @@ class Systray:
|
||||||
self.single_message_handler_id = None
|
self.single_message_handler_id = None
|
||||||
|
|
||||||
sub_menu = gtk.Menu()
|
sub_menu = gtk.Menu()
|
||||||
|
self.popup_menus.append(sub_menu)
|
||||||
status_menuitem.set_submenu(sub_menu)
|
status_menuitem.set_submenu(sub_menu)
|
||||||
|
|
||||||
# We need our own set of status icons, let's make 'em!
|
# We need our own set of status icons, let's make 'em!
|
||||||
|
@ -170,9 +175,11 @@ class Systray:
|
||||||
if connected_accounts >= 2: # 2 or more connections? make submenus
|
if connected_accounts >= 2: # 2 or more connections? make submenus
|
||||||
account_menu_for_chat_with = gtk.Menu()
|
account_menu_for_chat_with = gtk.Menu()
|
||||||
chat_with_menuitem.set_submenu(account_menu_for_chat_with)
|
chat_with_menuitem.set_submenu(account_menu_for_chat_with)
|
||||||
|
self.popup_menus.append(account_menu_for_chat_with)
|
||||||
|
|
||||||
account_menu_for_single_message = gtk.Menu()
|
account_menu_for_single_message = gtk.Menu()
|
||||||
single_message_menuitem.set_submenu(account_menu_for_single_message)
|
single_message_menuitem.set_submenu(account_menu_for_single_message)
|
||||||
|
self.popup_menus.append(account_menu_for_single_message)
|
||||||
|
|
||||||
accounts_list = gajim.contacts.get_accounts()
|
accounts_list = gajim.contacts.get_accounts()
|
||||||
accounts_list.sort()
|
accounts_list.sort()
|
||||||
|
@ -182,6 +189,7 @@ class Systray:
|
||||||
item = gtk.MenuItem(_('using account %s') % account)
|
item = gtk.MenuItem(_('using account %s') % account)
|
||||||
account_menu_for_chat_with.append(item)
|
account_menu_for_chat_with.append(item)
|
||||||
group_menu = self.make_groups_submenus_for_chat_with(account)
|
group_menu = self.make_groups_submenus_for_chat_with(account)
|
||||||
|
self.popup_menus.append(group_menu)
|
||||||
item.set_submenu(group_menu)
|
item.set_submenu(group_menu)
|
||||||
#for single message
|
#for single message
|
||||||
item = gtk.MenuItem(_('using account %s') % account)
|
item = gtk.MenuItem(_('using account %s') % account)
|
||||||
|
@ -195,6 +203,7 @@ class Systray:
|
||||||
if gajim.connections[account].connected:
|
if gajim.connections[account].connected:
|
||||||
# for chat_with
|
# for chat_with
|
||||||
group_menu = self.make_groups_submenus_for_chat_with(account)
|
group_menu = self.make_groups_submenus_for_chat_with(account)
|
||||||
|
self.popup_menus.append(group_menu)
|
||||||
chat_with_menuitem.set_submenu(group_menu)
|
chat_with_menuitem.set_submenu(group_menu)
|
||||||
|
|
||||||
# for single message
|
# for single message
|
||||||
|
@ -249,6 +258,7 @@ class Systray:
|
||||||
at_least_one = False
|
at_least_one = False
|
||||||
item = gtk.MenuItem(group)
|
item = gtk.MenuItem(group)
|
||||||
contacts_menu = gtk.Menu()
|
contacts_menu = gtk.Menu()
|
||||||
|
self.popup_menus.append(contacts_menu)
|
||||||
item.set_submenu(contacts_menu)
|
item.set_submenu(contacts_menu)
|
||||||
for jid in gajim.contacts.get_jid_list(account):
|
for jid in gajim.contacts.get_jid_list(account):
|
||||||
contact = gajim.contacts.get_contact_with_highest_priority(account,
|
contact = gajim.contacts.get_contact_with_highest_priority(account,
|
||||||
|
|
Loading…
Reference in New Issue