From ed6a930aca9e25b1823bb4177f266ab172e66909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 1 Sep 2018 00:36:09 +0200 Subject: [PATCH] Simplify cellrenderer's It is not needed to create fake event. The binary should be activatable instead of editable. issue7658 review56341002 --- tryton/common/cellrendererbinary.py | 29 +++++++++-------------------- tryton/common/cellrenderercombo.py | 18 +----------------- tryton/common/cellrenderertext.py | 18 +----------------- tryton/common/cellrenderertoggle.py | 22 +--------------------- 4 files changed, 12 insertions(+), 75 deletions(-) diff --git a/tryton/common/cellrendererbinary.py b/tryton/common/cellrendererbinary.py index bb43753ff5..ec37bb355e 100644 --- a/tryton/common/cellrendererbinary.py +++ b/tryton/common/cellrendererbinary.py @@ -34,9 +34,8 @@ class CellRendererBinary(gtk.GenericCellRenderer): self.__gobject_init__() self.visible = True self.editable = False - self.set_property('mode', gtk.CELL_RENDERER_MODE_EDITABLE) + self.set_property('mode', gtk.CELL_RENDERER_MODE_ACTIVATABLE) self.use_filename = use_filename - self.clicking = '' self.images = {} for key, icon in ( ('select', 'tryton-search'), @@ -84,10 +83,10 @@ class CellRendererBinary(gtk.GenericCellRenderer): cell_area.width, cell_area.height) do_get_size = on_get_size - def on_start_editing(self, event, widget, path, background_area, + def on_activate(self, event, widget, path, background_area, cell_area, flags): if event is None: - return + return True button_width = self.button_width() for index, button_name in enumerate(self.buttons): @@ -105,20 +104,15 @@ class CellRendererBinary(gtk.GenericCellRenderer): else: button_name = None if not self.visible or not button_name: - return + return True if not self.editable and button_name in ('select', 'clear'): - return - if not self.size and button_name == 'save': - return + return True + if not self.size and button_name in {'open', 'save'}: + return True if event.type == gtk.gdk.BUTTON_PRESS: - self.clicking = button_name self.emit(button_name, path) - - def timeout(self, widget): - self.clicking = '' - widget.queue_draw() - gobject.timeout_add(60, timeout, self, widget) - do_start_editing = on_start_editing + return True + do_activate = on_activate def do_render(self, cr, widget, background_area, cell_area, flags): if not self.visible: @@ -165,13 +159,8 @@ class CellRendererBinary(gtk.GenericCellRenderer): for index, button_name in enumerate(self.buttons): pxbf_sens, pxbf_insens, pxbf_width, pxbf_height = \ self.images[button_name] - state = gtk.StateFlags.NORMAL - if (self.clicking == button_name - and flags & gtk.CELL_RENDERER_SELECTED): - state = gtk.StateFlags.ACTIVE if (not self.editable and button_name in {'select', 'clear'} or not self.size and button_name in {'open', 'save'}): - state = gtk.StateFlags.INSENSITIVE pixbuf = pxbf_insens else: pixbuf = pxbf_sens diff --git a/tryton/common/cellrenderercombo.py b/tryton/common/cellrenderercombo.py index 4e33437493..2398ee66e0 100644 --- a/tryton/common/cellrenderercombo.py +++ b/tryton/common/cellrenderercombo.py @@ -8,27 +8,11 @@ from tryton.common.selection import selection_shortcuts class CellRendererCombo(gtk.CellRendererCombo): - def set_sensitive(self, value): - self.set_property('sensitive', value) - - def do_activate(self, event, widget, path, background_area, cell_area, - flags): - if not self.props.visible: - return - return gtk.CellRendererCombo.do_activate(self, event, widget, path, - background_area, cell_area, flags) - def do_start_editing(self, event, widget, path, background_area, cell_area, flags): - if not self.props.visible: - return - if not event: - if hasattr(gtk.gdk.Event, 'new'): - event = gtk.gdk.Event.new(gtk.gdk.KEY_PRESS) - else: - event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) editable = gtk.CellRendererCombo.do_start_editing(self, event, widget, path, background_area, cell_area, flags) return selection_shortcuts(editable) + gobject.type_register(CellRendererCombo) diff --git a/tryton/common/cellrenderertext.py b/tryton/common/cellrenderertext.py index af9fb9c2c4..8955efec53 100644 --- a/tryton/common/cellrenderertext.py +++ b/tryton/common/cellrenderertext.py @@ -6,25 +6,8 @@ import gobject class CellRendererText(gtk.CellRendererText): - def set_sensitive(self, value): - self.set_property('sensitive', value) - - def do_activate(self, event, widget, path, background_area, cell_area, - flags): - if not self.props.visible: - return - return gtk.CellRendererText.activate(self, event, widget, path, - background_area, cell_area, flags) - def do_start_editing(self, event, widget, path, background_area, cell_area, flags): - if not self.props.visible: - return - if not event: - if hasattr(gtk.gdk.Event, 'new'): - event = gtk.gdk.Event.new(gtk.gdk.KEY_PRESS) - else: - event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) return gtk.CellRendererText.do_start_editing(self, event, widget, path, background_area, cell_area, flags) @@ -43,5 +26,6 @@ class CellRendererTextCompletion(CellRendererText): self.set_completion(editable, path) return editable + gobject.type_register(CellRendererText) gobject.type_register(CellRendererTextCompletion) diff --git a/tryton/common/cellrenderertoggle.py b/tryton/common/cellrenderertoggle.py index 34ada710f9..56c7892fdb 100644 --- a/tryton/common/cellrenderertoggle.py +++ b/tryton/common/cellrenderertoggle.py @@ -5,27 +5,7 @@ import gobject class CellRendererToggle(gtk.CellRendererToggle): + pass - def set_sensitive(self, value): - self.set_property('sensitive', value) - - def do_activate(self, event, widget, path, background_area, cell_area, - flags): - if not self.props.visible: - return - if not event: - if hasattr(gtk.gdk.Event, 'new'): - event = gtk.gdk.Event.new(gtk.gdk.KEY_PRESS) - else: - event = gtk.gdk.Event(gtk.gdk.KEY_PRESS) - return gtk.CellRendererToggle.do_activate(self, event, widget, path, - background_area, cell_area, flags) - - def do_start_editing(self, event, widget, path, background_area, - cell_area, flags): - if not self.props.visible: - return - return gtk.CellRendererToggle.do_start_editing(self, event, widget, - path, background_area, cell_area, flags) gobject.type_register(CellRendererToggle)