diff --git a/src/servers/app/WorkspacesView.cpp b/src/servers/app/WorkspacesView.cpp index 67487ea8d1..90c92de2f0 100644 --- a/src/servers/app/WorkspacesView.cpp +++ b/src/servers/app/WorkspacesView.cpp @@ -467,6 +467,7 @@ WorkspacesView::MouseDown(BMessage* message, BPoint where) fLeftTopOffset = where - windowFrame.LeftTop(); fSelectedWorkspace = index; + fClickPoint = where; if (index >= 0) _Invalidate(); @@ -550,10 +551,15 @@ WorkspacesView::MouseMoved(BMessage* message, BPoint where) leftTop = fSelectedWindow->Anchor(fSelectedWorkspace).position; } - Window()->Desktop()->MoveWindowBy(fSelectedWindow, left - leftTop.x, top - leftTop.y, - fSelectedWorkspace); + float diff = (fClickPoint.x - where.x) * (fClickPoint.x - where.x) + + (fClickPoint.y - where.y) * (fClickPoint.y - where.y); + if (!fHasMoved && diff > 4) + fHasMoved = true; - fHasMoved = true; + if (fHasMoved) { + Window()->Desktop()->MoveWindowBy(fSelectedWindow, left - leftTop.x, + top - leftTop.y, fSelectedWorkspace); + } } diff --git a/src/servers/app/WorkspacesView.h b/src/servers/app/WorkspacesView.h index 58c3fff306..a34b54a4fd 100644 --- a/src/servers/app/WorkspacesView.h +++ b/src/servers/app/WorkspacesView.h @@ -56,6 +56,7 @@ private: ::Window* fSelectedWindow; int32 fSelectedWorkspace; bool fHasMoved; + BPoint fClickPoint; BPoint fLeftTopOffset; };