#pragma hdrstop
#endif
-#if wxUSE_MSGDLG && defined(__WXGTK20__)
+#if wxUSE_MSGDLG && defined(__WXGTK20__) && !defined(__WXGPE__)
#include "wx/gtk/private.h"
#include <gtk/gtk.h>
m_caption = caption;
m_message = message;
m_dialogStyle = style;
- m_parent = parent;
+ m_parent = wxGetTopLevelParent(parent);
}
int wxMessageDialog::ShowModal()
{
GtkWidget *dlg;
- GtkMessageType type;
+ GtkMessageType type = GTK_MESSAGE_ERROR;
GtkButtonsType buttons = GTK_BUTTONS_OK;
-
+
if (m_dialogStyle & wxYES_NO)
{
buttons = GTK_BUTTONS_YES_NO;
else
buttons = GTK_BUTTONS_OK;
}
-
+
if (m_dialogStyle & wxICON_EXCLAMATION)
type = GTK_MESSAGE_WARNING;
else if (m_dialogStyle & wxICON_ERROR)
type = GTK_MESSAGE_INFO;
else if (m_dialogStyle & wxICON_QUESTION)
type = GTK_MESSAGE_QUESTION;
+ else
+ {
+ // GTK+ doesn't have a "typeless" msg box, so try to auto detect...
+ type = m_dialogStyle & wxYES ? GTK_MESSAGE_QUESTION : GTK_MESSAGE_INFO;
+ }
dlg = gtk_message_dialog_new(m_parent ?
GTK_WINDOW(m_parent->m_widget) : NULL,
else
gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_YES);
}
-
+
gint result = gtk_dialog_run(GTK_DIALOG(dlg));
gtk_widget_destroy(dlg);
wxFAIL_MSG(_T("unexpected GtkMessageDialog return code"));
// fall through
- case GTK_RESPONSE_CANCEL:
+ case GTK_RESPONSE_CANCEL:
return wxID_CANCEL;
case GTK_RESPONSE_OK:
return wxID_OK;