]> git.saurik.com Git - wxWidgets.git/commitdiff
Added dialog tabbing to wxX11.
authorRobert Roebling <robert@roebling.de>
Tue, 12 Mar 2002 22:15:41 +0000 (22:15 +0000)
committerRobert Roebling <robert@roebling.de>
Tue, 12 Mar 2002 22:15:41 +0000 (22:15 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/x11/app.cpp

index 77427f44232eb6648d95c5fd33a85a2491142c2b..56b32f21aa1b0f9be3b882b36d7ccb0899c833f6 100644 (file)
@@ -486,15 +486,28 @@ bool wxApp::ProcessXEvent(WXEvent* _event)
                     
             // wxLogDebug( "OnKey from %s", win->GetName().c_str() );
         
-            // We didn't process wxEVT_KEY_DOWN, so send
-            // wxEVT_CHAR
-            if (!win->GetEventHandler()->ProcessEvent( keyEvent ))
+            // We didn't process wxEVT_KEY_DOWN, so send wxEVT_CHAR
+            if (win->GetEventHandler()->ProcessEvent( keyEvent ))
+                return TRUE;
+                
+            keyEvent.SetEventType(wxEVT_CHAR);
+            if (win->GetEventHandler()->ProcessEvent( keyEvent ))
+                return TRUE;
+            
+            if ( (keyEvent.m_keyCode == WXK_TAB) &&
+                 win->GetParent() && (win->GetParent()->HasFlag( wxTAB_TRAVERSAL)) )
             {
-                keyEvent.SetEventType(wxEVT_CHAR);
-                if (!win->GetEventHandler()->ProcessEvent( keyEvent ))
-                    return FALSE;
+                wxNavigationKeyEvent new_event;
+                new_event.SetEventObject( win->GetParent() );
+                /* GDK reports GDK_ISO_Left_Tab for SHIFT-TAB */
+                new_event.SetDirection( (keyEvent.m_keyCode == WXK_TAB) );
+                /* CTRL-TAB changes the (parent) window, i.e. switch notebook page */
+                new_event.SetWindowChange( keyEvent.ControlDown() );
+                new_event.SetCurrentFocus( win );
+                return win->GetParent()->GetEventHandler()->ProcessEvent( new_event );
             }
-            return TRUE;
+
+            return FALSE;
         }
         case KeyRelease:
         {