AddItem(..., frame) used AddItem(..., index) which
triggered a debugger call -> refactoring and cleanup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17521 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
+22
-10
@@ -314,16 +314,17 @@ BMenu::AddItem(BMenuItem *item, int32 index)
|
|||||||
debugger("BMenu::AddItem(BMenuItem *, int32) this method can only "
|
debugger("BMenu::AddItem(BMenuItem *, int32) this method can only "
|
||||||
"be called if the menu layout is not B_ITEMS_IN_MATRIX");
|
"be called if the menu layout is not B_ITEMS_IN_MATRIX");
|
||||||
|
|
||||||
bool locked = LockLooper();
|
if (!_AddItem(item, index))
|
||||||
bool added = _AddItem(item, index);
|
return false;
|
||||||
if (locked) {
|
|
||||||
if (added && Window() != NULL && !Window()->IsHidden()) {
|
if (LockLooper()) {
|
||||||
|
if (!Window()->IsHidden()) {
|
||||||
LayoutItems(index);
|
LayoutItems(index);
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
UnlockLooper();
|
UnlockLooper();
|
||||||
}
|
}
|
||||||
return added;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -338,8 +339,21 @@ BMenu::AddItem(BMenuItem *item, BRect frame)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
item->fBounds = frame;
|
item->fBounds = frame;
|
||||||
|
|
||||||
return AddItem(item, CountItems());
|
int32 index = CountItems();
|
||||||
|
if (!_AddItem(item, index)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (LockLooper()) {
|
||||||
|
if (!Window()->IsHidden()) {
|
||||||
|
LayoutItems(index);
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
UnlockLooper();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -392,9 +406,7 @@ BMenu::AddItem(BMenu *submenu, BRect frame)
|
|||||||
if (!item)
|
if (!item)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
item->fBounds = frame;
|
if (!AddItem(item, frame)) {
|
||||||
|
|
||||||
if (!AddItem(item, CountItems())) {
|
|
||||||
item->fSubmenu = NULL;
|
item->fSubmenu = NULL;
|
||||||
delete item;
|
delete item;
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user