@@ -1480,7 +1480,8 @@ def populate(self, active_person):
1480
1480
if self .uistate .window .get_window ().is_visible ():
1481
1481
process_pending_events ()
1482
1482
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
1484
1485
self .clear ()
1485
1486
self .active_person_handle = active_person
1486
1487
@@ -1661,7 +1662,10 @@ def motion_notify_event(self, _item, _target, event):
1661
1662
self .vadjustment .set_value (new_y )
1662
1663
return True
1663
1664
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 ):
1665
1669
# start drag when cursor moved more then 5
1666
1670
# to separate it from simple click
1667
1671
if ((abs (self ._last_x - event .x_root ) > 5 )
@@ -1675,11 +1679,8 @@ def motion_notify_event(self, _item, _target, event):
1675
1679
1676
1680
# translate to drag_widget coords
1677
1681
scale_coef = self .canvas .get_scale ()
1678
- bounds = self .canvas .get_root_item ().get_bounds ()
1679
- height_canvas = bounds .y2 - bounds .y1
1680
1682
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 ()
1683
1684
1684
1685
# setup targets
1685
1686
tglist = Gtk .TargetList .new ([])
@@ -1698,14 +1699,12 @@ def motion_notify_event(self, _item, _target, event):
1698
1699
# allow drag to a text document, info on drag_get will be 1
1699
1700
tglist .add_text_targets (1 )
1700
1701
1701
- drag_widget = self .get_widget ()
1702
- # change event window
1703
- event .window = drag_widget .get_window ()
1704
1702
# start drag
1703
+ drag_widget = self .get_widget ()
1705
1704
drag_widget .drag_begin_with_coordinates (
1706
1705
tglist ,
1707
1706
Gdk .DragAction .COPY ,
1708
- Gdk . KEY_Pointer_Button1 ,
1707
+ 1 , # left mouse button = 1
1709
1708
event ,
1710
1709
x , y )
1711
1710
return True
@@ -1802,6 +1801,7 @@ def cb_drag_begin(self, widget, context):
1802
1801
"""
1803
1802
Called on start drag.
1804
1803
"""
1804
+ self ._do_drag = True
1805
1805
tgs = [x .name () for x in context .list_targets ()]
1806
1806
# set icon depending on person or family drag
1807
1807
if DdTargets .PERSON_LINK .drag_type in tgs :
@@ -1814,6 +1814,7 @@ def cb_drag_end(self, widget, context):
1814
1814
Called when drag is end.
1815
1815
"""
1816
1816
self ._in_drag = False
1817
+ self ._do_drag = False
1817
1818
1818
1819
def cb_drag_data_get (self , widget , context , sel_data , info , time ):
1819
1820
"""
0 commit comments