X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/150c8eb9190be56e8d9f6c286324dda409d483d4..69f82505ec2cddcd3ecd8d8bed6af0bc3056e576:/src/gtk/msgdlg.cpp diff --git a/src/gtk/msgdlg.cpp b/src/gtk/msgdlg.cpp index 428b1e2720..0b2b5f9bb2 100644 --- a/src/gtk/msgdlg.cpp +++ b/src/gtk/msgdlg.cpp @@ -86,7 +86,9 @@ void wxMessageDialog::GTKCreateMsgDialog() #if wxUSE_LIBHILDON const char *stockIcon; - if ( m_dialogStyle & wxICON_ERROR ) + if ( m_dialogStyle & wxICON_NONE ) + stockIcon = ""; + else if ( m_dialogStyle & wxICON_ERROR ) stockIcon = "qgn_note_gene_syserror"; else if ( m_dialogStyle & wxICON_EXCLAMATION ) stockIcon = "qgn_note_gene_syswarning"; @@ -127,6 +129,11 @@ void wxMessageDialog::GTKCreateMsgDialog() } } +#ifdef __WXGTK210__ + if ( gtk_check_version(2, 10, 0) == NULL && (m_dialogStyle & wxICON_NONE)) + type = GTK_MESSAGE_OTHER; + else +#endif // __WXGTK210__ if (m_dialogStyle & wxICON_EXCLAMATION) type = GTK_MESSAGE_WARNING; else if (m_dialogStyle & wxICON_ERROR) @@ -137,7 +144,8 @@ void wxMessageDialog::GTKCreateMsgDialog() type = GTK_MESSAGE_QUESTION; else { - // GTK+ doesn't have a "typeless" msg box, so try to auto detect... + // if no style is explicitly specified, detect the suitable icon + // ourselves (this can be disabled by using wxICON_NONE) type = m_dialogStyle & wxYES ? GTK_MESSAGE_QUESTION : GTK_MESSAGE_INFO; } @@ -182,6 +190,11 @@ void wxMessageDialog::GTKCreateMsgDialog() GtkDialog * const dlg = GTK_DIALOG(m_widget); + if ( m_dialogStyle & wxSTAY_ON_TOP ) + { + gtk_window_set_keep_above(GTK_WINDOW(m_widget), TRUE); + } + // we need to add buttons manually if we use custom labels or always for // Yes/No/Cancel dialog as GTK+ doesn't support it natively and when using // Hildon we add all the buttons manually as it doesn't support too many of @@ -208,10 +221,16 @@ void wxMessageDialog::GTKCreateMsgDialog() } } - gtk_dialog_set_default_response(dlg, - m_dialogStyle & wxNO_DEFAULT - ? GTK_RESPONSE_NO - : GTK_RESPONSE_YES); + // it'd probably be harmless to call gtk_dialog_set_default_response() + // twice but why do it if we're going to change the default below + // anyhow + if ( !(m_dialogStyle & wxCANCEL_DEFAULT) ) + { + gtk_dialog_set_default_response(dlg, + m_dialogStyle & wxNO_DEFAULT + ? GTK_RESPONSE_NO + : GTK_RESPONSE_YES); + } } else if ( addButtons ) // Ok or Ok/Cancel dialog { @@ -222,6 +241,11 @@ void wxMessageDialog::GTKCreateMsgDialog() GTK_RESPONSE_CANCEL); } } + + if ( m_dialogStyle & wxCANCEL_DEFAULT ) + { + gtk_dialog_set_default_response(dlg, GTK_RESPONSE_CANCEL); + } } int wxMessageDialog::ShowModal() @@ -236,7 +260,7 @@ int wxMessageDialog::ShowModal() { GTKCreateMsgDialog(); wxCHECK_MSG( m_widget, wxID_CANCEL, - _T("failed to create GtkMessageDialog") ); + wxT("failed to create GtkMessageDialog") ); } // This should be necessary, but otherwise the @@ -252,7 +276,7 @@ int wxMessageDialog::ShowModal() switch (result) { default: - wxFAIL_MSG(_T("unexpected GtkMessageDialog return code")); + wxFAIL_MSG(wxT("unexpected GtkMessageDialog return code")); // fall through case GTK_RESPONSE_CANCEL: