@@ -1425,7 +1425,8 @@ def populate(self, active_person):
1425
1425
if self .uistate .window .get_window ().is_visible ():
1426
1426
process_pending_events ()
1427
1427
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
1429
1430
self .clear ()
1430
1431
self .active_person_handle = active_person
1431
1432
@@ -1595,7 +1596,10 @@ def motion_notify_event(self, _item, _target, event):
1595
1596
self .vadjustment .set_value (new_y )
1596
1597
return True
1597
1598
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 ):
1599
1603
# start drag when cursor moved more then 5
1600
1604
# to separate it from simple click
1601
1605
if ((abs (self ._last_x - event .x_root ) > 5 )
@@ -1609,11 +1613,8 @@ def motion_notify_event(self, _item, _target, event):
1609
1613
1610
1614
# translate to drag_widget coords
1611
1615
scale_coef = self .canvas .get_scale ()
1612
- bounds = self .canvas .get_root_item ().get_bounds ()
1613
- height_canvas = bounds .y2 - bounds .y1
1614
1616
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 ()
1617
1618
1618
1619
# setup targets
1619
1620
tglist = Gtk .TargetList .new ([])
@@ -1632,14 +1633,12 @@ def motion_notify_event(self, _item, _target, event):
1632
1633
# allow drag to a text document, info on drag_get will be 1
1633
1634
tglist .add_text_targets (1 )
1634
1635
1635
- drag_widget = self .get_widget ()
1636
- # change event window
1637
- event .window = drag_widget .get_window ()
1638
1636
# start drag
1637
+ drag_widget = self .get_widget ()
1639
1638
drag_widget .drag_begin_with_coordinates (
1640
1639
tglist ,
1641
1640
Gdk .DragAction .COPY ,
1642
- Gdk . KEY_Pointer_Button1 ,
1641
+ 1 , # left mouse button = 1
1643
1642
event ,
1644
1643
x , y )
1645
1644
return True
@@ -1735,6 +1734,7 @@ def cb_drag_begin(self, widget, context):
1735
1734
"""
1736
1735
Called on start drag.
1737
1736
"""
1737
+ self ._do_drag = True
1738
1738
tgs = [x .name () for x in context .list_targets ()]
1739
1739
# set icon depending on person or family drag
1740
1740
if DdTargets .PERSON_LINK .drag_type in tgs :
@@ -1747,6 +1747,7 @@ def cb_drag_end(self, widget, context):
1747
1747
Called when drag is end.
1748
1748
"""
1749
1749
self ._in_drag = False
1750
+ self ._do_drag = False
1750
1751
1751
1752
def cb_drag_data_get (self , widget , context , sel_data , info , time ):
1752
1753
"""
0 commit comments