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