aboutsummaryrefslogtreecommitdiff
path: root/include/cru/ui/controls
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/ui/controls')
-rw-r--r--include/cru/ui/controls/Button.h1
-rw-r--r--include/cru/ui/controls/CheckBox.h1
-rw-r--r--include/cru/ui/controls/Control.h7
-rw-r--r--include/cru/ui/controls/IconButton.h1
-rw-r--r--include/cru/ui/controls/Window.h4
5 files changed, 10 insertions, 4 deletions
diff --git a/include/cru/ui/controls/Button.h b/include/cru/ui/controls/Button.h
index 80d21d08..5ae3de49 100644
--- a/include/cru/ui/controls/Button.h
+++ b/include/cru/ui/controls/Button.h
@@ -14,7 +14,6 @@ class CRU_UI_API Button : public SingleChildControl<render::BorderRenderObject>,
public:
Button();
- ~Button() override;
public:
helper::ClickState GetClickState() override {
diff --git a/include/cru/ui/controls/CheckBox.h b/include/cru/ui/controls/CheckBox.h
index 2e4685d5..16fe0725 100644
--- a/include/cru/ui/controls/CheckBox.h
+++ b/include/cru/ui/controls/CheckBox.h
@@ -15,7 +15,6 @@ class CRU_UI_API CheckBox : public Control,
static constexpr auto kControlName = "CheckBox";
CheckBox();
- ~CheckBox() override;
render::RenderObject* GetRenderObject() override {
return &container_render_object_;
diff --git a/include/cru/ui/controls/Control.h b/include/cru/ui/controls/Control.h
index 8cd7a375..aa1cef8a 100644
--- a/include/cru/ui/controls/Control.h
+++ b/include/cru/ui/controls/Control.h
@@ -12,6 +12,11 @@
namespace cru::ui::controls {
+struct ControlHostChangeEventArgs {
+ ControlHost* old_host;
+ ControlHost* new_host;
+};
+
/**
* \remarks If you want to write a new control. You should override following
* methods:
@@ -143,6 +148,8 @@ class CRU_UI_API Control : public Object,
CRU_DEFINE_ROUTED_EVENT(GainFocus, events::FocusChangeEventArgs)
CRU_DEFINE_ROUTED_EVENT(LoseFocus, events::FocusChangeEventArgs)
+ CRU_DEFINE_EVENT(ControlHostChange, const ControlHostChangeEventArgs&)
+
//*************** region: tree ***************
protected:
virtual void OnParentChanged(Control* old_parent, Control* new_parent);
diff --git a/include/cru/ui/controls/IconButton.h b/include/cru/ui/controls/IconButton.h
index b061bc87..5b0f899d 100644
--- a/include/cru/ui/controls/IconButton.h
+++ b/include/cru/ui/controls/IconButton.h
@@ -21,7 +21,6 @@ class CRU_UI_API IconButton : public Control,
public:
IconButton();
IconButton(std::string_view icon_svg_path_data_string, const Rect& view_port);
- ~IconButton() override;
render::RenderObject* GetRenderObject() override {
return &container_render_object_;
diff --git a/include/cru/ui/controls/Window.h b/include/cru/ui/controls/Window.h
index 131d68a8..355b03a9 100644
--- a/include/cru/ui/controls/Window.h
+++ b/include/cru/ui/controls/Window.h
@@ -24,8 +24,9 @@ class CRU_UI_API Window
Window();
- static Window* CreatePopup();
+ static Window* CreatePopup(Control* attached_control);
+ Control* GetAttachedControl();
void SetAttachedControl(Control* control);
platform::gui::INativeWindow* GetNativeWindow();
@@ -36,6 +37,7 @@ class CRU_UI_API Window
std::unique_ptr<ControlHost> control_host_;
Control* attached_control_;
+ EventHandlerRevokerGuard parent_window_guard_;
EventHandlerRevokerListGuard
gain_focus_on_create_and_destroy_when_lose_focus_event_guard_;