- one single method for sending char events from a NSString
- adding insertText override for multiline fields as char events went missing after r74945 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -65,6 +65,8 @@ public:
|
|||||||
wxNSTextViewControl( wxTextCtrl *wxPeer, WXWidget w );
|
wxNSTextViewControl( wxTextCtrl *wxPeer, WXWidget w );
|
||||||
virtual ~wxNSTextViewControl();
|
virtual ~wxNSTextViewControl();
|
||||||
|
|
||||||
|
virtual void insertText(NSString* text, WXWidget slf, void *_cmd);
|
||||||
|
|
||||||
virtual wxString GetStringValue() const ;
|
virtual wxString GetStringValue() const ;
|
||||||
virtual void SetStringValue( const wxString &str) ;
|
virtual void SetStringValue( const wxString &str) ;
|
||||||
virtual void Copy() ;
|
virtual void Copy() ;
|
||||||
|
@@ -586,6 +586,15 @@ bool wxNSTextViewControl::CanFocus() const
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxNSTextViewControl::insertText(NSString* text, WXWidget slf, void *_cmd)
|
||||||
|
{
|
||||||
|
if ( m_lastKeyDownEvent ==NULL || !DoHandleCharEvent(m_lastKeyDownEvent, text) )
|
||||||
|
{
|
||||||
|
wxOSX_TextEventHandlerPtr superimpl = (wxOSX_TextEventHandlerPtr) [[slf superclass] instanceMethodForSelector:(SEL)_cmd];
|
||||||
|
superimpl(slf, (SEL)_cmd, text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
wxString wxNSTextViewControl::GetStringValue() const
|
wxString wxNSTextViewControl::GetStringValue() const
|
||||||
{
|
{
|
||||||
if (m_textView)
|
if (m_textView)
|
||||||
|
@@ -1388,26 +1388,7 @@ void wxWidgetCocoaImpl::insertText(NSString* text, WXWidget slf, void *_cmd)
|
|||||||
{
|
{
|
||||||
// If we don't have a corresponding key event (e.g. IME-composed
|
// If we don't have a corresponding key event (e.g. IME-composed
|
||||||
// characters), send wxEVT_CHAR without sending wxEVT_KEY_DOWN.
|
// characters), send wxEVT_CHAR without sending wxEVT_KEY_DOWN.
|
||||||
for (NSUInteger i = 0; i < [text length]; ++i)
|
result = DoHandleCharEvent(NULL,text);
|
||||||
{
|
|
||||||
wxKeyEvent wxevent(wxEVT_CHAR);
|
|
||||||
wxevent.m_shiftDown = wxevent.m_controlDown = wxevent.m_altDown = wxevent.m_metaDown = false;
|
|
||||||
wxevent.m_rawCode = 0;
|
|
||||||
wxevent.m_rawFlags = 0;
|
|
||||||
wxevent.SetTimestamp();
|
|
||||||
unichar aunichar = [text characterAtIndex:i];
|
|
||||||
#if wxUSE_UNICODE
|
|
||||||
wxevent.m_uniChar = aunichar;
|
|
||||||
#endif
|
|
||||||
wxevent.m_keyCode = aunichar < 0x80 ? aunichar : WXK_NONE;
|
|
||||||
wxWindowMac* peer = GetWXPeer();
|
|
||||||
if ( peer )
|
|
||||||
{
|
|
||||||
wxevent.SetEventObject(peer);
|
|
||||||
wxevent.SetId(peer->GetId());
|
|
||||||
}
|
|
||||||
result = GetWXPeer()->OSXHandleKeyEvent(wxevent) || result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( !result )
|
if ( !result )
|
||||||
@@ -2707,16 +2688,29 @@ void wxWidgetCocoaImpl::InstallEventHandler( WXWidget control )
|
|||||||
bool wxWidgetCocoaImpl::DoHandleCharEvent(NSEvent *event, NSString *text)
|
bool wxWidgetCocoaImpl::DoHandleCharEvent(NSEvent *event, NSString *text)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
wxWindowMac* peer = GetWXPeer();
|
||||||
for (NSUInteger i = 0; i < [text length]; ++i)
|
if ( peer )
|
||||||
{
|
{
|
||||||
wxKeyEvent wxevent(wxEVT_CHAR);
|
for (NSUInteger i = 0; i < [text length]; ++i)
|
||||||
unichar c = [text characterAtIndex:i];
|
{
|
||||||
SetupKeyEvent( wxevent, event, [NSString stringWithCharacters:&c length:1]);
|
wxKeyEvent wxevent(wxEVT_CHAR);
|
||||||
|
wxevent.m_shiftDown = wxevent.m_controlDown = wxevent.m_altDown = wxevent.m_metaDown = false;
|
||||||
|
wxevent.m_rawCode = 0;
|
||||||
|
wxevent.m_rawFlags = 0;
|
||||||
|
if ( event )
|
||||||
|
wxevent.SetTimestamp( (int)([event timestamp] * 1000) ) ;
|
||||||
|
unichar aunichar = [text characterAtIndex:i];
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
wxevent.m_uniChar = aunichar;
|
||||||
|
#endif
|
||||||
|
wxevent.m_keyCode = aunichar < 0x80 ? aunichar : WXK_NONE;
|
||||||
|
|
||||||
result = GetWXPeer()->OSXHandleKeyEvent(wxevent) || result;
|
wxevent.SetEventObject(peer);
|
||||||
|
wxevent.SetId(peer->GetId());
|
||||||
|
|
||||||
|
result = peer->OSXHandleKeyEvent(wxevent) || result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user