Fix button order in wxGTK wxMessageDialog and wxStdDialogButtonSizer.
The order of buttons in wxGTK wxMessageDialog was accidentally broken since r55482 and wxStdDialogButtonSizer implementation for wxGTK was subsequently modified to work in the same way as the broken version of wxMessageDialog. Fix wxMessageDialog and remove the "compatibility" workarounds from wxStdDialogButtonSizer to restore correct behaviour in both places. Closes #12565. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65812 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -2526,29 +2526,6 @@ void wxStdDialogButtonSizer::SetCancelButton( wxButton *button )
|
||||
m_buttonCancel = button;
|
||||
}
|
||||
|
||||
#ifdef __WXGTK20__
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
// Returns true only if the button is non-NULL and has the given id and text
|
||||
// (possible translated).
|
||||
bool IsStdButtonWithStdText(wxButton *btn, wxWindowID id, const char *label)
|
||||
{
|
||||
if ( !btn )
|
||||
return false;
|
||||
|
||||
if ( btn->GetId() != id )
|
||||
return false;
|
||||
|
||||
const wxString labelText = btn->GetLabelText();
|
||||
return labelText == label || labelText == wxGetTranslation(label);
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
#endif // __WXGTK20__
|
||||
|
||||
void wxStdDialogButtonSizer::Realize()
|
||||
{
|
||||
#ifdef __WXMAC__
|
||||
@@ -2591,12 +2568,9 @@ void wxStdDialogButtonSizer::Realize()
|
||||
Add(12, 40);
|
||||
#elif defined(__WXGTK20__)
|
||||
// http://library.gnome.org/devel/hig-book/stable/windows-alert.html.en
|
||||
// describes the margins and the buttons order but basically it is
|
||||
// says that the correct button order is
|
||||
//
|
||||
// [Help] [Alternative] [Cancel] [Affirmative]
|
||||
//
|
||||
// in general case but, somewhat confusingly, the native message box
|
||||
// uses "No Yes Cancel" with these particular buttons so do we as well.
|
||||
|
||||
// Flags ensuring that margins between the buttons are 6 pixels.
|
||||
const wxSizerFlags
|
||||
@@ -2611,19 +2585,6 @@ void wxStdDialogButtonSizer::Realize()
|
||||
// Align the rest of the buttons to the right.
|
||||
AddStretchSpacer();
|
||||
|
||||
// "No Yes Cancel" is an exception to the general rule according to
|
||||
// which the affirmative buttons goes after "Cancel" so treat it
|
||||
// separately
|
||||
if ( IsStdButtonWithStdText(m_buttonNegative, wxID_NO, "No") &&
|
||||
IsStdButtonWithStdText(m_buttonAffirmative, wxID_YES, "Yes") &&
|
||||
IsStdButtonWithStdText(m_buttonCancel, wxID_CANCEL, "Cancel") )
|
||||
{
|
||||
Add(m_buttonNegative, flagsBtn);
|
||||
Add(m_buttonAffirmative, flagsBtn);
|
||||
Add(m_buttonCancel, flagsBtn);
|
||||
}
|
||||
else // Use standard layout
|
||||
{
|
||||
if (m_buttonNegative)
|
||||
Add(m_buttonNegative, flagsBtn);
|
||||
|
||||
@@ -2635,7 +2596,6 @@ void wxStdDialogButtonSizer::Realize()
|
||||
|
||||
if (m_buttonAffirmative)
|
||||
Add(m_buttonAffirmative, flagsBtn);
|
||||
}
|
||||
|
||||
// Ensure that the right margin is 12 as well.
|
||||
AddSpacer(9);
|
||||
|
@@ -215,16 +215,23 @@ void wxMessageDialog::GTKCreateMsgDialog()
|
||||
{
|
||||
if ( addButtons )
|
||||
{
|
||||
// Add the buttons in the correct order which is, according to
|
||||
// http://library.gnome.org/devel/hig-book/stable/windows-alert.html.en
|
||||
// the following one:
|
||||
//
|
||||
// [Help] [Alternative] [Cancel] [Affirmative]
|
||||
|
||||
gtk_dialog_add_button(dlg, wxGTK_CONV(GetNoLabel()),
|
||||
GTK_RESPONSE_NO);
|
||||
gtk_dialog_add_button(dlg, wxGTK_CONV(GetYesLabel()),
|
||||
GTK_RESPONSE_YES);
|
||||
|
||||
if ( m_dialogStyle & wxCANCEL )
|
||||
{
|
||||
gtk_dialog_add_button(dlg, wxGTK_CONV(GetCancelLabel()),
|
||||
GTK_RESPONSE_CANCEL);
|
||||
}
|
||||
|
||||
gtk_dialog_add_button(dlg, wxGTK_CONV(GetYesLabel()),
|
||||
GTK_RESPONSE_YES);
|
||||
}
|
||||
|
||||
// it'd probably be harmless to call gtk_dialog_set_default_response()
|
||||
|
Reference in New Issue
Block a user