From e71a0aa95f767ab0302607b3c94dc155d72d5e61 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Sat, 7 Jun 2003 20:34:29 +0000 Subject: [PATCH] changing inheritance and delegation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20997 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/mac/combobox.h | 79 +++++++++++++++++++++---------------- src/mac/carbon/combobox.cpp | 43 +++++++++++++++----- src/mac/combobox.cpp | 43 +++++++++++++++----- 3 files changed, 111 insertions(+), 54 deletions(-) diff --git a/include/wx/mac/combobox.h b/include/wx/mac/combobox.h index a70341e7f6..5b73bc2b6b 100644 --- a/include/wx/mac/combobox.h +++ b/include/wx/mac/combobox.h @@ -23,12 +23,12 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxComboBoxNameStr; WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString; // Combobox item -class WXDLLEXPORT wxComboBox: public wxChoice +class WXDLLEXPORT wxComboBox: public wxComboBoxBase , public wxControl { DECLARE_DYNAMIC_CLASS(wxComboBox) public: - inline wxComboBox() {} + inline wxComboBox() {} virtual ~wxComboBox(); // override the base class virtuals involved in geometry calculations virtual wxSize DoGetBestSize() const; @@ -43,7 +43,7 @@ class WXDLLEXPORT wxComboBox: public wxChoice virtual void DelegateTextChanged( const wxString& value ); virtual void DelegateChoice( const wxString& value ); - inline wxComboBox(wxWindow *parent, wxWindowID id, + inline wxComboBox(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, @@ -51,11 +51,11 @@ class WXDLLEXPORT wxComboBox: public wxChoice long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr) - { + { Create(parent, id, value, pos, size, n, choices, style, validator, name); - } + } - bool Create(wxWindow *parent, wxWindowID id, + bool Create(wxWindow *parent, wxWindowID id, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, @@ -64,36 +64,47 @@ class WXDLLEXPORT wxComboBox: public wxChoice const wxValidator& validator = wxDefaultValidator, const wxString& name = wxComboBoxNameStr); - // List functions - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(); - virtual int GetSelection() const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& sel); - - // Text field functions - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); + // List functions + virtual void Delete(int n); + virtual void Clear(); + + virtual int GetSelection() const ; + virtual void SetSelection(int n); + virtual void Select(int n) { SetSelection(n) ; } + virtual int FindString(const wxString& s) const; + virtual wxString GetString(int n) const ; + virtual wxString GetStringSelection() const ; + virtual void SetString(int n, const wxString& s) ; + virtual bool SetStringSelection(const wxString& sel); + + // Text field functions + virtual wxString GetValue() const ; + virtual void SetValue(const wxString& value); + + // Clipboard operations + virtual void Copy(); + virtual void Cut(); + virtual void Paste(); + virtual void SetInsertionPoint(long pos); + virtual void SetInsertionPointEnd(); + virtual long GetInsertionPoint() const ; + virtual long GetLastPosition() const ; + virtual void Replace(long from, long to, const wxString& value); + virtual void Remove(long from, long to); + virtual void SetSelection(long from, long to); + virtual void SetEditable(bool editable); + virtual int GetCount() const { return m_choice->GetCount() ; } + void MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool mouseStillDown ) ; - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); - virtual int GetCount() const { return m_choice->GetCount() ; } - void MacHandleControlClick( WXWidget control , wxInt16 controlpart ) ; protected: + virtual int DoAppend(const wxString& item) ; + virtual int DoInsert(const wxString& item, int pos) ; + + virtual void DoSetItemClientData(int n, void* clientData) ; + virtual void* DoGetItemClientData(int n) const ; + virtual void DoSetItemClientObject(int n, wxClientData* clientData) ; + virtual wxClientData* DoGetItemClientObject(int n) const ; + // the subcontrols wxTextCtrl* m_text; wxChoice* m_choice; diff --git a/src/mac/carbon/combobox.cpp b/src/mac/carbon/combobox.cpp index 8ffecd0489..830e8564a7 100644 --- a/src/mac/carbon/combobox.cpp +++ b/src/mac/carbon/combobox.cpp @@ -402,21 +402,38 @@ void wxComboBox::SetSelection(long from, long to) // TODO } -void wxComboBox::Append(const wxString& item) +int wxComboBox::DoAppend(const wxString& item) { - // I am not sure what other ports do, - // but wxMac chokes on empty entries. + return m_choice->DoAppend( item ) ; +} - if (!item.IsEmpty()) - m_choice->DoAppend( item ); +int wxComboBox::DoInsert(const wxString& item, int pos) +{ + return m_choice->DoInsert( item , pos ) ; +} + +void wxComboBox::DoSetItemClientData(int n, void* clientData) +{ + return m_choice->SetClientData( n , clientData ) ; +} + +void* wxComboBox::DoGetItemClientData(int n) const +{ + return m_choice->GetClientData( n ) ; +} + +void wxComboBox::DoSetItemClientObject(int n, wxClientData* clientData) +{ + return m_choice->SetClientObject( n , clientData ) ; +} + +wxClientData* wxComboBox::DoGetItemClientObject(int n) const +{ + return m_choice->GetClientObject( n ) ; } void wxComboBox::Delete(int n) { - if ( HasClientObjectData() ) - { - SetClientObject(n, NULL); - } m_choice->Delete( n ); } @@ -471,7 +488,13 @@ bool wxComboBox::SetStringSelection(const wxString& sel) return FALSE; } -void wxComboBox::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 WXUNUSED(controlpart) ) +void wxComboBox::SetString(int n, const wxString& s) +{ + m_choice->SetString( n , s ) ; +} + + +void wxComboBox::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 WXUNUSED(controlpart) , bool WXUNUSED(mouseStillDown)) { wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId ); event.SetInt(GetSelection()); diff --git a/src/mac/combobox.cpp b/src/mac/combobox.cpp index 8ffecd0489..830e8564a7 100644 --- a/src/mac/combobox.cpp +++ b/src/mac/combobox.cpp @@ -402,21 +402,38 @@ void wxComboBox::SetSelection(long from, long to) // TODO } -void wxComboBox::Append(const wxString& item) +int wxComboBox::DoAppend(const wxString& item) { - // I am not sure what other ports do, - // but wxMac chokes on empty entries. + return m_choice->DoAppend( item ) ; +} - if (!item.IsEmpty()) - m_choice->DoAppend( item ); +int wxComboBox::DoInsert(const wxString& item, int pos) +{ + return m_choice->DoInsert( item , pos ) ; +} + +void wxComboBox::DoSetItemClientData(int n, void* clientData) +{ + return m_choice->SetClientData( n , clientData ) ; +} + +void* wxComboBox::DoGetItemClientData(int n) const +{ + return m_choice->GetClientData( n ) ; +} + +void wxComboBox::DoSetItemClientObject(int n, wxClientData* clientData) +{ + return m_choice->SetClientObject( n , clientData ) ; +} + +wxClientData* wxComboBox::DoGetItemClientObject(int n) const +{ + return m_choice->GetClientObject( n ) ; } void wxComboBox::Delete(int n) { - if ( HasClientObjectData() ) - { - SetClientObject(n, NULL); - } m_choice->Delete( n ); } @@ -471,7 +488,13 @@ bool wxComboBox::SetStringSelection(const wxString& sel) return FALSE; } -void wxComboBox::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 WXUNUSED(controlpart) ) +void wxComboBox::SetString(int n, const wxString& s) +{ + m_choice->SetString( n , s ) ; +} + + +void wxComboBox::MacHandleControlClick( WXWidget WXUNUSED(control) , wxInt16 WXUNUSED(controlpart) , bool WXUNUSED(mouseStillDown)) { wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId ); event.SetInt(GetSelection());