diff options
author | crupest <crupest@outlook.com> | 2021-11-21 15:18:28 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-11-21 15:18:28 +0800 |
commit | eeb1f55d5a483720441c3f44e83d02cc882a3bc0 (patch) | |
tree | e8d8a49d26602ac3f8097aa4d2fff65d70bbfba5 /include | |
parent | 2b28ec296fdc72050569b9fedc1664ada7791497 (diff) | |
download | cru-eeb1f55d5a483720441c3f44e83d02cc882a3bc0.tar.gz cru-eeb1f55d5a483720441c3f44e83d02cc882a3bc0.tar.bz2 cru-eeb1f55d5a483720441c3f44e83d02cc882a3bc0.zip |
...
Diffstat (limited to 'include')
-rw-r--r-- | include/cru/osx/gui/Window.hpp | 4 | ||||
-rw-r--r-- | include/cru/platform/gui/Window.hpp | 6 | ||||
-rw-r--r-- | include/cru/ui/controls/RootControl.hpp | 10 | ||||
-rw-r--r-- | include/cru/ui/host/WindowHost.hpp | 14 |
4 files changed, 11 insertions, 23 deletions
diff --git a/include/cru/osx/gui/Window.hpp b/include/cru/osx/gui/Window.hpp index 5383ca1b..2a81d38a 100644 --- a/include/cru/osx/gui/Window.hpp +++ b/include/cru/osx/gui/Window.hpp @@ -33,8 +33,8 @@ class OsxWindow : public OsxGuiResource, public INativeWindow { INativeWindow* GetParent() override; void SetParent(INativeWindow* parent) override; - WindowStyleFlag GetShowFlag() override; - void SetShowFlag(WindowStyleFlag flag) override; + WindowStyleFlag GetStyleFlag() override; + void SetStyleFlag(WindowStyleFlag flag) override; WindowVisibilityType GetVisibility() override; void SetVisibility(WindowVisibilityType visibility) override; diff --git a/include/cru/platform/gui/Window.hpp b/include/cru/platform/gui/Window.hpp index ab96045e..f6e1d650 100644 --- a/include/cru/platform/gui/Window.hpp +++ b/include/cru/platform/gui/Window.hpp @@ -50,8 +50,8 @@ struct INativeWindow : virtual IPlatformResource { virtual INativeWindow* GetParent() = 0; virtual void SetParent(INativeWindow* parent) = 0; - virtual WindowStyleFlag GetShowFlag() = 0; - virtual void SetShowFlag(WindowStyleFlag flag) = 0; + virtual WindowStyleFlag GetStyleFlag() = 0; + virtual void SetStyleFlag(WindowStyleFlag flag) = 0; virtual WindowVisibilityType GetVisibility() = 0; virtual void SetVisibility(WindowVisibilityType visibility) = 0; @@ -90,7 +90,7 @@ struct INativeWindow : virtual IPlatformResource { virtual IEvent<std::nullptr_t>* DestroyEvent() = 0; virtual IEvent<std::nullptr_t>* PaintEvent() = 0; - virtual IEvent<WindowVisibilityType>* VisibilityChangeEvent(); + virtual IEvent<WindowVisibilityType>* VisibilityChangeEvent() = 0; virtual IEvent<Size>* ResizeEvent() = 0; virtual IEvent<FocusChangeType>* FocusEvent() = 0; diff --git a/include/cru/ui/controls/RootControl.hpp b/include/cru/ui/controls/RootControl.hpp index 44722cef..823b9f03 100644 --- a/include/cru/ui/controls/RootControl.hpp +++ b/include/cru/ui/controls/RootControl.hpp @@ -2,6 +2,7 @@ #include "LayoutControl.hpp" #include "cru/common/Base.hpp" +#include "cru/common/Event.hpp" #include "cru/platform/gui/Base.hpp" #include "cru/ui/Base.hpp" #include "cru/ui/host/WindowHost.hpp" @@ -9,8 +10,7 @@ namespace cru::ui::controls { class RootControl : public LayoutControl { protected: - explicit RootControl(Control* attached_control, - host::CreateWindowParams params); + explicit RootControl(Control* attached_control); public: CRU_DELETE_COPY(RootControl) @@ -24,15 +24,13 @@ class RootControl : public LayoutControl { void SetGainFocusOnCreateAndDestroyWhenLoseFocus(bool value); private: - platform::gui::INativeWindow* GetNativeWindow(bool create); - - private: std::unique_ptr<host::WindowHost> window_host_; std::unique_ptr<render::StackLayoutRenderObject> render_object_; Control* attached_control_; - bool gain_focus_on_create_and_destroy_when_lose_focus_ = false; + EventRevokerListGuard + gain_focus_on_create_and_destroy_when_lose_focus_event_guard_; }; } // namespace cru::ui::controls diff --git a/include/cru/ui/host/WindowHost.hpp b/include/cru/ui/host/WindowHost.hpp index 6fb853b6..2fc174c6 100644 --- a/include/cru/ui/host/WindowHost.hpp +++ b/include/cru/ui/host/WindowHost.hpp @@ -16,21 +16,12 @@ class LayoutPaintCycler; struct AfterLayoutEventArgs {}; -struct CreateWindowParams { - CreateWindowParams(platform::gui::INativeWindow* parent = nullptr, - platform::gui::CreateWindowFlag flag = {}) - : parent(parent), flag(flag) {} - - platform::gui::INativeWindow* parent; - platform::gui::CreateWindowFlag flag; -}; - // The bridge between control tree and native window. class WindowHost : public Object { CRU_DEFINE_CLASS_LOG_TAG(u"cru::ui::host::WindowHost") public: - WindowHost(controls::Control* root_control, CreateWindowParams params); + explicit WindowHost(controls::Control* root_control); CRU_DELETE_COPY(WindowHost) CRU_DELETE_MOVE(WindowHost) @@ -112,8 +103,7 @@ class WindowHost : public Object { void SetOverrideCursor(std::shared_ptr<platform::gui::ICursor> cursor); private: - gsl::not_null<platform::gui::INativeWindow*> CreateNativeWindow( - CreateWindowParams params); + gsl::not_null<platform::gui::INativeWindow*> CreateNativeWindow(); //*************** region: native messages *************** void OnNativeDestroy(platform::gui::INativeWindow* window, std::nullptr_t); |