From eeb1f55d5a483720441c3f44e83d02cc882a3bc0 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 21 Nov 2021 15:18:28 +0800 Subject: ... --- include/cru/osx/gui/Window.hpp | 4 ++-- include/cru/platform/gui/Window.hpp | 6 +++--- include/cru/ui/controls/RootControl.hpp | 10 ++++------ include/cru/ui/host/WindowHost.hpp | 14 ++------------ 4 files changed, 11 insertions(+), 23 deletions(-) (limited to 'include') 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* DestroyEvent() = 0; virtual IEvent* PaintEvent() = 0; - virtual IEvent* VisibilityChangeEvent(); + virtual IEvent* VisibilityChangeEvent() = 0; virtual IEvent* ResizeEvent() = 0; virtual IEvent* 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) @@ -23,9 +23,6 @@ class RootControl : public LayoutControl { protected: void SetGainFocusOnCreateAndDestroyWhenLoseFocus(bool value); - private: - platform::gui::INativeWindow* GetNativeWindow(bool create); - private: std::unique_ptr window_host_; @@ -33,6 +30,7 @@ class RootControl : public LayoutControl { 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 cursor); private: - gsl::not_null CreateNativeWindow( - CreateWindowParams params); + gsl::not_null CreateNativeWindow(); //*************** region: native messages *************** void OnNativeDestroy(platform::gui::INativeWindow* window, std::nullptr_t); -- cgit v1.2.3