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
This commit is contained in:
1 parent
00e572d466
commit
072ba2ee3c
1 file changed
+16
-27
@@ -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')
|
||||
|
||||
|
||||
Reference in new issue
Block a user