Skip to content

Commit 73da1c1

Browse files
committed
fix drag on Windows OS
1 parent f6b1651 commit 73da1c1

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
@@ -1425,7 +1425,8 @@ def populate(self, active_person):
14251425
if self.uistate.window.get_window().is_visible():
14261426
process_pending_events()
14271427

1428-
self._in_drag = False
1428+
self._in_drag = False # True - when drag can be started
1429+
self._do_drag = False # True - when drag is started
14291430
self.clear()
14301431
self.active_person_handle = active_person
14311432

@@ -1595,7 +1596,10 @@ def motion_notify_event(self, _item, _target, event):
15951596
self.vadjustment.set_value(new_y)
15961597
return True
15971598

1598-
if self._in_drag and (event.type == Gdk.EventType.MOTION_NOTIFY):
1599+
if not (event.type == Gdk.EventType.MOTION_NOTIFY):
1600+
return False
1601+
1602+
if self._in_drag and (not self._do_drag):
15991603
# start drag when cursor moved more then 5
16001604
# to separate it from simple click
16011605
if ((abs(self._last_x - event.x_root) > 5)
@@ -1609,11 +1613,8 @@ def motion_notify_event(self, _item, _target, event):
16091613

16101614
# translate to drag_widget coords
16111615
scale_coef = self.canvas.get_scale()
1612-
bounds = self.canvas.get_root_item().get_bounds()
1613-
height_canvas = bounds.y2 - bounds.y1
16141616
x = self._last_x * scale_coef - self.hadjustment.get_value()
1615-
y = ((height_canvas + self._last_y) * scale_coef -
1616-
self.vadjustment.get_value())
1617+
y = self._last_y * scale_coef - self.vadjustment.get_value()
16171618

16181619
# setup targets
16191620
tglist = Gtk.TargetList.new([])
@@ -1632,14 +1633,12 @@ def motion_notify_event(self, _item, _target, event):
16321633
# allow drag to a text document, info on drag_get will be 1
16331634
tglist.add_text_targets(1)
16341635

1635-
drag_widget = self.get_widget()
1636-
# change event window
1637-
event.window = drag_widget.get_window()
16381636
# start drag
1637+
drag_widget = self.get_widget()
16391638
drag_widget.drag_begin_with_coordinates(
16401639
tglist,
16411640
Gdk.DragAction.COPY,
1642-
Gdk.KEY_Pointer_Button1,
1641+
1, # left mouse button = 1
16431642
event,
16441643
x, y)
16451644
return True
@@ -1735,6 +1734,7 @@ def cb_drag_begin(self, widget, context):
17351734
"""
17361735
Called on start drag.
17371736
"""
1737+
self._do_drag = True
17381738
tgs = [x.name() for x in context.list_targets()]
17391739
# set icon depending on person or family drag
17401740
if DdTargets.PERSON_LINK.drag_type in tgs:
@@ -1747,6 +1747,7 @@ def cb_drag_end(self, widget, context):
17471747
Called when drag is end.
17481748
"""
17491749
self._in_drag = False
1750+
self._do_drag = False
17501751

17511752
def cb_drag_data_get(self, widget, context, sel_data, info, time):
17521753
"""

0 commit comments

Comments
 (0)