X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4d3e2dc9935ab7d46ce7ede856b496591b0d0627..b0ae60498d2a1cab6cff09d425d235a0847135e8:/src/osx/cocoa/msgdlg.mm diff --git a/src/osx/cocoa/msgdlg.mm b/src/osx/cocoa/msgdlg.mm index ad44f55600..40ed938450 100644 --- a/src/osx/cocoa/msgdlg.mm +++ b/src/osx/cocoa/msgdlg.mm @@ -18,7 +18,10 @@ #include "wx/app.h" #endif +#include "wx/control.h" #include "wx/thread.h" +#include "wx/evtloop.h" +#include "wx/modalhook.h" #include "wx/osx/private.h" @@ -60,6 +63,10 @@ wxMessageDialog::~wxMessageDialog() int wxMessageDialog::ShowModal() { + WX_HOOK_MODAL_DIALOG(); + + wxCFEventLoopPauseIdleEvents pause; + int resultbutton = wxID_CANCEL; const long style = GetMessageDialogStyle(); @@ -94,10 +101,10 @@ int wxMessageDialog::ShowModal() wxCFStringRef cfTitle( msgtitle, GetFont().GetEncoding() ); wxCFStringRef cfText( msgtext, GetFont().GetEncoding() ); - wxCFStringRef cfNoString( GetNoLabel(), GetFont().GetEncoding() ); - wxCFStringRef cfYesString( GetYesLabel(), GetFont().GetEncoding() ); - wxCFStringRef cfOKString( GetOKLabel(), GetFont().GetEncoding()) ; - wxCFStringRef cfCancelString( GetCancelLabel(), GetFont().GetEncoding() ); + wxCFStringRef cfNoString( wxControl::GetLabelText(GetNoLabel()), GetFont().GetEncoding() ); + wxCFStringRef cfYesString( wxControl::GetLabelText(GetYesLabel()), GetFont().GetEncoding() ); + wxCFStringRef cfOKString( wxControl::GetLabelText(GetOKLabel()), GetFont().GetEncoding()) ; + wxCFStringRef cfCancelString( wxControl::GetLabelText(GetCancelLabel()), GetFont().GetEncoding() ); NSAlertStyle alertType = GetAlertStyleFromWXStyle(style); @@ -138,6 +145,8 @@ int wxMessageDialog::ShowModal() } } + wxASSERT_MSG( !(style & wxHELP), "wxHELP not supported in non-GUI thread" ); + CFOptionFlags exitButton; OSStatus err = CFUserNotificationDisplayAlert( 0, alertType, NULL, NULL, NULL, cfTitle, cfText, @@ -225,10 +234,10 @@ void* wxMessageDialog::ConstructNSAlert() NSAlert* alert = [[NSAlert alloc] init]; NSAlertStyle alertType = GetAlertStyleFromWXStyle(style); - wxCFStringRef cfNoString( GetNoLabel(), GetFont().GetEncoding() ); - wxCFStringRef cfYesString( GetYesLabel(), GetFont().GetEncoding() ); - wxCFStringRef cfOKString( GetOKLabel(), GetFont().GetEncoding() ); - wxCFStringRef cfCancelString( GetCancelLabel(), GetFont().GetEncoding() ); + wxCFStringRef cfNoString( wxControl::GetLabelText(GetNoLabel()), GetFont().GetEncoding() ); + wxCFStringRef cfYesString( wxControl::GetLabelText(GetYesLabel()), GetFont().GetEncoding() ); + wxCFStringRef cfOKString( wxControl::GetLabelText(GetOKLabel()), GetFont().GetEncoding() ); + wxCFStringRef cfCancelString( wxControl::GetLabelText(GetCancelLabel()), GetFont().GetEncoding() ); wxCFStringRef cfTitle( msgtitle, GetFont().GetEncoding() ); wxCFStringRef cfText( msgtext, GetFont().GetEncoding() ); @@ -285,5 +294,15 @@ void* wxMessageDialog::ConstructNSAlert() } } + + if ( style & wxHELP ) + { + wxCFStringRef cfHelpString( GetHelpLabel(), GetFont().GetEncoding() ); + [alert addButtonWithTitle:cfHelpString.AsNSString()]; + m_buttonId[ m_buttonCount++ ] = wxID_HELP; + } + + wxASSERT_MSG( m_buttonCount <= WXSIZEOF(m_buttonId), "Too many buttons" ); + return alert; }