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) { }
// Cocoa specifics
// ------------------------------------------------------------------------
protected:
- virtual void Cocoa_close(void);
+ virtual void CocoaDelegate_windowWillClose(void);
virtual bool Cocoa_canBecomeMainWindow(bool &canBecome)
{ canBecome = true; return true; }
// ------------------------------------------------------------------------
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);
- (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
// ============================================================================
{
}
-- (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;
DisassociateNSPanel(GetNSPanel());
}
-void wxDialog::Cocoa_close(void)
+void wxDialog::CocoaDelegate_windowWillClose(void)
{
m_closed = true;
/* Actually, this isn't true anymore */
wxMenuBarManager::GetInstance()->WindowDidResignMain(this);
}
-void wxTopLevelWindowCocoa::Cocoa_close(void)
+void wxTopLevelWindowCocoa::CocoaDelegate_windowWillClose(void)
{
m_closed = true;
Destroy();
// 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;
}