diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-26 22:14:52 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-26 22:14:52 +0800 |
| commit | 6e8d570e3d63b5bc4e24d258d2dd383530ace2a3 (patch) | |
| tree | 0b027e9793381e8c3145258ea48e8c1a78ace954 /src/platform/gui/osx/WindowPrivate.h | |
| parent | 4fab87bfbfed44811d29b9cb4cccb51d0873a72d (diff) | |
| download | cru-6e8d570e3d63b5bc4e24d258d2dd383530ace2a3.tar.gz cru-6e8d570e3d63b5bc4e24d258d2dd383530ace2a3.tar.bz2 cru-6e8d570e3d63b5bc4e24d258d2dd383530ace2a3.zip | |
Clean codes on macos native window.
Diffstat (limited to 'src/platform/gui/osx/WindowPrivate.h')
| -rw-r--r-- | src/platform/gui/osx/WindowPrivate.h | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/src/platform/gui/osx/WindowPrivate.h b/src/platform/gui/osx/WindowPrivate.h index be27e1bc..01d70232 100644 --- a/src/platform/gui/osx/WindowPrivate.h +++ b/src/platform/gui/osx/WindowPrivate.h @@ -29,24 +29,27 @@ namespace cru::platform::gui::osx { namespace details { class OsxInputMethodContextPrivate; -class OsxWindowPrivate { +class OsxWindowPrivate : public Object { + friend CruView; friend OsxWindow; friend OsxInputMethodContextPrivate; public: explicit OsxWindowPrivate(OsxWindow* osx_window); - - CRU_DELETE_COPY(OsxWindowPrivate) - CRU_DELETE_MOVE(OsxWindowPrivate) - ~OsxWindowPrivate(); + Rect GetClientRect(); + void SetClientRect(const Rect& rect); + Rect GetWindowRect(); + void SetWindowRect(const Rect& rect); + public: + void OnPaint(const Rect& rect); void OnMouseEnterLeave(MouseEnterLeaveType type); - void OnMouseMove(Point p); - void OnMouseDown(MouseButton button, Point p, KeyModifier key_modifier); - void OnMouseUp(MouseButton button, Point p, KeyModifier key_modifier); - void OnMouseWheel(float delta, Point p, KeyModifier key_modifier, bool horizontal); + void OnMouseMove(NSPoint p); + void OnMouseDown(MouseButton button, NSPoint p, KeyModifier key_modifier); + void OnMouseUp(MouseButton button, NSPoint p, KeyModifier key_modifier); + void OnMouseWheel(float delta, NSPoint p, KeyModifier key_modifier, bool horizontal); void OnKeyDown(KeyCode key, KeyModifier key_modifier); void OnKeyUp(KeyCode key, KeyModifier key_modifier); @@ -61,43 +64,41 @@ class OsxWindowPrivate { CGLayerRef GetDrawLayer() { return draw_layer_; } OsxWindow* GetWindow() { return osx_window_; } - NSWindow* GetNSWindow() { return window_; } + NSWindow* GetNSWindow() { return ns_window_; } + Point TransformWindow(const NSPoint& point); + Rect TransformWindow(const NSRect& rect); + NSPoint TransformWindow(const Point& point); + NSRect TransformWindow(const Rect& rect); + Point TransformScreen(const NSPoint& point); + Rect TransformScreen(const NSRect& rect); + NSPoint TransformScreen(const Point& point); + NSRect TransformScreen(const Rect& rect); Size GetScreenSize(); private: void CreateWindow(); - void UpdateCursor(); - - Point TransformMousePoint(const Point& point); - CGLayerRef CreateLayer(const CGSize& size); - - Rect RetrieveContentRect(); + Rect DoGetClientRect(); private: OsxWindow* osx_window_; - INativeWindow* parent_ = nullptr; - WindowStyleFlag style_flag_ = WindowStyleFlag{}; - + INativeWindow* parent_; + WindowStyleFlag style_flag_; std::string title_; - Rect content_rect_; - NSWindow* window_ = nil; - CruWindowDelegate* window_delegate_ = nil; + NSWindow* ns_window_; + NSView* ns_view_; + CruWindowDelegate* window_delegate_; + CGLayerRef draw_layer_; - CGLayerRef draw_layer_ = nullptr; - - bool mouse_in_ = false; - - std::shared_ptr<OsxCursor> cursor_ = nullptr; + bool mouse_in_; + std::shared_ptr<OsxCursor> cursor_; std::unique_ptr<OsxInputMethodContext> input_method_context_; - - TimerAutoCanceler draw_timer_; }; } // namespace details } // namespace cru::platform::gui::osx |
