diff --git a/src/kits/interface/Menu.cpp b/src/kits/interface/Menu.cpp index 3d8b0006c1..e9c24efb7b 100644 --- a/src/kits/interface/Menu.cpp +++ b/src/kits/interface/Menu.cpp @@ -1549,6 +1549,9 @@ BMenu::_Hide() } +// #pragma mark - mouse tracking + + const static bigtime_t kOpenSubmenuDelay = 225000; const static bigtime_t kNavigationAreaTimeout = 1000000; const static bigtime_t kHysteresis = 200000; @@ -1800,7 +1803,8 @@ BMenu::_UpdateStateOpenSelect(BMenuItem* item, BPoint position, bool inNavAreaRectAbove = navAreaRectAbove.Contains(position); bool inNavAreaRectBelow = navAreaRectBelow.Contains(position); - if (!inNavAreaRectAbove && !inNavAreaRectBelow) { + if (fSelected == NULL + || (!inNavAreaRectAbove && !inNavAreaRectBelow)) { _SelectItem(item, false); navAreaRectAbove = BRect(); navAreaRectBelow = BRect(); @@ -1911,6 +1915,9 @@ BMenu::_UpdateStateClose(BMenuItem* item, const BPoint& where, } +// #pragma mark - + + bool BMenu::_AddItem(BMenuItem* item, int32 index) {