]> git.saurik.com Git - wxWidgets.git/commitdiff
reducing key event handling complexity
authorStefan Csomor <csomor@advancedconcepts.ch>
Sat, 26 Sep 2009 16:39:33 +0000 (16:39 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sat, 26 Sep 2009 16:39:33 +0000 (16:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62149 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/osx/cocoa/listbox.mm
src/osx/cocoa/textctrl.mm
src/osx/cocoa/window.mm

index 2ba3fde0e2e8d738088ef62dd41f17849c049d11..0e04dfb22c3ca6047b4d0963b2a067fe605aac8e 100644 (file)
@@ -150,7 +150,6 @@ public :
     virtual void            UpdateLineToEnd( unsigned int n);
 
     virtual void            controlDoubleAction(WXWidget slf, void* _cmd, void *sender);
-    virtual bool            DoHandleKeyEvent(NSEvent *event);
 
 protected :
     wxNSTableView*          m_tableView ;
@@ -512,18 +511,6 @@ void wxListWidgetCocoaImpl::controlDoubleAction(WXWidget WXUNUSED(slf),void* WXU
     list->HandleLineEvent( sel, true );
 }
 
-bool wxListWidgetCocoaImpl::DoHandleKeyEvent(NSEvent *event)
-{
-    wxKeyEvent wxevent(wxEVT_KEY_DOWN);
-    SetupKeyEvent( wxevent, event );
-    wxevent.SetEventObject(GetWXPeer());
-    bool result = GetWXPeer()->OSXHandleKeyEvent(wxevent);
-
-    // no interpretKeyEvents here, but rerouting to native keyhandling
-    
-    return result;
-}
-
 // accessing content
 
 
index 14bfab4447cc8ee365b228cf4033ce4bd93c2d76..13b2d9789769abd3fe80293cbd76120c557e70ed 100644 (file)
@@ -416,8 +416,10 @@ void wxNSTextViewControl::WriteText(const wxString& str)
     wxString st = str;
     wxMacConvertNewlines10To13( &st );
     wxMacEditHelper helper(m_textView);
-
+    NSEvent* formerEvent = m_lastKeyDownEvent;
+    m_lastKeyDownEvent = nil;
     [m_textView insertText:wxCFStringRef( st , m_wxPeer->GetFont().GetEncoding() ).AsNSString()];
+    m_lastKeyDownEvent = formerEvent;
 }
 
 void wxNSTextViewControl::SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack )
@@ -538,6 +540,8 @@ void wxNSTextFieldControl::SetSelection( long from , long to )
 
 void wxNSTextFieldControl::WriteText(const wxString& str)
 {
+    NSEvent* formerEvent = m_lastKeyDownEvent;
+    m_lastKeyDownEvent = nil;
     NSText* editor = [m_textField currentEditor];
     if ( editor )
     {
@@ -554,6 +558,7 @@ void wxNSTextFieldControl::WriteText(const wxString& str)
         SetStringValue( val ) ;
         SetSelection( start + str.length() , start + str.length() ) ;
     }
+    m_lastKeyDownEvent = formerEvent;
 }
 
 void wxNSTextFieldControl::controlAction(WXWidget WXUNUSED(slf),
index 064d7ab2340e1a1efb6616f59714b6dc2ff3fc46..3fa27c5d241a6eeddc2eb2eadb4c8e34ed6a2bf9 100644 (file)
@@ -881,11 +881,14 @@ void wxWidgetCocoaImpl::mouseEvent(WX_NSEvent event, WXWidget slf, void *_cmd)
 
 void wxWidgetCocoaImpl::keyEvent(WX_NSEvent event, WXWidget slf, void *_cmd)
 {
+    if ( [event type] == NSKeyDown )
+        m_lastKeyDownEvent = event;
     if ( GetFocusedViewInWindow([slf window]) != slf || m_hasEditor || !DoHandleKeyEvent(event) )
     {
         wxOSX_EventHandlerPtr superimpl = (wxOSX_EventHandlerPtr) [[slf superclass] instanceMethodForSelector:(SEL)_cmd];
         superimpl(slf, (SEL)_cmd, event);
     }
+    m_lastKeyDownEvent = NULL;
 }
 
 void wxWidgetCocoaImpl::insertText(NSString* text, WXWidget slf, void *_cmd)
@@ -895,7 +898,6 @@ void wxWidgetCocoaImpl::insertText(NSString* text, WXWidget slf, void *_cmd)
         wxOSX_TextEventHandlerPtr superimpl = (wxOSX_TextEventHandlerPtr) [[slf superclass] instanceMethodForSelector:(SEL)_cmd];
         superimpl(slf, (SEL)_cmd, text);
     }
-    m_lastKeyDownEvent = NULL;
 }
 
 
@@ -1578,9 +1580,9 @@ bool wxWidgetCocoaImpl::DoHandleKeyEvent(NSEvent *event)
 
     // this will fire higher level events, like insertText, to help
     // us handle EVT_CHAR, etc.
-    if ( !m_hasEditor && [event type] == NSKeyDown)
+
+    if ( m_wxPeer->MacIsUserPane() && [event type] == NSKeyDown)
     {
-        m_lastKeyDownEvent = event;
         if ( !result )
         {
             if ( [m_osxView isKindOfClass:[NSScrollView class] ] )
@@ -1590,6 +1592,7 @@ bool wxWidgetCocoaImpl::DoHandleKeyEvent(NSEvent *event)
             result = true;
         }
     }
+
     return result;
 }