X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9d551f6a20a33fc94a824f7d7253e07dd6481f9..0738b901b17340f09766524b8d9d79e9ed1268e7:/src/osx/textctrl_osx.cpp diff --git a/src/osx/textctrl_osx.cpp b/src/osx/textctrl_osx.cpp index 1059c4b6c6..6edd282e97 100644 --- a/src/osx/textctrl_osx.cpp +++ b/src/osx/textctrl_osx.cpp @@ -119,7 +119,13 @@ bool wxTextCtrl::Create( wxWindow *parent, m_peer = wxWidgetImpl::CreateTextControl( this, GetParent(), GetId(), str, pos, size, style, GetExtraStyle() ); MacPostControlCreate(pos, size) ; - + +#if wxOSX_USE_COCOA + // under carbon everything can already be set before the MacPostControlCreate embedding takes place + // but under cocoa for single line textfields this only works after everything has been set up + GetTextPeer()->SetStringValue(str); +#endif + // only now the embedding is correct and we can do a positioning update MacSuperChangedPosition() ; @@ -134,7 +140,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxTextWidgetImpl* wxTextCtrl::GetTextPeer() const { - return dynamic_cast (m_peer); + return dynamic_cast (m_peer); } void wxTextCtrl::MacSuperChangedPosition() @@ -367,6 +373,11 @@ wxSize wxTextCtrl::DoGetBestSize() const return wxSize(wText, hText); } +bool wxTextCtrl::GetStyle(long position, wxTextAttr& style) +{ + return GetTextPeer()->GetStyle(position, style); +} + // ---------------------------------------------------------------------------- // Undo/redo // ---------------------------------------------------------------------------- @@ -473,7 +484,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) return ; } - if ( !IsEditable() && key != WXK_LEFT && key != WXK_RIGHT && key != WXK_DOWN && key != WXK_UP && key != WXK_TAB && + if ( !IsEditable() && !event.IsKeyInCategory(WXK_CATEGORY_ARROW | WXK_CATEGORY_TAB) && !( key == WXK_RETURN && ( (m_windowStyle & wxTE_PROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) ) // && key != WXK_PAGEUP && key != WXK_PAGEDOWN && key != WXK_HOME && key != WXK_END ) @@ -486,8 +497,8 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) // allow navigation and deletion GetSelection( &from, &to ); if ( !IsMultiLine() && m_maxLength && GetValue().length() >= m_maxLength && - key != WXK_LEFT && key != WXK_RIGHT && key != WXK_TAB && key != WXK_UP && key != WXK_DOWN && - key != WXK_BACK && key != WXK_DELETE && !( key == WXK_RETURN && (m_windowStyle & wxTE_PROCESS_ENTER) ) && + !event.IsKeyInCategory(WXK_CATEGORY_ARROW | WXK_CATEGORY_TAB | WXK_CATEGORY_CUT) && + !( key == WXK_RETURN && (m_windowStyle & wxTE_PROCESS_ENTER) ) && from == to ) { // eat it, we don't want to add more than allowed # of characters @@ -580,6 +591,8 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) event.Skip(true) ; } + // osx_cocoa sends its event upon insertText +#if wxOSX_USE_CARBON if ( ( key >= 0x20 && key < WXK_START ) || ( key >= WXK_NUMPAD0 && key <= WXK_DIVIDE ) || key == WXK_RETURN || @@ -590,6 +603,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event) event1.SetEventObject( this ); wxPostEvent( GetEventHandler(), event1 ); } +#endif } // ---------------------------------------------------------------------------- @@ -715,6 +729,12 @@ bool wxTextCtrl::MacSetupCursor( const wxPoint& pt ) // implementation base class // ---------------------------------------------------------------------------- +bool wxTextWidgetImpl::GetStyle(long WXUNUSED(position), + wxTextAttr& WXUNUSED(style)) +{ + return false; +} + void wxTextWidgetImpl::SetStyle(long WXUNUSED(start), long WXUNUSED(end), const wxTextAttr& WXUNUSED(style))