]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/carbon/msgdlg.cpp
Fix crash in wxDC::GetMultiLineTextExtent() after last commit.
[wxWidgets.git] / src / osx / carbon / msgdlg.cpp
index 29a23d18f12b96360a117480b01bbfef78bdbae6..b0671595c9fc694f3215a9da5a2bad5c5ccd2789 100644 (file)
@@ -30,7 +30,7 @@ wxMessageDialog::wxMessageDialog(wxWindow *parent,
                                  const wxString& caption,
                                  long style,
                                  const wxPoint& WXUNUSED(pos))
-               : wxMessageDialogWithCustomLabels(parent, message, caption, style)
+               : wxMessageDialogBase(parent, message, caption, style)
 {
 }
 
@@ -40,30 +40,47 @@ int wxMessageDialog::ShowModal()
 
     const long style = GetMessageDialogStyle();
 
-    wxASSERT_MSG( (style & 0x3F) != wxYES, wxT("this style is not supported on Mac") );
+    wxASSERT_MSG( (style & 0x3F) != wxYES,
+        "this style is not supported on Mac" );
 
     AlertType alertType = kAlertPlainAlert;
-    if (style & wxICON_EXCLAMATION)
-        alertType = kAlertCautionAlert;
-    else if (style & wxICON_HAND)
-        alertType = kAlertStopAlert;
-    else if (style & wxICON_INFORMATION)
-        alertType = kAlertNoteAlert;
-    else if (style & wxICON_QUESTION)
-        alertType = kAlertNoteAlert;
-
-
-    // work out what to display
-    // if the extended text is empty then we use the caption as the title
-    // and the message as the text (for backwards compatibility)
-    // but if the extended message is not empty then we use the message as the title
-    // and the extended message as the text because that makes more sense
+
+    switch ( GetEffectiveIcon() )
+    {
+        case wxICON_ERROR:
+            alertType = kAlertStopAlert;
+            break;
+
+        case wxICON_WARNING:
+            alertType = kAlertCautionAlert;
+            break;
+
+        case wxICON_QUESTION:
+        case wxICON_INFORMATION:
+            alertType = kAlertNoteAlert;
+            break;
+    }
+
+    // (the standard alert has two slots [title, text]
+    //  for the three wxStrings [caption, message, extended message])
+    //
+    // if the extended text is empty we use the caption and
+    // the message (for backwards compatibility)
+    //
+    // if the extended text is not empty we ignore the caption
+    // and use the message and the extended message
+
 
     wxString msgtitle,msgtext;
     if(m_extendedMessage.IsEmpty())
     {
-        msgtitle = m_caption;
-        msgtext  = m_message;
+        if ( m_caption.IsEmpty() )
+            msgtitle = m_message;
+        else
+        {
+            msgtitle = m_caption;
+            msgtext  = m_message;
+        }
     }
     else
     {
@@ -141,7 +158,7 @@ int wxMessageDialog::ShowModal()
         wxCFStringRef cfCancelString( GetCancelLabel().c_str(), GetFont().GetEncoding() );
 
         wxCFStringRef cfTitle( msgtitle, GetFont().GetEncoding() );
-        wxCFStringRef cfText( msgtext, GetFont().GetEncoding() );
+        wxCFStringRef cfText = msgtext.IsEmpty() ? NULL : wxCFStringRef( msgtext, GetFont().GetEncoding() );
 
         param.movable = true;
         param.flags = 0;
@@ -199,7 +216,9 @@ int wxMessageDialog::ShowModal()
         {
             DialogRef alertRef;
             CreateStandardAlert( alertType, cfTitle, cfText, &param, &alertRef );
+            wxDialog::OSXBeginModalDialog();
             RunStandardAlert( alertRef, NULL, &result );
+            wxDialog::OSXEndModalDialog();
         }
         else
         {
@@ -248,5 +267,7 @@ int wxMessageDialog::ShowModal()
         }
     }
 
+    SetReturnCode(resultbutton);
+
     return resultbutton;
 }