]> git.saurik.com Git - wxWidgets.git/commitdiff
Use NSWindow delegate notification windowWillClose instead of overriding close
authorDavid Elliott <dfe@tgwbd.org>
Mon, 6 Oct 2003 19:17:11 +0000 (19:17 +0000)
committerDavid Elliott <dfe@tgwbd.org>
Mon, 6 Oct 2003 19:17:11 +0000 (19:17 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24110 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/cocoa/NSWindow.h
include/wx/cocoa/dialog.h
include/wx/cocoa/toplevel.h
src/cocoa/NSWindow.mm
src/cocoa/dialog.mm
src/cocoa/toplevel.mm

index 06d7aebf6c78171f0834da116e265630cfa49d6e..b0c87c8f2b6343c9926c9b4166a4e5a2fc9b9f77 100644 (file)
@@ -24,10 +24,10 @@ class wxCocoaNSWindow
 public:
     void AssociateNSWindow(WX_NSWindow cocoaNSWindow);
     void DisassociateNSWindow(WX_NSWindow cocoaNSWindow);
-    virtual void Cocoa_close(void) = 0;
     virtual bool Cocoa_canBecomeMainWindow(bool &canBecome)
     {   return false; }
     virtual bool CocoaDelegate_windowShouldClose(void) = 0;
+    virtual void CocoaDelegate_windowWillClose(void) = 0;
     virtual void CocoaDelegate_windowDidBecomeKey(void) { }
     virtual void CocoaDelegate_windowDidResignKey(void) { }
     virtual void CocoaDelegate_windowDidBecomeMain(void) { }
index e736b8f756e001aa3d612786241e35c695c25e13..ca47e91ab49ba83194c73793fa7d324925637a34 100644 (file)
@@ -73,7 +73,7 @@ protected:
 // Cocoa specifics
 // ------------------------------------------------------------------------
 protected:
-    virtual void Cocoa_close(void);
+    virtual void CocoaDelegate_windowWillClose(void);
     virtual bool Cocoa_canBecomeMainWindow(bool &canBecome)
     {   canBecome = true; return true; }
 
index 20ca43150a7b209ba4f8268af392759f42b0d0c2..e09873628d4a01e8dbb606c6bccfae0d16bcc062 100644 (file)
@@ -61,7 +61,7 @@ protected:
 // ------------------------------------------------------------------------
 public:
     inline WX_NSWindow GetNSWindow() { return m_cocoaNSWindow; }
-    virtual void Cocoa_close(void);
+    virtual void CocoaDelegate_windowWillClose(void);
     virtual bool CocoaDelegate_windowShouldClose(void);
     virtual void CocoaDelegate_windowDidBecomeKey(void);
     virtual void CocoaDelegate_windowDidResignKey(void);
index e3c1446d78fb30189148e7b817a5ebf77220d254..57edbce7ea15636cf24a64fd584a4f9ff50e7f2e 100644 (file)
@@ -42,6 +42,7 @@
 - (void)windowDidBecomeMain: (NSNotification *)notification;
 - (void)windowDidResignMain: (NSNotification *)notification;
 - (BOOL)windowShouldClose: (id)sender;
+- (void)windowWillClose: (NSNotification *)notification;
 @end //interface wxNSWindowDelegate
 
 @implementation wxNSWindowDelegate : NSObject
     return YES;
 }
 
+- (void)windowWillClose: (NSNotification *)notification
+{
+    wxCocoaNSWindow *win = wxCocoaNSWindow::GetFromCocoa([notification object]);
+    wxCHECK_RET(win,"windowWillClose received but no wxWindow exists");
+    win->CocoaDelegate_windowWillClose();
+}
+
 @end //implementation wxNSWindowDelegate
 
 // ============================================================================
@@ -123,22 +131,12 @@ void wxCocoaNSWindow::DisassociateNSWindow(WX_NSWindow cocoaNSWindow)
 {
 }
 
-- (void)close;
 - (BOOL)canBecomeMainWindow;
 @end // wxPoserNSwindow
 
 WX_IMPLEMENT_POSER(wxPoserNSWindow);
 @implementation wxPoserNSWindow : NSWindow
 
-- (void)close
-{
-    wxLogDebug("close");
-    wxCocoaNSWindow *tlw = wxCocoaNSWindow::GetFromCocoa(self);
-    if(tlw)
-        tlw->Cocoa_close();
-    [super close];
-}
-
 - (BOOL)canBecomeMainWindow
 {
     bool canBecome = false;
index d4d2c51fd6b7bf26763a9224ec2d665465056abe..01df17f2c358e4690d40ecbe1258dcd2dc5b0051 100644 (file)
@@ -90,7 +90,7 @@ wxDialog::~wxDialog()
     DisassociateNSPanel(GetNSPanel());
 }
 
-void wxDialog::Cocoa_close(void)
+void wxDialog::CocoaDelegate_windowWillClose(void)
 {
     m_closed = true;
     /* Actually, this isn't true anymore */
index c51f22719aa2b760bc26fd123aba18111178055f..453ad124a36492674b46bf598604d5491fab5e50 100644 (file)
@@ -186,7 +186,7 @@ void wxTopLevelWindowCocoa::CocoaDelegate_windowDidResignMain(void)
     wxMenuBarManager::GetInstance()->WindowDidResignMain(this);
 }
 
-void wxTopLevelWindowCocoa::Cocoa_close(void)
+void wxTopLevelWindowCocoa::CocoaDelegate_windowWillClose(void)
 {
     m_closed = true;
     Destroy();
@@ -257,8 +257,8 @@ bool wxTopLevelWindowCocoa::Close(bool force)
     // will invoke windowShouldClose which will call the base class version
     // of Close() which will NOT Destroy() the window (see below) but
     // if closing is not stopped, then performClose will go ahead and
-    // close the window which will invoke Cocoa_close() setting m_closed
-    // to true and Destroy()ing the window.
+    // close the window which will send the close notifications setting
+    // m_closed to true and Destroy()ing the window.
     [m_cocoaNSWindow performClose:m_cocoaNSWindow];
     return m_closed;
 }