GetTextPeer() may be implemented directly in wxTextEntry under OS X, there is
no need to define it (identically) in wxTextCtrl and wxComboBox.
Also just call this method instead of duplicating its code in wxOSX
wxTextCtrl.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63878
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
WX_DECLARE_CONTROL_CONTAINER();
#endif
- // only used by the native Cocoa combobox, but we must define it everywhere
- // to maintain the wxTextEntry abstraction.
- virtual wxTextWidgetImpl * GetTextPeer() const;
-
#if wxOSX_USE_COCOA
wxComboWidgetImpl* GetComboPeer() const;
#endif
#include "wx/control.h"
#include "wx/textctrl.h"
-// forward decl for wxListWidgetImpl implementation type.
-class WXDLLIMPEXP_FWD_CORE wxTextWidgetImpl;
-
class WXDLLIMPEXP_CORE wxTextCtrl: public wxTextCtrlBase
{
DECLARE_DYNAMIC_CLASS(wxTextCtrl)
virtual void MacSuperChangedPosition();
virtual void MacCheckSpelling(bool check);
- virtual wxTextWidgetImpl * GetTextPeer() const;
protected:
// common part of all ctors
void Init();
return true;
}
-wxTextWidgetImpl* wxComboBox::GetTextPeer() const
-{
- return dynamic_cast<wxTextWidgetImpl*> (m_peer);
-}
-
wxComboWidgetImpl* wxComboBox::GetComboPeer() const
{
return dynamic_cast<wxComboWidgetImpl*> (m_peer);
return true;
}
-wxTextWidgetImpl* wxTextCtrl::GetTextPeer() const
-{
- return dynamic_cast<wxTextWidgetImpl*> (m_peer);
-}
-
void wxTextCtrl::MacSuperChangedPosition()
{
wxWindow::MacSuperChangedPosition() ;
wxTextWidgetImpl * wxTextEntry::GetTextPeer() const
{
- wxFAIL_MSG("You need to implement wxTextWidgetImpl* GetTextPeer() in your wxTextEntry subclass if you want to use the native impls of its methods.");
- return NULL;
+ wxWindow * const win = const_cast<wxTextEntry *>(this)->GetEditableWindow();
+
+ return win ? dynamic_cast<wxTextWidgetImpl *>(win->GetPeer()) : NULL;
}
+
#endif // wxUSE_TEXTCTRL