]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/toplevel_osx.cpp
No real changes, just make wxWindow::CanScroll() virtual.
[wxWidgets.git] / src / osx / toplevel_osx.cpp
index 1886e988c9bb4be69477ff7a627b9d23abb19b3b..b0dc8209047823ada3ca5071368aa935ec0fedcf 100644 (file)
@@ -1,12 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        src/osx/toplevel.cpp
+// Name:        src/osx/toplevel_osx.cpp
 // Purpose:     implements wxTopLevelWindow for Mac
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     24.09.01
-// RCS-ID:      $Id$
 // Copyright:   (c) 2001-2004 Stefan Csomor
-// License:     wxWindows licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -83,10 +82,38 @@ bool wxTopLevelWindowMac::Create(wxWindow *parent,
     return true;
 }
 
+bool wxTopLevelWindowMac::Create(wxWindow *parent,
+                                 WXWindow nativeWindow)
+{
+    if ( !wxNonOwnedWindow::Create(parent, nativeWindow ) )
+        return false;
+
+    wxTopLevelWindows.Append(this);
+
+    return true;
+}
+
 wxTopLevelWindowMac::~wxTopLevelWindowMac()
 {
 }
 
+bool wxTopLevelWindowMac::Destroy()
+{
+    // NB: this will get called during destruction if we don't do it now,
+    // and may fire a kill focus event on a control being destroyed
+#if wxOSX_USE_CARBON
+    if (m_nowpeer && m_nowpeer->GetWXWindow())
+        ClearKeyboardFocus( (WindowRef)m_nowpeer->GetWXWindow() );
+#endif
+    // delayed destruction: the tlw will be deleted during the next idle
+    // loop iteration
+    if ( !wxPendingDelete.Member(this) )
+        wxPendingDelete.Append(this);
+    
+    Hide();
+    return true;
+}
+
 
 // ----------------------------------------------------------------------------
 // wxTopLevelWindowMac maximize/minimize
@@ -100,6 +127,9 @@ void wxTopLevelWindowMac::Maximize(bool maximize)
 
 bool wxTopLevelWindowMac::IsMaximized() const
 {
+    if ( m_nowpeer == NULL )
+        return false;
+
     return m_nowpeer->IsMaximized();
 }
 
@@ -111,6 +141,9 @@ void wxTopLevelWindowMac::Iconize(bool iconize)
 
 bool wxTopLevelWindowMac::IsIconized() const
 {
+    if ( m_nowpeer == NULL )
+        return false;
+
     return m_nowpeer->IsIconized();
 }
 
@@ -133,8 +166,10 @@ wxPoint wxTopLevelWindowMac::GetClientAreaOrigin() const
 
 void wxTopLevelWindowMac::SetTitle(const wxString& title)
 {
-    wxWindow::SetLabel( title ) ;
-    m_nowpeer->SetTitle(title, GetFont().GetEncoding() );
+    m_label = title ;
+
+    if ( m_nowpeer )
+        m_nowpeer->SetTitle(title, GetFont().GetEncoding() );
 }
 
 wxString wxTopLevelWindowMac::GetTitle() const
@@ -142,6 +177,19 @@ wxString wxTopLevelWindowMac::GetTitle() const
     return wxWindow::GetLabel();
 }
 
+void wxTopLevelWindowMac::ShowWithoutActivating()
+{
+    // wxTopLevelWindowBase is derived from wxNonOwnedWindow, so don't
+    // call it here.
+    if ( !wxWindow::Show(true) )
+        return;
+
+    m_nowpeer->ShowWithoutActivating();
+
+    // because apps expect a size event to occur at this moment
+    SendSizeEvent();
+}
+
 bool wxTopLevelWindowMac::ShowFullScreen(bool show, long style)
 {
     return m_nowpeer->ShowFullScreen(show, style);
@@ -156,3 +204,23 @@ void wxTopLevelWindowMac::RequestUserAttention(int flags)
 {
     return m_nowpeer->RequestUserAttention(flags);
 }
+
+bool wxTopLevelWindowMac::IsActive()
+{
+    return m_nowpeer->IsActive();
+}
+
+void wxTopLevelWindowMac::OSXSetModified(bool modified)
+{
+    m_nowpeer->SetModified(modified);
+}
+
+bool wxTopLevelWindowMac::OSXIsModified() const
+{
+    return m_nowpeer->IsModified();
+}
+
+void wxTopLevelWindowMac::SetRepresentedFilename(const wxString& filename)
+{
+    m_nowpeer->SetRepresentedFilename(filename);
+}