X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/23e00c551b1d9b109a0f82ae2906dea0cd4718c2..683df83d51c0f080e2e5210dc8115be0cb30d1ad:/src/osx/carbon/msgdlg.cpp diff --git a/src/osx/carbon/msgdlg.cpp b/src/osx/carbon/msgdlg.cpp index 29a23d18f1..6ce68371d1 100644 --- a/src/osx/carbon/msgdlg.cpp +++ b/src/osx/carbon/msgdlg.cpp @@ -19,6 +19,7 @@ #endif #include "wx/thread.h" +#include "wx/modalhook.h" #include "wx/osx/uma.h" @@ -30,40 +31,59 @@ wxMessageDialog::wxMessageDialog(wxWindow *parent, const wxString& caption, long style, const wxPoint& WXUNUSED(pos)) - : wxMessageDialogWithCustomLabels(parent, message, caption, style) + : wxMessageDialogBase(parent, message, caption, style) { } int wxMessageDialog::ShowModal() { + WX_HOOK_MODAL_DIALOG(); + int resultbutton = wxID_CANCEL; 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 +161,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 +219,9 @@ int wxMessageDialog::ShowModal() { DialogRef alertRef; CreateStandardAlert( alertType, cfTitle, cfText, ¶m, &alertRef ); + wxDialog::OSXBeginModalDialog(); RunStandardAlert( alertRef, NULL, &result ); + wxDialog::OSXEndModalDialog(); } else { @@ -248,5 +270,7 @@ int wxMessageDialog::ShowModal() } } + SetReturnCode(resultbutton); + return resultbutton; }