diff --git a/src/gtkgui_helpers.py b/src/gtkgui_helpers.py
index 9d0c6a186baf766cd7c08be6b8f36edbc46199da..7b99c3ae91c7de16e407928722887dbea2786db7 100644
--- a/src/gtkgui_helpers.py
+++ b/src/gtkgui_helpers.py
@@ -752,3 +752,6 @@ default_name = ''):
 	dialog.set_current_name(default_name)
 	dialog.connect('delete-event', lambda widget, event:
 		on_cancel(widget))
+
+def on_bm_header_changed_state(widget, event):
+	widget.set_state(gtk.STATE_NORMAL) #do not allow selected_state
diff --git a/src/roster_window.py b/src/roster_window.py
index d6cedec11dd1c7fe4a9e6bdd762ea9480118354a..537e0f234a2edc1266b9794f7dedc43cf2dbde01 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -624,9 +624,6 @@ class RosterWindow:
 		self.join_gc_room(account, bookmark['jid'], bookmark['nick'],
 			bookmark['password'])
 
-	def on_bm_header_changed_state(self, widget, event):
-		widget.set_state(gtk.STATE_NORMAL) #do not allow selected_state
-
 	def on_send_server_message_menuitem_activate(self, widget, account):
 		server = gajim.config.get_per('accounts', account, 'hostname')
 		server += '/announce/online'
@@ -794,7 +791,7 @@ class RosterWindow:
 				label.set_use_underline(False)
 				gc_item = gtk.MenuItem()
 				gc_item.add(label)
-				gc_item.connect('state-changed', self.on_bm_header_changed_state)
+				gc_item.connect('state-changed', gtkgui_helpers.on_bm_header_changed_state)
 				gc_sub_menu.append(gc_item)
 				
 				self.add_bookmarks_list(gc_sub_menu, account)
diff --git a/src/systray.py b/src/systray.py
index aa12cc0db5c62234b71db36b7e4c16a964bed7c0..59893e208b41df1565257a1c4276579a2884c94d 100644
--- a/src/systray.py
+++ b/src/systray.py
@@ -197,6 +197,7 @@ class Systray:
 					label.set_use_underline(False)
 					gc_item = gtk.MenuItem()
 					gc_item.add(label)
+					gc_item.connect('state-changed', gtkgui_helpers.on_bm_header_changed_state)
 					gc_sub_menu.append(gc_item)
 					gajim.interface.roster.add_bookmarks_list(gc_sub_menu, account)