aboutsummaryrefslogtreecommitdiff
path: root/include/cru
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru')
-rw-r--r--include/cru/osx/gui/UiApplication.hpp3
-rw-r--r--include/cru/osx/gui/Window.hpp14
-rw-r--r--include/cru/platform/gui/UiApplication.hpp16
-rw-r--r--include/cru/platform/gui/Window.hpp23
4 files changed, 33 insertions, 23 deletions
diff --git a/include/cru/osx/gui/UiApplication.hpp b/include/cru/osx/gui/UiApplication.hpp
index e3cb269a..e4036854 100644
--- a/include/cru/osx/gui/UiApplication.hpp
+++ b/include/cru/osx/gui/UiApplication.hpp
@@ -39,8 +39,7 @@ class OsxUiApplication : public OsxGuiResource, public virtual IUiApplication {
std::vector<INativeWindow*> GetAllWindow() override;
- INativeWindow* CreateWindow(INativeWindow* parent,
- CreateWindowFlag flags) override;
+ INativeWindow* CreateWindow() override;
cru::platform::graphics::IGraphicsFactory* GetGraphicsFactory() override;
diff --git a/include/cru/osx/gui/Window.hpp b/include/cru/osx/gui/Window.hpp
index 7ea21926..5383ca1b 100644
--- a/include/cru/osx/gui/Window.hpp
+++ b/include/cru/osx/gui/Window.hpp
@@ -20,8 +20,7 @@ class OsxWindow : public OsxGuiResource, public INativeWindow {
friend details::OsxInputMethodContextPrivate;
public:
- OsxWindow(OsxUiApplication* ui_application, INativeWindow* parent,
- bool frame);
+ OsxWindow(OsxUiApplication* ui_application);
CRU_DELETE_COPY(OsxWindow)
CRU_DELETE_MOVE(OsxWindow)
@@ -32,9 +31,13 @@ class OsxWindow : public OsxGuiResource, public INativeWindow {
void Close() override;
INativeWindow* GetParent() override;
+ void SetParent(INativeWindow* parent) override;
- bool IsVisible() override;
- void SetVisible(bool is_visible) override;
+ WindowStyleFlag GetShowFlag() override;
+ void SetShowFlag(WindowStyleFlag flag) override;
+
+ WindowVisibilityType GetVisibility() override;
+ void SetVisibility(WindowVisibilityType visibility) override;
Size GetClientSize() override;
void SetClientSize(const Size& size) override;
@@ -61,8 +64,11 @@ class OsxWindow : public OsxGuiResource, public INativeWindow {
IEvent<std::nullptr_t>* CreateEvent() override;
IEvent<std::nullptr_t>* DestroyEvent() override;
IEvent<std::nullptr_t>* PaintEvent() override;
+
+ IEvent<WindowVisibilityType>* VisibilityChangeEvent() override;
IEvent<Size>* ResizeEvent() override;
IEvent<FocusChangeType>* FocusEvent() override;
+
IEvent<MouseEnterLeaveType>* MouseEnterLeaveEvent() override;
IEvent<Point>* MouseMoveEvent() override;
IEvent<NativeMouseButtonEventArgs>* MouseDownEvent() override;
diff --git a/include/cru/platform/gui/UiApplication.hpp b/include/cru/platform/gui/UiApplication.hpp
index be95e71c..8bad9668 100644
--- a/include/cru/platform/gui/UiApplication.hpp
+++ b/include/cru/platform/gui/UiApplication.hpp
@@ -9,16 +9,6 @@
#include <vector>
namespace cru::platform::gui {
-namespace details {
-struct CreateWindowFlagTag;
-}
-
-using CreateWindowFlag = Bitmask<details::CreateWindowFlagTag>;
-
-struct CreateWindowFlags {
- static constexpr CreateWindowFlag NoCaptionAndBorder{0b1};
-};
-
// The entry point of a ui application.
struct CRU_PLATFORM_GUI_API IUiApplication : public virtual IPlatformResource {
public:
@@ -56,11 +46,7 @@ struct CRU_PLATFORM_GUI_API IUiApplication : public virtual IPlatformResource {
virtual std::vector<INativeWindow*> GetAllWindow() = 0;
- INativeWindow* CreateWindow(INativeWindow* parent) {
- return this->CreateWindow(parent, CreateWindowFlag(0));
- };
- virtual INativeWindow* CreateWindow(INativeWindow* parent,
- CreateWindowFlag flags) = 0;
+ virtual INativeWindow* CreateWindow() = 0;
virtual cru::platform::graphics::IGraphicsFactory* GetGraphicsFactory() = 0;
diff --git a/include/cru/platform/gui/Window.hpp b/include/cru/platform/gui/Window.hpp
index a1816e4a..ab96045e 100644
--- a/include/cru/platform/gui/Window.hpp
+++ b/include/cru/platform/gui/Window.hpp
@@ -8,6 +8,18 @@
#include <string_view>
namespace cru::platform::gui {
+namespace details {
+struct WindowStyleFlagTag;
+}
+
+using WindowStyleFlag = Bitmask<details::WindowStyleFlagTag>;
+
+struct WindowStyleFlags {
+ static constexpr WindowStyleFlag NoCaptionAndBorder{0b1};
+};
+
+enum class WindowVisibilityType { Show, Hide };
+
enum class FocusChangeType { Gain, Lost };
enum class MouseEnterLeaveType { Enter, Leave };
@@ -36,9 +48,13 @@ struct INativeWindow : virtual IPlatformResource {
virtual void Close() = 0;
virtual INativeWindow* GetParent() = 0;
+ virtual void SetParent(INativeWindow* parent) = 0;
+
+ virtual WindowStyleFlag GetShowFlag() = 0;
+ virtual void SetShowFlag(WindowStyleFlag flag) = 0;
- virtual bool IsVisible() = 0;
- virtual void SetVisible(bool is_visible) = 0;
+ virtual WindowVisibilityType GetVisibility() = 0;
+ virtual void SetVisibility(WindowVisibilityType visibility) = 0;
virtual Size GetClientSize() = 0;
virtual void SetClientSize(const Size& size) = 0;
@@ -73,8 +89,11 @@ struct INativeWindow : virtual IPlatformResource {
virtual IEvent<std::nullptr_t>* CreateEvent() = 0;
virtual IEvent<std::nullptr_t>* DestroyEvent() = 0;
virtual IEvent<std::nullptr_t>* PaintEvent() = 0;
+
+ virtual IEvent<WindowVisibilityType>* VisibilityChangeEvent();
virtual IEvent<Size>* ResizeEvent() = 0;
virtual IEvent<FocusChangeType>* FocusEvent() = 0;
+
virtual IEvent<MouseEnterLeaveType>* MouseEnterLeaveEvent() = 0;
virtual IEvent<Point>* MouseMoveEvent() = 0;
virtual IEvent<NativeMouseButtonEventArgs>* MouseDownEvent() = 0;