@@ -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