diff options
Diffstat (limited to 'src/osx')
-rw-r--r-- | src/osx/gui/Window.mm | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/osx/gui/Window.mm b/src/osx/gui/Window.mm index 239e175a..3ff94f68 100644 --- a/src/osx/gui/Window.mm +++ b/src/osx/gui/Window.mm @@ -7,6 +7,13 @@ #include <AppKit/NSWindow.h> #include <memory> +@interface WindowDelegate : NSObject <NSWindowDelegate> +- (void)windowWillClose:(NSNotification*)notification; +- (void)windowDidExpose:(NSNotification*)notification; +- (void)windowDidUpdate:(NSNotification*)notification; +- (void)windowDidResize:(NSNotification*)notification; +@end + namespace cru::platform::gui::osx { namespace details { class OsxWindowPrivate { @@ -20,6 +27,12 @@ class OsxWindowPrivate { ~OsxWindowPrivate() = default; + public: + void OnWindowWillClose(); + void OnWindowDidExpose(); + void OnWindowDidUpdate(); + void OnWindowDidResize(); + private: OsxWindow* osx_window_; @@ -30,6 +43,13 @@ class OsxWindowPrivate { NSWindow* window_; }; + +void OsxWindowPrivate::OnWindowWillClose() { osx_window_->destroy_event_.Raise(nullptr); } +void OsxWindowPrivate::OnWindowDidExpose() { [window_ update]; } +void OsxWindowPrivate::OnWindowDidUpdate() { osx_window_->paint_event_.Raise(nullptr); } +void OsxWindowPrivate::OnWindowDidResize() { + osx_window_->resize_event_.Raise(osx_window_->GetClientSize()); +} } namespace { |