From b0cdd6481de61686ba5176bc43f443bea0bb9ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Wed, 17 May 2006 17:08:26 +0000 Subject: [PATCH] synced to 1.17 from OpenTracker CVS (fixed a deadlock when dragging something over Deskbar) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17497 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/deskbar/ExpandoMenuBar.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/apps/deskbar/ExpandoMenuBar.cpp b/src/apps/deskbar/ExpandoMenuBar.cpp index fd60f4174b..94b4b2d2af 100644 --- a/src/apps/deskbar/ExpandoMenuBar.cpp +++ b/src/apps/deskbar/ExpandoMenuBar.cpp @@ -400,15 +400,16 @@ TExpandoMenuBar::MouseMoved(BPoint where, uint32 code, const BMessage *message) return; } - BPoint loc; uint32 buttons; - GetMouse(&loc, &buttons); + if (!(Window()->CurrentMessage()) + || Window()->CurrentMessage()->FindInt32("buttons", (int32*)&buttons) < B_OK) + buttons = 0; switch (code) { case B_ENTERED_VIEW: if (message && buttons != 0) { - fBarView->CacheDragData((BMessage *)message); - MouseDown(loc); + fBarView->CacheDragData(message); + MouseDown(where); } break; @@ -417,9 +418,9 @@ TExpandoMenuBar::MouseMoved(BPoint where, uint32 code, const BMessage *message) if (!TeamItemAtPoint(where) && !InBeMenu(where) && (fSeparatorItem && !fSeparatorItem->Frame().Contains(where)) - && !Frame().Contains(where)) + && !Frame().Contains(where)) { fBarView->DragStop(); - + } } break; } @@ -436,9 +437,14 @@ TExpandoMenuBar::InBeMenu(BPoint loc) const } else { TBarWindow *window = dynamic_cast(Window()); if (window) { - TBeMenu *bemenu = window->BeMenu(); - if (bemenu && bemenu->Frame().Contains(loc)) - return true; + if (TBeMenu *bemenu = window->BeMenu()) { + bool inBeMenu = false; + if (bemenu->LockLooper()) { + inBeMenu = bemenu->Frame().Contains(loc); + bemenu->UnlockLooper(); + } + return inBeMenu; + } } }