X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a290fa5a7deebe9d96c0c0089d18e27d4bd9b624..fbc1d11bde64cc1cc826fecea7acf99ff288ca2d:/src/univ/combobox.cpp diff --git a/src/univ/combobox.cpp b/src/univ/combobox.cpp index 6e6db1fce3..ba970585ed 100644 --- a/src/univ/combobox.cpp +++ b/src/univ/combobox.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: univ/combobox.cpp +// Name: src/univ/combobox.cpp // Purpose: wxComboControl and wxComboBox implementation // Author: Vadim Zeitlin // Modified by: @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "univcombobox.h" -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ @@ -122,13 +118,15 @@ public: virtual ~wxComboListBox(); // implement wxComboPopup methods - virtual bool SetSelection(const wxString& value); - virtual void SetSelection(int n, bool select) - { wxListBox::SetSelection( n, select); }; + virtual bool SetSelection(const wxString& s); virtual wxControl *GetControl() { return this; } virtual void OnShow(); virtual wxCoord GetBestWidth() const; + // fix virtual function hiding + virtual void SetSelection(int n) { DoSetSelection(n, true); } + void SetSelection(int n, bool select) { DoSetSelection(n, select); } + protected: // we shouldn't return height too big from here virtual wxSize DoGetBestClientSize() const; @@ -310,7 +308,7 @@ wxSize wxComboControl::DoGetBestClientSize() const widthPopup = m_popup->GetBestWidth(); } - return wxSize(wxMax(sizeText.x + g_comboMargin + sizeBtn.x, widthPopup), + return wxSize(wxMax(sizeText.x + g_comboMargin + sizeBtn.x, widthPopup), wxMax(sizeBtn.y, sizeText.y)); } @@ -365,7 +363,7 @@ bool wxComboControl::Show(bool show) #if wxUSE_TOOLTIPS void wxComboControl::DoSetToolTip(wxToolTip *tooltip) { - wxControl::DoSetToolTip(tooltip); + wxControl::DoSetToolTip(tooltip); // Set tool tip for button and text box if (m_text && m_btn) @@ -574,7 +572,7 @@ void wxComboListBox::OnSelect(wxCommandEvent& event) event2.SetId(m_combo->GetId()); m_combo->ProcessEvent(event2); } - //else: ignore the events resultign from just moving the mouse initially + //else: ignore the events resulting from just moving the mouse initially } void wxComboListBox::OnShow() @@ -612,7 +610,7 @@ void wxComboListBox::OnMouseMove(wxMouseEvent& event) // while a wxComboListBox is shown, it always has capture, so if it doesn't // we're about to go away anyhow (normally this shouldn't happen at all, // but I don't put assert here as it just might do on other platforms and - // it doesn't break anythign anyhow) + // it doesn't break anything anyhow) if ( this == wxWindow::GetCapture() ) { if ( HitTest(event.GetPosition()) == wxHT_WINDOW_INSIDE ) @@ -763,7 +761,7 @@ long wxComboBox::GetInsertionPoint() const return GetText()->GetInsertionPoint(); } -long wxComboBox::GetLastPosition() const +wxTextPos wxComboBox::GetLastPosition() const { return GetText()->GetLastPosition(); } @@ -827,12 +825,12 @@ void wxComboBox::SetString(int n, const wxString& s) GetLBox()->SetString(n, s); } -int wxComboBox::FindString(const wxString& s) const +int wxComboBox::FindString(const wxString& s, bool bCase) const { - return GetLBox()->FindString(s); + return GetLBox()->FindString(s, bCase); } -void wxComboBox::Select(int n) +void wxComboBox::SetSelection(int n) { wxCHECK_RET( (n >= 0) && (n < GetCount()), _T("invalid index in wxComboBox::Select") ); @@ -845,9 +843,9 @@ int wxComboBox::GetSelection() const #if 1 // FIXME:: What is the correct behavior? // if the current value isn't one of the listbox strings, return -1 return GetLBox()->GetSelection(); -#else - // Why oh why is this done this way? - // It is not because the value displayed in the text can be found +#else + // Why oh why is this done this way? + // It is not because the value displayed in the text can be found // in the list that it is the item that is selected! return FindString(GetText()->GetValue()); #endif @@ -890,6 +888,69 @@ wxClientData* wxComboBox::DoGetItemClientObject(int n) const return GetLBox()->GetClientObject(n); } +bool wxComboBox::IsEditable() const +{ + return GetText() != NULL && (!HasFlag(wxCB_READONLY) || GetText()->IsEditable()); +} + +void wxComboBox::Undo() +{ + if (IsEditable()) + GetText()->Undo(); +} + +void wxComboBox::Redo() +{ + if (IsEditable()) + GetText()->Redo(); +} + +void wxComboBox::SelectAll() +{ + GetText()->SelectAll(); +} + +bool wxComboBox::CanCopy() const +{ + if (GetText() != NULL) + return GetText()->CanCopy(); + else + return false; +} + +bool wxComboBox::CanCut() const +{ + if (GetText() != NULL) + return GetText()->CanCut(); + else + return false; +} + +bool wxComboBox::CanPaste() const +{ + if (IsEditable()) + return GetText()->CanPaste(); + else + return false; +} + +bool wxComboBox::CanUndo() const +{ + if (IsEditable()) + return GetText()->CanUndo(); + else + return false; +} + +bool wxComboBox::CanRedo() const +{ + if (IsEditable()) + return GetText()->CanRedo(); + else + return false; +} + + // ---------------------------------------------------------------------------- // input handling // ----------------------------------------------------------------------------