Deskbar: fix showing an empty leaf menu, #3105.
* NeedsToRebuild() didn't actually do anything, as this returns whether it needs to be rebuilt or not. * Replaced RemoveItems() with ForceRebuild(), which should already delete the menu items, whilst additionally letting the leaf menu know that it needs to rebuild itself. This bug was reproducible 100%; however, with this fix, there is now a rare race condition where clicking between an app menu and the leaf menu will result in both menus showing concurrently.
This commit is contained in:
@@ -136,7 +136,6 @@ TBarWindow::MenusBeginning()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sDeskbarMenu->NeedsToRebuild();
|
|
||||||
sDeskbarMenu->ResetTargets();
|
sDeskbarMenu->ResetTargets();
|
||||||
|
|
||||||
fShowingMenu = true;
|
fShowingMenu = true;
|
||||||
@@ -151,8 +150,7 @@ TBarWindow::MenusEnded()
|
|||||||
BWindow::MenusEnded();
|
BWindow::MenusEnded();
|
||||||
|
|
||||||
if (sDeskbarMenu->LockLooper()) {
|
if (sDeskbarMenu->LockLooper()) {
|
||||||
// TODO: is this ok?
|
sDeskbarMenu->ForceRebuild();
|
||||||
sDeskbarMenu->RemoveItems(0, sDeskbarMenu->CountItems(), true);
|
|
||||||
sDeskbarMenu->UnlockLooper();
|
sDeskbarMenu->UnlockLooper();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user