diff --git a/plugins/gtkgui/gtkgui.glade b/plugins/gtkgui/gtkgui.glade index 0c48fed0cb7aa1bad1415c78cb3007456a9eaaaa..ec067b21d26a7ad46920d3638671ac49566f2952 100644 --- a/plugins/gtkgui/gtkgui.glade +++ b/plugins/gtkgui/gtkgui.glade @@ -236,6 +236,7 @@ <signal name="row_activated" handler="on_row_activated" last_modification_time="Sun, 12 Oct 2003 18:11:52 GMT"/> <signal name="row_expanded" handler="on_row_expanded" last_modification_time="Wed, 10 Dec 2003 10:31:44 GMT"/> <signal name="row_collapsed" handler="on_row_collapsed" last_modification_time="Wed, 10 Dec 2003 10:54:27 GMT"/> + <signal name="key_release_event" handler="on_treeview_event" last_modification_time="Tue, 18 May 2004 23:30:46 GMT"/> </widget> </child> </widget> diff --git a/plugins/gtkgui/gtkgui.py b/plugins/gtkgui/gtkgui.py index 4409f467dc32d78827177bc91c754f2609243405..bb830a5a4a4d51fb4e3b538e00bd9d93cd104c21 100644 --- a/plugins/gtkgui/gtkgui.py +++ b/plugins/gtkgui/gtkgui.py @@ -697,24 +697,35 @@ class roster_Window: def on_treeview_event(self, widget, event): """popup user's group's or agent menu""" - if (event.button == 3) & (event.type == gtk.gdk.BUTTON_PRESS): - try: - path, column, x, y = self.tree.get_path_at_pos(int(event.x), \ - int(event.y)) - except TypeError: - return - model = self.tree.get_model() - iter = model.get_iter(path) - type = model.get_value(iter, 2) - if type == 'group': - self.mk_menu_g(event) - elif type == 'agent': - self.mk_menu_agent(event, iter) - elif type == 'user': - self.mk_menu_user(event, iter) - elif type == 'account': - self.mk_menu_account(event, iter) - return gtk.TRUE + if event.type == gtk.gdk.BUTTON_PRESS: + if event.button == 3: + try: + path, column, x, y = self.tree.get_path_at_pos(int(event.x), \ + int(event.y)) + except TypeError: + self.tree.get_selection().unselect_all() + return + model = self.tree.get_model() + iter = model.get_iter(path) + type = model.get_value(iter, 2) + if type == 'group': + self.mk_menu_g(event) + elif type == 'agent': + self.mk_menu_agent(event, iter) + elif type == 'user': + self.mk_menu_user(event, iter) + elif type == 'account': + self.mk_menu_account(event, iter) + return gtk.TRUE + if event.button == 1: + try: + path, column, x, y = self.tree.get_path_at_pos(int(event.x), \ + int(event.y)) + except TypeError: + self.tree.get_selection().unselect_all() + if event.type == gtk.gdk.KEY_RELEASE: + if event.keyval == gtk.keysyms.Escape: + self.tree.get_selection().unselect_all() return gtk.FALSE def on_req_usub(self, widget, user, account):