[meld: 1/2] Closes: https://gitlab.gnome.org/GNOME/meld/-/issues/694
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld: 1/2] Closes: https://gitlab.gnome.org/GNOME/meld/-/issues/694
- Date: Sat, 30 Jul 2022 00:10:50 +0000 (UTC)
commit 53349c298b94aa571048cfed0bf86de8b69abd43
Author: Dmytro Bagrii <dimich dmb gmail com>
Date: Fri Jul 29 21:33:43 2022 +0300
Closes: https://gitlab.gnome.org/GNOME/meld/-/issues/694
Some window managers may grab Button1. This causes LeaveNotify and
immediate EnterNotify events delivery before ButtonPress event when
left button pressed.
Handle EnterNotify and update pointer chunk the same way as for MotionNotify.
Signed-off-by: Dmytro Bagrii <dimich dmb gmail com>
meld/actiongutter.py | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/meld/actiongutter.py b/meld/actiongutter.py
index 1abc23db..e9ea5bc3 100644
--- a/meld/actiongutter.py
+++ b/meld/actiongutter.py
@@ -174,6 +174,7 @@ class ActionGutter(Gtk.DrawingArea):
def do_realize(self):
self.set_events(
+ Gdk.EventMask.ENTER_NOTIFY_MASK |
Gdk.EventMask.LEAVE_NOTIFY_MASK |
Gdk.EventMask.POINTER_MOTION_MASK |
Gdk.EventMask.BUTTON_PRESS_MASK |
@@ -187,14 +188,14 @@ class ActionGutter(Gtk.DrawingArea):
return Gtk.DrawingArea.do_realize(self)
- def do_motion_notify_event(self, event):
+ def update_pointer_chunk(self, x, y):
# This is the simplest button/intersection implementation in
# the world, but it basically works for our purposes.
for button in self.buttons:
x1, y1, x2, y2, chunk = button
# Check y first; it's more likely to be out of range
- if y1 <= event.y <= y2 and x1 <= event.x <= x2:
+ if y1 <= y <= y2 and x1 <= x <= x2:
new_pointer_chunk = chunk
break
else:
@@ -204,6 +205,12 @@ class ActionGutter(Gtk.DrawingArea):
self.pointer_chunk = new_pointer_chunk
self.queue_draw()
+ def do_motion_notify_event(self, event):
+ self.update_pointer_chunk(event.x, event.y)
+
+ def do_enter_notify_event(self, event):
+ self.update_pointer_chunk(event.x, event.y)
+
def do_leave_notify_event(self, event):
if self.pointer_chunk:
self.pointer_chunk = None
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]