]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/choicdgg.cpp
fix compilation without wxUSE_STREAMS (closes #10900)
[wxWidgets.git] / src / generic / choicdgg.cpp
index d037f6255d2f41bcd442625a141d51967fcc2303..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
 // ----------------------------------------------------------------------------
@@ -302,11 +350,8 @@ bool wxAnyChoiceDialog::Create(wxWindow *parent,
 
 wxListBoxBase *wxAnyChoiceDialog::CreateList(int n, const wxString *choices, long styleLbox)
 {
-       wxSize size = wxDefaultSize;
-       if (wxSystemSettings::GetScreenType() > wxSYS_SCREEN_PDA)
-               size = wxSize(300, 200);
     return new wxListBox( this, wxID_LISTBOX,
-                          wxDefaultPosition, size,
+                          wxDefaultPosition, wxDefaultSize,
                           n, choices,
                           styleLbox );
 }
@@ -541,12 +586,8 @@ bool wxMultiChoiceDialog::TransferDataFromWindow()
 
 wxListBoxBase *wxMultiChoiceDialog::CreateList(int n, const wxString *choices, long styleLbox)
 {
-       wxSize size = wxDefaultSize;
-       if (wxSystemSettings::GetScreenType() > wxSYS_SCREEN_PDA)
-               size = wxSize(300, 200);
-
     return new wxCheckListBox( this, wxID_LISTBOX,
-                               wxDefaultPosition, size,
+                               wxDefaultPosition, wxDefaultSize,
                                n, choices,
                                styleLbox );
 }