]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix button order in wxGTK wxMessageDialog and wxStdDialogButtonSizer.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 15 Oct 2010 23:45:58 +0000 (23:45 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 15 Oct 2010 23:45:58 +0000 (23:45 +0000)
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

src/common/sizer.cpp
src/gtk/msgdlg.cpp

index 89eaacb15d9d6f592d3feefdfde2f44f8b63430b..535cae56c5bbea3a2d8e23e4f90cd7573a61b5ff 100644 (file)
@@ -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,31 +2585,17 @@ 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") )
-        {
+        if (m_buttonNegative)
             Add(m_buttonNegative, flagsBtn);
-            Add(m_buttonAffirmative, flagsBtn);
-            Add(m_buttonCancel, flagsBtn);
-        }
-        else // Use standard layout
-        {
-            if (m_buttonNegative)
-                Add(m_buttonNegative, flagsBtn);
 
-            if (m_buttonApply)
-                Add(m_buttonApply, flagsBtn);
+        if (m_buttonApply)
+            Add(m_buttonApply, flagsBtn);
 
-            if (m_buttonCancel)
-                Add(m_buttonCancel, flagsBtn);
+        if (m_buttonCancel)
+            Add(m_buttonCancel, flagsBtn);
 
-            if (m_buttonAffirmative)
-                Add(m_buttonAffirmative, flagsBtn);
-        }
+        if (m_buttonAffirmative)
+            Add(m_buttonAffirmative, flagsBtn);
 
         // Ensure that the right margin is 12 as well.
         AddSpacer(9);
index 5275bac3feaaaf2ca5cae270c7230c2bf8cb9c00..d459602f0b015e45e808ed465740d46808024ad6 100644 (file)
@@ -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()