Skip to content

Commit 887d783

Browse files
committed
fix drag on Windows OS
1 parent 272158c commit 887d783

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

GraphView/graphview.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1480,7 +1480,8 @@ def populate(self, active_person):
14801480
if self.uistate.window.get_window().is_visible():
14811481
process_pending_events()
14821482

1483-
self._in_drag = False
1483+
self._in_drag = False # True - when drag can be started
1484+
self._do_drag = False # True - when drag is started
14841485
self.clear()
14851486
self.active_person_handle = active_person
14861487

@@ -1661,7 +1662,10 @@ def motion_notify_event(self, _item, _target, event):
16611662
self.vadjustment.set_value(new_y)
16621663
return True
16631664

1664-
if self._in_drag and (event.type == Gdk.EventType.MOTION_NOTIFY):
1665+
if not (event.type == Gdk.EventType.MOTION_NOTIFY):
1666+
return False
1667+
1668+
if self._in_drag and (not self._do_drag):
16651669
# start drag when cursor moved more then 5
16661670
# to separate it from simple click
16671671
if ((abs(self._last_x - event.x_root) > 5)
@@ -1675,11 +1679,8 @@ def motion_notify_event(self, _item, _target, event):
16751679

16761680
# translate to drag_widget coords
16771681
scale_coef = self.canvas.get_scale()
1678-
bounds = self.canvas.get_root_item().get_bounds()
1679-
height_canvas = bounds.y2 - bounds.y1
16801682
x = self._last_x * scale_coef - self.hadjustment.get_value()
1681-
y = ((height_canvas + self._last_y) * scale_coef -
1682-
self.vadjustment.get_value())
1683+
y = self._last_y * scale_coef - self.vadjustment.get_value()
16831684

16841685
# setup targets
16851686
tglist = Gtk.TargetList.new([])
@@ -1698,14 +1699,12 @@ def motion_notify_event(self, _item, _target, event):
16981699
# allow drag to a text document, info on drag_get will be 1
16991700
tglist.add_text_targets(1)
17001701

1701-
drag_widget = self.get_widget()
1702-
# change event window
1703-
event.window = drag_widget.get_window()
17041702
# start drag
1703+
drag_widget = self.get_widget()
17051704
drag_widget.drag_begin_with_coordinates(
17061705
tglist,
17071706
Gdk.DragAction.COPY,
1708-
Gdk.KEY_Pointer_Button1,
1707+
1, # left mouse button = 1
17091708
event,
17101709
x, y)
17111710
return True
@@ -1802,6 +1801,7 @@ def cb_drag_begin(self, widget, context):
18021801
"""
18031802
Called on start drag.
18041803
"""
1804+
self._do_drag = True
18051805
tgs = [x.name() for x in context.list_targets()]
18061806
# set icon depending on person or family drag
18071807
if DdTargets.PERSON_LINK.drag_type in tgs:
@@ -1814,6 +1814,7 @@ def cb_drag_end(self, widget, context):
18141814
Called when drag is end.
18151815
"""
18161816
self._in_drag = False
1817+
self._do_drag = False
18171818

18181819
def cb_drag_data_get(self, widget, context, sel_data, info, time):
18191820
"""

0 commit comments

Comments
 (0)