From a58e6fdb60db1b3d8713219ec84cbc88c409bd37 Mon Sep 17 00:00:00 2001 From: Gary Burton Date: Fri, 22 Feb 2008 22:09:39 +0000 Subject: [PATCH] 2008-02-22 Gary Burton * src/DataViews/RelationView.py: * src/Editors/_EditFamily.py: * src/Editors/_EditChildRef.py Fix crash on doubleclicking buttons. Bug #1802 svn: r10096 --- ChangeLog | 6 +++++ src/DataViews/RelationView.py | 42 ++++++++++++++++++++--------------- src/Editors/_EditChildRef.py | 15 +++++++++++-- src/Editors/_EditFamily.py | 15 +++++++++++-- 4 files changed, 56 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3d5981049..d8660a010 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-02-22 Gary Burton + * src/DataViews/RelationView.py: + * src/Editors/_EditFamily.py: + * src/Editors/_EditChildRef.py + Fix crash on doubleclicking buttons. Bug #1802 + 2008-02-22 Douglas S. Blank * src/DataViews/GrampletView.py: translate "Gramplet" * src/plugins/Makefile.am : add AgeOnDate.py QR diff --git a/src/DataViews/RelationView.py b/src/DataViews/RelationView.py index f2dee2755..0817da7d5 100644 --- a/src/DataViews/RelationView.py +++ b/src/DataViews/RelationView.py @@ -89,6 +89,8 @@ _SDATA_START = 2 _SDATA_STOP = 4 _RETURN = gtk.gdk.keyval_from_name("Return") _KP_ENTER = gtk.gdk.keyval_from_name("KP_Enter") +_LEFT_BUTTON = 1 +_RIGHT_BUTTON = 3 class AttachList: @@ -1024,7 +1026,7 @@ class RelationshipView(PageView.PersonNavView): the collapse state must change, so a parent, siblings id, family id, family children id, etc """ - if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: + if button_activated(event, _LEFT_BUTTON): person, handle = pair if self.collapsed_items.has_key(person.handle): if handle in self.collapsed_items[person.handle]: @@ -1036,9 +1038,9 @@ class RelationshipView(PageView.PersonNavView): self.redraw() def _button_press(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: + if button_activated(event, _LEFT_BUTTON): self.dbstate.change_active_handle(handle) - elif event.type == gtk.gdk.BUTTON_PRESS and event.button == 3: + elif button_activated(event, _RIGHT_BUTTON): myMenu = gtk.Menu() myMenu.append(self.build_menu_item(handle)) myMenu.popup(None, None, None, event.button, event.time) @@ -1220,8 +1222,7 @@ class RelationshipView(PageView.PersonNavView): self.row += 1 def edit_button_press(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS \ - or event.keyval in (_RETURN, _KP_ENTER): + if button_activated(event, _LEFT_BUTTON): self.edit_person(obj, handle) def edit_person(self, obj, handle): @@ -1233,8 +1234,7 @@ class RelationshipView(PageView.PersonNavView): pass def edit_family(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS \ - or event.keyval in (_RETURN, _KP_ENTER): + if button_activated(event, _LEFT_BUTTON): from Editors import EditFamily family = self.dbstate.db.get_family_from_handle(handle) try: @@ -1243,8 +1243,7 @@ class RelationshipView(PageView.PersonNavView): pass def add_family(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS \ - or event.keyval in (_RETURN, _KP_ENTER): + if button_activated(event, _LEFT_BUTTON): from Editors import EditFamily family = gen.lib.Family() person = self.dbstate.active @@ -1284,8 +1283,7 @@ class RelationshipView(PageView.PersonNavView): self.edit_person(obj, phandle) def add_child_to_fam(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS \ - or event.keyval in (_RETURN, _KP_ENTER): + if button_activated(event, _LEFT_BUTTON): callback = lambda x: self.callback_add_child(x, handle) from Editors import EditPerson person = gen.lib.Person() @@ -1318,8 +1316,7 @@ class RelationshipView(PageView.PersonNavView): def sel_child_to_fam(self, obj, event, handle): from Selectors import selector_factory - if event.type == gtk.gdk.BUTTON_PRESS \ - or event.keyval in (_RETURN, _KP_ENTER): + if button_activated(event, _LEFT_BUTTON): SelectPerson = selector_factory('Person') family = self.dbstate.db.get_family_from_handle(handle) # it only makes sense to skip those who are already in the family @@ -1335,8 +1332,7 @@ class RelationshipView(PageView.PersonNavView): self.callback_add_child(person, handle) def select_family(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS \ - or event.keyval in (_RETURN, _KP_ENTER): + if button_activated(event, _LEFT_BUTTON): from Selectors import selector_factory SelectFamily = selector_factory('Family') @@ -1395,7 +1391,7 @@ class RelationshipView(PageView.PersonNavView): pass def add_parent_family(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: + if button_activated(event, _LEFT_BUTTON): from Editors import EditFamily family = gen.lib.Family() person = self.dbstate.active @@ -1410,13 +1406,13 @@ class RelationshipView(PageView.PersonNavView): pass def delete_family(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: + if button_activated(event, _LEFT_BUTTON): gen.utils.remove_parent_from_family(self.dbstate.db, self.dbstate.active.handle, handle) def delete_parent_family(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1: + if button_activated(event, _LEFT_BUTTON): gen.utils.remove_child_from_family(self.dbstate.db, self.dbstate.active.handle, handle) @@ -1448,3 +1444,13 @@ def has_children(db,p): if childlist and len(childlist) > 0: return True return False + +def button_activated(event, mouse_button): + if (event.type == gtk.gdk.BUTTON_PRESS and \ + event.button == mouse_button) or \ + (event.type == gtk.gdk.KEY_PRESS and \ + event.keyval in (_RETURN, _KP_ENTER)): + return True + else: + return False + diff --git a/src/Editors/_EditChildRef.py b/src/Editors/_EditChildRef.py index e375cae94..fb62b1ce4 100644 --- a/src/Editors/_EditChildRef.py +++ b/src/Editors/_EditChildRef.py @@ -62,6 +62,8 @@ from BasicUtils import name_displayer _RETURN = gtk.gdk.keyval_from_name("Return") _KP_ENTER = gtk.gdk.keyval_from_name("KP_Enter") +_LEFT_BUTTOGN = 1 +_RIGHT_BUTTON = 3 #------------------------------------------------------------------------- # @@ -152,8 +154,7 @@ class EditChildRef(EditSecondary): return (_('Child Reference'),_('Child Reference Editor')) def edit_child(self,obj,event): - if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1 \ - or event.keyval in (_RETURN, _KP_ENTER): + if button_activated(event, _LEFT_BUTTON): from _EditPerson import EditPerson handle = self.obj.ref try: @@ -178,3 +179,13 @@ class EditChildRef(EditSecondary): if self.callback: self.callback(self.obj) self.close() + +def button_activated(event, mouse_button): + if (event.type == gtk.gdk.BUTTON_PRESS and \ + event.button == mouse_button) or \ + (event.type == gtk.gdk.KEY_PRESS and \ + event.keyval in (_RETURN, _KP_ENTER)): + return True + else: + return False + diff --git a/src/Editors/_EditFamily.py b/src/Editors/_EditFamily.py index c972c4cdd..fd4c40a5b 100644 --- a/src/Editors/_EditFamily.py +++ b/src/Editors/_EditFamily.py @@ -74,6 +74,8 @@ SelectPerson = selector_factory('Person') _RETURN = gdk.keyval_from_name("Return") _KP_ENTER = gdk.keyval_from_name("KP_Enter") +_LEFT_BUTTON = 1 +_RIGHT_BUTTON = 3 class ChildEmbedList(EmbeddedList): """ @@ -781,8 +783,7 @@ class EditFamily(EditPrimary): 'select the existing family')) def edit_person(self, obj, event, handle): - if event.type == gtk.gdk.BUTTON_PRESS \ - or event.keyval in (_RETURN, _KP_ENTER): + if button_activated(event, _LEFT_BUTTON): from _EditPerson import EditPerson try: person = self.db.get_person_from_handle(handle) @@ -1039,3 +1040,13 @@ class EditFamily(EditPrimary): else: return ("", "") return ("", "") + +def button_activated(event, mouse_button): + if (event.type == gtk.gdk.BUTTON_PRESS and \ + event.button == mouse_button) or \ + (event.type == gtk.gdk.KEY_PRESS and \ + event.keyval in (_RETURN, _KP_ENTER)): + return True + else: + return False +