void TExpandoMenuBar::MouseMoved(BPoint where, uint32 code, const BMessage *message) { if (!message) { // force a cleanup fBarView->DragStop(true); BMenuBar::MouseMoved(where, code, message); return; } BPoint loc; uint32 buttons; GetMouse(&loc, &buttons); switch (code) { case B_ENTERED_VIEW: if (message && buttons != 0) { fBarView->CacheDragData((BMessage *)message); MouseDown(loc); } break; case B_EXITED_VIEW: if (fBarView->Dragging() && buttons != 0) { if (!ItemAtPoint(where) && !InBeMenu(where) && (fSeparatorItem && !fSeparatorItem->Frame().Contains(where)) && !Frame().Contains(where)) fBarView->DragStop(); } break; } BMenuBar::MouseMoved(where, code, message); }
void TExpandoMenuBar::MouseMoved(BPoint where, uint32 code, const BMessage *message) { if (!message) { // force a cleanup fBarView->DragStop(true); BMenuBar::MouseMoved(where, code, message); return; } uint32 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(message); MouseDown(where); } break; case B_EXITED_VIEW: if (fBarView->Dragging() && buttons != 0) { if (!TeamItemAtPoint(where) && !InBeMenu(where) && (fSeparatorItem && !fSeparatorItem->Frame().Contains(where)) && !Frame().Contains(where)) { fBarView->DragStop(); } } break; } BMenuBar::MouseMoved(where, code, message); }