From ae560aeb8b38bc32b05f9af7e3230de712ee5b5c Mon Sep 17 00:00:00 2001 From: alberth Date: Sun, 23 May 2010 14:53:39 +0000 Subject: (svn r19886) -Add [FS#3705]: Perform window callback during mouse dragging for the purpose of highlighting the destination (sbr). --- src/window.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/window.cpp') diff --git a/src/window.cpp b/src/window.cpp index 447f247d6..9fa5655ae 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1382,6 +1382,24 @@ static bool HandleDragDrop() return false; } +static bool HandleMouseDrag() +{ + if (_special_mouse_mode != WSM_DRAGDROP) return true; + if (!_left_button_down || (_cursor.delta.x == 0 && _cursor.delta.y == 0)) return true; + + Window *w = GetCallbackWnd(); + + if (w != NULL) { + /* Send an event in client coordinates. */ + Point pt; + pt.x = _cursor.pos.x - w->left; + pt.y = _cursor.pos.y - w->top; + w->OnMouseDrag(pt, GetWidgetFromPos(w, pt.x, pt.y)); + } + + return false; +} + static bool HandleMouseOver() { Window *w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y); @@ -2057,6 +2075,7 @@ static void MouseLoop(MouseClick click, int mousewheel) UpdateTileSelection(); if (!VpHandlePlaceSizingDrag()) return; + if (!HandleMouseDrag()) return; if (!HandleDragDrop()) return; if (!HandleWindowDragging()) return; if (!HandleScrollbarScrolling()) return; -- cgit v1.2.3-54-g00ecf