X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cb5d54ff9e5fac3920f2ec8bd7e9c8e9fa661b49..43c5b6e808f083617eb42cb48e77366844f8fb5c:/src/generic/choicdgg.cpp diff --git a/src/generic/choicdgg.cpp b/src/generic/choicdgg.cpp index f36e0b2b75..fb4eb2677d 100644 --- a/src/generic/choicdgg.cpp +++ b/src/generic/choicdgg.cpp @@ -40,6 +40,7 @@ #endif #include "wx/statline.h" +#include "wx/settings.h" #include "wx/generic/choicdgg.h" // ---------------------------------------------------------------------------- @@ -187,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, @@ -202,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, @@ -221,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; @@ -229,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 // ---------------------------------------------------------------------------- @@ -263,7 +312,7 @@ bool wxAnyChoiceDialog::Create(wxWindow *parent, m_listbox->SetSelection(0); topsizer-> - Add(m_listbox, wxSizerFlags().Expand().TripleBorder(wxLEFT | wxRIGHT)); + Add(m_listbox, wxSizerFlags().Expand().Proportion(1).TripleBorder(wxLEFT | wxRIGHT)); // 3) buttons if any wxSizer * @@ -441,7 +490,7 @@ bool wxMultiChoiceDialog::Create( wxWindow *parent, #else styleLbox = wxLB_ALWAYS_SB | wxLB_EXTENDED; #endif - + if ( !wxAnyChoiceDialog::Create(parent, message, caption, n, choices, style, pos, @@ -484,11 +533,11 @@ void wxMultiChoiceDialog::SetSelections(const wxArrayInt& selections) { checkListBox->Check(selections[n]); } - + return; } #endif - + // first clear all currently selected items size_t n, count = m_listbox->GetCount();