]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxCANCEL_DEFAULT style to wxMessageDialog (only implemented for MSW for now...
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 11 Sep 2008 23:37:35 +0000 (23:37 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 11 Sep 2008 23:37:35 +0000 (23:37 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/msgdlg.h
interface/wx/msgdlg.h
src/msw/msgdlg.cpp

index cb0268bff5e60d68d264b8bea45094f95fba73ac..9a8617c5d67aa10725d5b26baf65c35578f6143c 100644 (file)
@@ -309,6 +309,7 @@ All (GUI):
 - Added wxWrapSizer (Arne Steinarson)
 - Added wxSpinCtrlDouble (John Labenski)
 - Support custom labels in wxMessageDialog (Gareth Simpson for wxMac version).
+- Also added wxCANCEL_DEFAULT to wxMessageDialog.
 - Allow copying text in the log dialogs.
 - Added multisample (anti-aliasing) support to wxGLCanvas (Olivier Playez).
 - Initialize wx{Client,Paint,Window}DC with fonts/colours of its window.
index 7dbffe33a3e4855c6096e51f106f136cd9b8a20a..0b9de3f1f788c613ec2cec4f9ed0a18ae9b7af27 100644 (file)
@@ -143,9 +143,24 @@ public:
         wxASSERT_MSG( ((style & wxYES_NO) == wxYES_NO) || !(style & wxYES_NO),
                       "wxYES and wxNO may only be used together" );
 
+        wxASSERT_MSG( !(style & wxYES) || !(style & wxOK),
+                      "wxOK and wxYES/wxNO can't be used together" );
+
+        wxASSERT_MSG( (style & wxYES) || (style & wxOK),
+                      "one of wxOK and wxYES/wxNO must be used" );
+
         wxASSERT_MSG( (style & wxID_OK) != wxID_OK,
                       "wxMessageBox: Did you mean wxOK (and not wxID_OK)?" );
 
+        wxASSERT_MSG( !(style & wxNO_DEFAULT) || (style & wxNO),
+                      "wxNO_DEFAULT is invalid without wxNO" );
+
+        wxASSERT_MSG( !(style & wxCANCEL_DEFAULT) || (style & wxCANCEL),
+                      "wxCANCEL_DEFAULT is invalid without wxCANCEL" );
+
+        wxASSERT_MSG( !(style & wxCANCEL_DEFAULT) || !(style & wxNO_DEFAULT),
+                      "only one default button can be specified" );
+
         m_dialogStyle = style;
     }
 
index 87f91584518ee008baab4a6071e4b8bd81d0e7f1..e484febad13f39ca72702656cd3e9c8b7ce80b0a 100644 (file)
@@ -39,9 +39,14 @@ public:
             @c wxCANCEL.
         @style{wxNO_DEFAULT}
             Makes the "No" button default, can only be used with @c wxYES_NO.
+        @style{wxCANCEL_DEFAULT}
+            Makes the "Cancel" button default, can only be used with @c wxCANCEL
         @style{wxYES_DEFAULT}
             Makes the "Yes" button default, this is the default behaviour and
             this flag exists solely for symmetry with @c wxNO_DEFAULT.
+        @style{wxOK_DEFAULT}
+            Makes the "OK" button default, this is the default behaviour and
+            this flag exists solely for symmetry with @c wxCANCEL_DEFAULT.
         @style{wxICON_EXCLAMATION}
             Displays an exclamation mark symbol.
         @style{wxICON_ERROR}
@@ -62,6 +67,11 @@ public:
             implemented only under MSW).
         @endStyleTable
 
+        Notice that not all styles are compatible: only one of @c wxOK and @c
+        wxYES_NO may be specified (and one of them must be specified) and at
+        most one default button style can be used and it is only valid if the
+        corresponding button is shown in the message box.
+
         @param parent
             Parent window.
         @param message
@@ -75,7 +85,7 @@ public:
     */
     wxMessageDialog(wxWindow* parent, const wxString& message,
                     const wxString& caption = "Message box",
-                    long style = wxOK | wxCANCEL,
+                    long style = wxOK | wxCENTRE,
                     const wxPoint& pos = wxDefaultPosition);
 
     /**
index 04e2e68262fda6f8d9f31937b0714543c05b970a..c0b9100fedc27dce6c2b05d240d087c83ae541b0 100644 (file)
@@ -446,9 +446,9 @@ int wxMessageDialog::ShowModal()
     HWND hWnd = m_parent ? GetHwndOf(m_parent) : NULL;
 
     // translate wx style in MSW
-    unsigned int msStyle = MB_OK;
+    unsigned int msStyle;
     const long wxStyle = GetMessageDialogStyle();
-    if (wxStyle & wxYES_NO)
+    if ( wxStyle & wxYES_NO )
     {
 #if !(defined(__SMARTPHONE__) && defined(__WXWINCE__))
         if (wxStyle & wxCANCEL)
@@ -457,17 +457,26 @@ int wxMessageDialog::ShowModal()
 #endif // !(__SMARTPHONE__ && __WXWINCE__)
             msStyle = MB_YESNO;
 
-        if (wxStyle & wxNO_DEFAULT)
+        if ( wxStyle & wxNO_DEFAULT )
             msStyle |= MB_DEFBUTTON2;
+        else if ( wxStyle & wxCANCEL_DEFAULT )
+            msStyle |= MB_DEFBUTTON3;
     }
-
-    if (wxStyle & wxOK)
+    else // without Yes/No we're going to have an OK button
     {
-        if (wxStyle & wxCANCEL)
+        if ( wxStyle & wxCANCEL )
+        {
             msStyle = MB_OKCANCEL;
-        else
+
+            if ( wxStyle & wxCANCEL_DEFAULT )
+                msStyle |= MB_DEFBUTTON2;
+        }
+        else // just "OK"
+        {
             msStyle = MB_OK;
+        }
     }
+
     if (wxStyle & wxICON_EXCLAMATION)
         msStyle |= MB_ICONEXCLAMATION;
     else if (wxStyle & wxICON_HAND)