]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/choicdgg.cpp
honour wxSP_ARROW_KEYS in wxSpinCtrlGeneric and don't handle the arrows unless it...
[wxWidgets.git] / src / generic / choicdgg.cpp
index fa3c19415bd479884041a577aa1afad3f2e54114..fb4eb2677da610b2d863848a5829f7c5aa74b1d7 100644 (file)
@@ -188,7 +188,7 @@ void *wxGetSingleChoiceData( const wxString& message,
     return res;
 }
 
-size_t wxGetMultipleChoices(wxArrayInt& selections,
+int wxGetSelectedChoices(wxArrayInt& selections,
                             const wxString& message,
                             const wxString& caption,
                             int n, const wxString *choices,
@@ -203,15 +203,19 @@ size_t wxGetMultipleChoices(wxArrayInt& selections,
     // deselects the first item which is selected by default
     dialog.SetSelections(selections);
 
-    if ( dialog.ShowModal() == wxID_OK )
-        selections = dialog.GetSelections();
-    else
-        selections.Empty();
+    if ( dialog.ShowModal() != wxID_OK )
+    {
+        // NB: intentionally do not clear the selections array here, the caller
+        //     might want to preserve its original contents if the dialog was
+        //     cancelled
+        return -1;
+    }
 
+    selections = dialog.GetSelections();
     return selections.GetCount();
 }
 
-size_t wxGetMultipleChoices(wxArrayInt& selections,
+int wxGetSelectedChoices(wxArrayInt& selections,
                             const wxString& message,
                             const wxString& caption,
                             const wxArrayString& aChoices,
@@ -222,7 +226,7 @@ size_t wxGetMultipleChoices(wxArrayInt& selections,
 {
     wxString *choices;
     int n = ConvertWXArrayToC(aChoices, &choices);
-    size_t res = wxGetMultipleChoices(selections, message, caption,
+    int res = wxGetSelectedChoices(selections, message, caption,
                                       n, choices, parent,
                                       x, y, centre, width, height);
     delete [] choices;
@@ -230,6 +234,50 @@ size_t wxGetMultipleChoices(wxArrayInt& selections,
     return res;
 }
 
+#if WXWIN_COMPATIBILITY_2_8
+size_t wxGetMultipleChoices(wxArrayInt& selections,
+                            const wxString& message,
+                            const wxString& caption,
+                            int n, const wxString *choices,
+                            wxWindow *parent,
+                            int x, int y,
+                            bool centre,
+                            int width, int height)
+{
+    int rc = wxGetSelectedChoices(selections, message, caption,
+                                  n, choices,
+                                  parent, x, y, centre, width, height);
+    if ( rc == -1 )
+    {
+        selections.clear();
+        return 0;
+    }
+
+    return rc;
+}
+
+size_t wxGetMultipleChoices(wxArrayInt& selections,
+                            const wxString& message,
+                            const wxString& caption,
+                            const wxArrayString& aChoices,
+                            wxWindow *parent,
+                            int x, int y,
+                            bool centre,
+                            int width, int height)
+{
+    int rc = wxGetSelectedChoices(selections, message, caption,
+                                  aChoices,
+                                  parent, x, y, centre, width, height);
+    if ( rc == -1 )
+    {
+        selections.clear();
+        return 0;
+    }
+
+    return rc;
+}
+#endif // WXWIN_COMPATIBILITY_2_8
+
 // ----------------------------------------------------------------------------
 // wxAnyChoiceDialog
 // ----------------------------------------------------------------------------