fSelected was accessed unchecked in _UpdateStateOpenSelect(), but the method

can be called without any item being selected yet. In that case, fall back
to just select the item and return (setting fSelected). I've had Tracker
crash with a BT that suggest this was the case, when I invoked some context
menu.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36759 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2010-05-08 21:42:30 +00:00
parent a40ec7c51a
commit 676a46d50b
+8 -1
View File
@@ -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)
{