mirror of
https://github.com/vczh-libraries/Release.git
synced 2026-05-20 11:31:28 +08:00
Fix datagrid crash bug
This commit is contained in:
+18
-17
@@ -20778,6 +20778,19 @@ GuiMenuButton
|
||||
return ownerMenuService?ownerMenuService->GetPreferredDirection():IGuiMenuService::Horizontal;
|
||||
}
|
||||
|
||||
void GuiMenuButton::DetachSubMenu()
|
||||
{
|
||||
if (subMenu)
|
||||
{
|
||||
subMenu->WindowOpened.Detach(subMenuWindowOpenedHandler);
|
||||
subMenu->WindowClosed.Detach(subMenuWindowClosedHandler);
|
||||
if (ownedSubMenu)
|
||||
{
|
||||
delete subMenu;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GuiMenu* GuiMenuButton::ProvideDropdownMenu()
|
||||
{
|
||||
return GetSubMenu();
|
||||
@@ -20800,10 +20813,7 @@ GuiMenuButton
|
||||
|
||||
GuiMenuButton::~GuiMenuButton()
|
||||
{
|
||||
if(subMenu && ownedSubMenu)
|
||||
{
|
||||
delete subMenu;
|
||||
}
|
||||
DetachSubMenu();
|
||||
}
|
||||
|
||||
Ptr<GuiImageData> GuiMenuButton::GetLargeImage()
|
||||
@@ -20874,19 +20884,13 @@ GuiMenuButton
|
||||
|
||||
void GuiMenuButton::SetSubMenu(GuiMenu* value, bool owned)
|
||||
{
|
||||
if(subMenu)
|
||||
{
|
||||
if(ownedSubMenu)
|
||||
{
|
||||
delete subMenu;
|
||||
}
|
||||
}
|
||||
DetachSubMenu();
|
||||
subMenu=value;
|
||||
ownedSubMenu=owned;
|
||||
if(subMenu)
|
||||
{
|
||||
subMenu->WindowOpened.AttachMethod(this, &GuiMenuButton::OnSubMenuWindowOpened);
|
||||
subMenu->WindowClosed.AttachMethod(this, &GuiMenuButton::OnSubMenuWindowClosed);
|
||||
subMenuWindowOpenedHandler = subMenu->WindowOpened.AttachMethod(this, &GuiMenuButton::OnSubMenuWindowOpened);
|
||||
subMenuWindowClosedHandler = subMenu->WindowClosed.AttachMethod(this, &GuiMenuButton::OnSubMenuWindowClosed);
|
||||
}
|
||||
GetControlTemplateObject(true)->SetSubMenuExisting(subMenu != nullptr);
|
||||
}
|
||||
@@ -20895,10 +20899,7 @@ GuiMenuButton
|
||||
{
|
||||
if(subMenu)
|
||||
{
|
||||
if(ownedSubMenu)
|
||||
{
|
||||
delete subMenu;
|
||||
}
|
||||
DetachSubMenu();
|
||||
subMenu=0;
|
||||
ownedSubMenu=false;
|
||||
GetControlTemplateObject(true)->SetSubMenuExisting(false);
|
||||
|
||||
@@ -15845,6 +15845,8 @@ MenuButton
|
||||
|
||||
using IEventHandler = compositions::IGuiGraphicsEventHandler;
|
||||
protected:
|
||||
Ptr<IEventHandler> subMenuWindowOpenedHandler;
|
||||
Ptr<IEventHandler> subMenuWindowClosedHandler;
|
||||
Ptr<IEventHandler> hostClickedHandler;
|
||||
Ptr<IEventHandler> hostMouseEnterHandler;
|
||||
Ptr<GuiImageData> image;
|
||||
@@ -15869,6 +15871,7 @@ MenuButton
|
||||
virtual IGuiMenuService::Direction GetSubMenuDirection();
|
||||
|
||||
private:
|
||||
void DetachSubMenu();
|
||||
GuiMenu* ProvideDropdownMenu()override;
|
||||
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user