From 072ba2ee3c17f22bb3fb45766bba9153552f785e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 15 Oct 2015 00:53:32 +0200 Subject: [PATCH] Remove custom drag-motion management The GTK+ issue that needed this hack is fixed since 2.24.7 Also the hack did not manage the scroll nor the expand which is now managed by GTK+ internals. issue5026 review16671002 --- tryton/gui/window/view_form/view/list.py | 43 +++++++++--------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/tryton/gui/window/view_form/view/list.py b/tryton/gui/window/view_form/view/list.py index 8f35ca2253..c70a992b40 100644 --- a/tryton/gui/window/view_form/view/list.py +++ b/tryton/gui/window/view_form/view/list.py @@ -600,20 +600,25 @@ class ViewTree(View): if not dnd: return + self.treeview.enable_model_drag_dest( + [('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0)], + gtk.gdk.ACTION_MOVE) + self.treeview.enable_model_drag_source( + gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK, + [('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0)], + gtk.gdk.ACTION_MOVE) + # XXX have to set manually because enable_model_drag_source + # does not set the mask + # https://bugzilla.gnome.org/show_bug.cgi?id=756177 self.treeview.drag_source_set( gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK, [('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0)], gtk.gdk.ACTION_MOVE) - self.treeview.drag_dest_set(gtk.DEST_DEFAULT_ALL, - [('MY_TREE_MODEL_ROW', gtk.TARGET_SAME_WIDGET, 0)], - gtk.gdk.ACTION_MOVE) - self.treeview.connect('drag-begin', self.drag_begin) - self.treeview.connect('drag-motion', self.drag_motion) - self.treeview.connect('drag-drop', self.drag_drop) self.treeview.connect("drag-data-get", self.drag_data_get) self.treeview.connect('drag-data-received', self.drag_data_received) + self.treeview.connect('drag-drop', self.drag_drop) self.treeview.connect('drag-data-delete', self.drag_data_delete) @property @@ -760,27 +765,6 @@ class ViewTree(View): self.screen.current_record = record self.screen.display(set_cursor=True) - def drag_begin(self, treeview, context): - return True - - def drag_motion(self, treeview, context, x, y, time): - try: - treeview.set_drag_dest_row(*treeview.get_dest_row_at_pos(x, y)) - except TypeError: - treeview.set_drag_dest_row(len(treeview.get_model()) - 1, - gtk.TREE_VIEW_DROP_AFTER) - if context.get_source_widget() == treeview: - kind = gtk.gdk.ACTION_MOVE - else: - kind = gtk.gdk.ACTION_COPY - context.drag_status(kind, time) - return True - - def drag_drop(self, treeview, context, x, y, time): - treeview.emit_stop_by_name('drag-drop') - treeview.drag_get_data(context, context.targets[-1], time) - return True - def drag_data_get(self, treeview, context, selection, target_id, etime): treeview.emit_stop_by_name('drag-data-get') @@ -856,6 +840,11 @@ class ViewTree(View): record.group.set_sequence(field=self.attributes['sequence']) return True + def drag_drop(self, treeview, context, x, y, time): + treeview.emit_stop_by_name('drag-drop') + treeview.drag_get_data(context, context.targets[-1], time) + return True + def drag_data_delete(self, treeview, context): treeview.emit_stop_by_name('drag-data-delete')