aboutsummaryrefslogtreecommitdiff
path: root/include/cru
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-11-21 15:18:28 +0800
committercrupest <crupest@outlook.com>2021-11-21 15:18:28 +0800
commiteeb1f55d5a483720441c3f44e83d02cc882a3bc0 (patch)
treee8d8a49d26602ac3f8097aa4d2fff65d70bbfba5 /include/cru
parent2b28ec296fdc72050569b9fedc1664ada7791497 (diff)
downloadcru-eeb1f55d5a483720441c3f44e83d02cc882a3bc0.tar.gz
cru-eeb1f55d5a483720441c3f44e83d02cc882a3bc0.tar.bz2
cru-eeb1f55d5a483720441c3f44e83d02cc882a3bc0.zip
...
Diffstat (limited to 'include/cru')
-rw-r--r--include/cru/osx/gui/Window.hpp4
-rw-r--r--include/cru/platform/gui/Window.hpp6
-rw-r--r--include/cru/ui/controls/RootControl.hpp10
-rw-r--r--include/cru/ui/host/WindowHost.hpp14
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);