mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Stabilizes the add/remove behavior of menubars by also tracking the modeless background control the menubars use for proper cleanup as well.
Also fixes an issue where the findMenu call wasn't properly translating the incoming string to StringTableEntry.
This commit is contained in:
parent
e4427b7654
commit
f237caff5e
|
|
@ -133,7 +133,8 @@ GuiCanvas::GuiCanvas(): GuiControl(),
|
|||
mLastRenderMs(0),
|
||||
mPlatformWindow(NULL),
|
||||
mDisplayWindow(true),
|
||||
mMenuBarCtrl(NULL)
|
||||
mMenuBarCtrl(nullptr),
|
||||
mMenuBackground(nullptr)
|
||||
{
|
||||
setBounds(0, 0, 640, 480);
|
||||
mAwake = true;
|
||||
|
|
@ -296,8 +297,11 @@ void GuiCanvas::setMenuBar(SimObject *obj)
|
|||
mMenuBarCtrl = dynamic_cast<GuiControl*>(obj);
|
||||
|
||||
//remove old menubar
|
||||
if( oldMenuBar )
|
||||
Parent::removeObject( oldMenuBar );
|
||||
if (oldMenuBar)
|
||||
{
|
||||
Parent::removeObject(oldMenuBar);
|
||||
Parent::removeObject(mMenuBackground); //also remove the modeless wrapper
|
||||
}
|
||||
|
||||
// set new menubar
|
||||
if (mMenuBarCtrl)
|
||||
|
|
@ -312,14 +316,17 @@ void GuiCanvas::setMenuBar(SimObject *obj)
|
|||
return;
|
||||
}
|
||||
|
||||
GuiControl* menuBackground = new GuiControl();
|
||||
menuBackground->registerObject();
|
||||
if (mMenuBackground == nullptr)
|
||||
{
|
||||
mMenuBackground = new GuiControl();
|
||||
mMenuBackground->registerObject();
|
||||
|
||||
menuBackground->setControlProfile(profile);
|
||||
mMenuBackground->setControlProfile(profile);
|
||||
}
|
||||
|
||||
menuBackground->addObject(mMenuBarCtrl);
|
||||
mMenuBackground->addObject(mMenuBarCtrl);
|
||||
|
||||
Parent::addObject(menuBackground);
|
||||
Parent::addObject(mMenuBackground);
|
||||
}
|
||||
|
||||
// update window accelerator keys
|
||||
|
|
|
|||
|
|
@ -198,6 +198,7 @@ protected:
|
|||
static CanvasSizeChangeSignal smCanvasSizeChangeSignal;
|
||||
|
||||
GuiControl *mMenuBarCtrl;
|
||||
GuiControl* mMenuBackground;
|
||||
|
||||
public:
|
||||
DECLARE_CONOBJECT(GuiCanvas);
|
||||
|
|
|
|||
|
|
@ -1519,9 +1519,10 @@ DefineConsoleMethod(GuiMenuBar, insert, void, (SimObject* pObject, S32 pos), (nu
|
|||
object->insert(pObject, pos);
|
||||
}
|
||||
|
||||
DefineConsoleMethod(GuiMenuBar, findMenu, S32, (StringTableEntry barTitle), (""), "(barTitle)")
|
||||
DefineConsoleMethod(GuiMenuBar, findMenu, S32, (const char* barTitle), (""), "(barTitle)")
|
||||
{
|
||||
PopupMenu* menu = object->findMenu(barTitle);
|
||||
StringTableEntry barTitleStr = StringTable->insert(barTitle);
|
||||
PopupMenu* menu = object->findMenu(barTitleStr);
|
||||
|
||||
if (menu)
|
||||
return menu->getId();
|
||||
|
|
|
|||
Loading…
Reference in a new issue