]> git.saurik.com Git - wxWidgets.git/commitdiff
simplifying code, removing outdated API
authorStefan Csomor <csomor@advancedconcepts.ch>
Mon, 25 Jan 2010 22:27:42 +0000 (22:27 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Mon, 25 Jan 2010 22:27:42 +0000 (22:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63266 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/dialog.h
src/osx/carbon/dialog.cpp
src/osx/cocoa/dialog.mm
src/osx/dialog_osx.cpp

index 2544d290bb156471b2301ecb857c5bf4dd6094ab..17195a318a8db9b168fbdd08c61b6d9da3003eac 100644 (file)
@@ -50,10 +50,10 @@ public:
 //    virtual bool Destroy();
     virtual bool Show(bool show = true);
 
-    void SetModal(bool flag);
+    // return true if we're showing the dialog modally
     virtual bool IsModal() const;
 
-    // For now, same as Show(TRUE) but returns return code
+    // show the dialog modally and return the value passed to EndModal()
     virtual int ShowModal();
     
     virtual void ShowWindowModal();
@@ -64,10 +64,15 @@ public:
     // implementation
     // --------------
 
+    wxDialogModality GetModality() const;
+    
+protected:
     // show modal dialog and enter modal loop
     void DoShowModal();
+    
+    // show modal dialog and enter modal loop
+    void DoShowWindowModal();
 
-protected:
     // mac also takes command-period as cancel
     virtual bool IsEscapeKey(const wxKeyEvent& event);
 
@@ -77,7 +82,7 @@ protected:
 private:
     void Init();
 
-    bool m_isModalStyle;
+    wxDialogModality m_modality;
 };
 
 #endif
index a17700638088d822b1ea985ad9dcb46c61cab217..ad1c94796507cad6d219deb651fd3a6b21cbc7b7 100644 (file)
 #include "wx/osx/private.h"
 #include "wx/evtloop.h"
 
-extern wxList wxModalDialogs;
-
 void wxDialog::EndWindowModal()
 {
     // Nothing to do for now.
 }
 
-void wxDialog::ShowWindowModal()
+void wxDialog::DoShowWindowModal()
 {
     // If someone wants to add support for this to wxOSX Carbon, here would 
     // be the place to start: http://trac.wxwidgets.org/ticket/9459
@@ -41,9 +39,6 @@ void wxDialog::ShowWindowModal()
 
 void wxDialog::DoShowModal()
 {
-    wxCHECK_RET( !IsModal(), wxT("DoShowModal() called twice") );
-
-    wxModalDialogs.Append(this);
 
     SetFocus() ;
 
index 47a50ba404d311a4409670efab41d3a12aee35d6..42b4dcd35b73260c8ddd5d583ff8d2be7785cda8 100644 (file)
@@ -24,7 +24,7 @@
 
 extern wxList wxModalDialogs;
 
-void wxDialog::ShowWindowModal()
+void wxDialog::DoShowWindowModal()
 {   
     wxTopLevelWindow* parent = static_cast<wxTopLevelWindow*>(wxGetTopLevelParent(GetParent()));
     
@@ -32,8 +32,6 @@ void wxDialog::ShowWindowModal()
     
     NSWindow* parentWindow = parent->GetWXWindow();
     NSWindow* theWindow = GetWXWindow();
-
-    wxWindow::Show(true);
     
     [NSApp beginSheet: theWindow
             modalForWindow: parentWindow
@@ -49,8 +47,6 @@ void wxDialog::EndWindowModal()
 
 void wxDialog::DoShowModal()
 {
-    wxCHECK_RET( !IsModal(), wxT("DoShowModal() called twice") );
-
     // If the app hasn't started, flush the event queue
     // If we don't do this, the Dock doesn't get the message that
     // the app has started so will refuse to activate it.
@@ -64,8 +60,6 @@ void wxDialog::DoShowModal()
         }
     }
 
-    wxModalDialogs.Append(this);
-
     SetFocus() ;
 /*
     WindowGroupRef windowGroup;
index df4e2a4cc7ca15ad67954a9fbd52db1477aad661..02bde473d33da25fcdd5e222a92a2f214d013031 100644 (file)
@@ -32,7 +32,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxTopLevelWindow)
 
 void wxDialog::Init()
 {
-    m_isModalStyle = false;
+    m_modality = wxDIALOG_MODALITY_NONE;
 }
 
 bool wxDialog::Create( wxWindow *parent,
@@ -57,18 +57,6 @@ bool wxDialog::Create( wxWindow *parent,
     return true;
 }
 
-void wxDialog::SetModal( bool flag )
-{
-    if ( flag )
-    {
-        m_isModalStyle = true;
-    }
-    else
-    {
-        m_isModalStyle = false;
-    }
-}
-
 wxDialog::~wxDialog()
 {
     SendDestroyEvent();
@@ -89,16 +77,23 @@ bool wxDialog::IsEscapeKey(const wxKeyEvent& event)
 
 bool wxDialog::IsModal() const
 {
-    return wxModalDialogs.Find((wxDialog *)this) != NULL; // const_cast
-    //    return m_isModalStyle;
+    return m_modality != wxDIALOG_MODALITY_NONE;
 }
 
-
 bool wxDialog::Show(bool show)
 {
-    if ( !wxDialogBase::Show(show) )
-        // nothing to do
-        return false;
+    if ( m_modality == wxDIALOG_MODALITY_WINDOW_MODAL )
+    {
+        if ( !wxWindow::Show(show) )
+            // nothing to do
+            return false;
+    }
+    else 
+    {
+        if ( !wxDialogBase::Show(show) )
+            // nothing to do
+            return false;
+    }
 
     if (show && CanDoLayoutAdaptation())
         DoLayoutAdaptation();
@@ -107,48 +102,54 @@ bool wxDialog::Show(bool show)
         // usually will result in TransferDataToWindow() being called
         InitDialog();
 
-    if ( m_isModalStyle )
+    if ( !show )
     {
-        if ( show )
-        {
-            DoShowModal();
-        }
-        else // end of modal dialog
+        switch( m_modality )
         {
-            // this will cause IsModalShowing() return false and our local
-            // message loop will terminate
-            wxModalDialogs.DeleteObject(this);
+            case wxDIALOG_MODALITY_WINDOW_MODAL:
+                EndWindowModal(); // OS X implementation method for cleanup
+                SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED  );        
+                break;
+            default:
+                break;
         }
+        m_modality = wxDIALOG_MODALITY_NONE;
     }
-
+    
     return true;
 }
 
 // Replacement for Show(true) for modal dialogs - returns return code
 int wxDialog::ShowModal()
 {
-    if ( !m_isModalStyle )
-        SetModal(true);
+    m_modality = wxDIALOG_MODALITY_WINDOW_MODAL;
+    
+    Show();
 
-    if ( IsShown() )
-        DoShowModal();
-    else
-        Show(true);
+    DoShowModal();
 
     return GetReturnCode();
 }
 
+void wxDialog::ShowWindowModal()
+{
+    m_modality = wxDIALOG_MODALITY_WINDOW_MODAL;
+    
+    Show();
+    
+    DoShowWindowModal();
+}
+
+wxDialogModality wxDialog::GetModality() const
+{
+    return m_modality;
+}
+
 // NB: this function (surprisingly) may be called for both modal and modeless
 //     dialogs and should work for both of them
 void wxDialog::EndModal(int retCode)
 {
     SetReturnCode(retCode);
     Show(false);
-    SetModal(false);
-    if (GetModality() == wxDIALOG_MODALITY_WINDOW_MODAL)
-    {
-        EndWindowModal(); // OS X implementation method for cleanup
-        SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED  );
-    }
 }