Re-enable selection in MultiTreeView on a drag-end event

In 201f4a5e51 we made grab_broken
re-enable selection because GTK 3.18 and later no longer send a
fake button release event.

The sending of grab broken is an implementation detail of DnD
on X based systems however, and at least some GTK backends do
not generate this, wayland being one example.

So we now use drag-end instead which is always sent to the source
when a DnD operation completes.
This commit is contained in:
Tom Hughes 2016-11-12 11:44:18 +00:00 committed by Nick Hall
parent d8077a8169
commit da018c1842
2 changed files with 4 additions and 4 deletions

View File

@ -1479,7 +1479,7 @@ class MultiTreeView(Gtk.TreeView):
Gtk.TreeView.__init__(self) Gtk.TreeView.__init__(self)
self.connect('button_press_event', self.on_button_press) self.connect('button_press_event', self.on_button_press)
self.connect('button_release_event', self.on_button_release) self.connect('button_release_event', self.on_button_release)
self.connect('grab_broken_event', self.on_grab_broken) self.connect('drag-end', self.on_drag_end)
self.connect('key_press_event', self.key_press_event) self.connect('key_press_event', self.key_press_event)
self.defer_select = False self.defer_select = False
@ -1581,7 +1581,7 @@ class MultiTreeView(Gtk.TreeView):
self.defer_select=False self.defer_select=False
def on_grab_broken(self, widget, event): def on_drag_end(self, widget, event):
# re-enable selection # re-enable selection
self.get_selection().set_select_function(lambda *ignore: True, None) self.get_selection().set_select_function(lambda *ignore: True, None)
self.defer_select=False self.defer_select=False

View File

@ -40,7 +40,7 @@ class MultiTreeView(Gtk.TreeView):
Gtk.TreeView.__init__(self) Gtk.TreeView.__init__(self)
self.connect('button_press_event', self.on_button_press) self.connect('button_press_event', self.on_button_press)
self.connect('button_release_event', self.on_button_release) self.connect('button_release_event', self.on_button_release)
self.connect('grab_broken_event', self.on_grab_broken) self.connect('drag-end', self.on_drag_end)
self.connect('key_press_event', self.key_press_event) self.connect('key_press_event', self.key_press_event)
self.defer_select = False self.defer_select = False
@ -83,7 +83,7 @@ class MultiTreeView(Gtk.TreeView):
self.defer_select=False self.defer_select=False
def on_grab_broken(self, widget, event): def on_drag_end(self, widget, event):
# re-enable selection # re-enable selection
self.get_selection().set_select_function(lambda *ignore: True, None) self.get_selection().set_select_function(lambda *ignore: True, None)
self.defer_select=False self.defer_select=False