From 7921598f7f2c70e616faef0e607f9a1d7341d279 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 4 Nov 2007 17:03:13 +0000 Subject: [PATCH] no real changes, just left over code cleanup from attempts to fix the bug of the patch 1774701 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@49626 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/window.cpp | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 6877b795e7..1bd821d9f5 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1122,26 +1122,24 @@ gtk_window_key_press_callback( GtkWidget *widget, // win is a control: tab can be propagated up if ( !ret && - ((gdk_event->keyval == GDK_Tab) || (gdk_event->keyval == GDK_ISO_Left_Tab)) && -// VZ: testing for wxTE_PROCESS_TAB shouldn't be done here - the control may -// have this style, yet choose not to process this particular TAB in which -// case TAB must still work as a navigational character -// JS: enabling again to make consistent with other platforms -// (with wxTE_PROCESS_TAB you have to call Navigate to get default -// navigation behaviour) + (gdk_event->keyval == GDK_Tab || gdk_event->keyval == GDK_ISO_Left_Tab) #if wxUSE_TEXTCTRL - (! (win->HasFlag(wxTE_PROCESS_TAB) && win->IsKindOf(CLASSINFO(wxTextCtrl)) )) && + && !(win->HasFlag(wxTE_PROCESS_TAB) && wxDynamicCast(win, wxTextCtrl)) #endif - win->GetParent() && (win->GetParent()->HasFlag( wxTAB_TRAVERSAL)) ) + ) { - wxNavigationKeyEvent new_event; - new_event.SetEventObject( win->GetParent() ); - // GDK reports GDK_ISO_Left_Tab for SHIFT-TAB - new_event.SetDirection( (gdk_event->keyval == GDK_Tab) ); - // CTRL-TAB changes the (parent) window, i.e. switch notebook page - new_event.SetWindowChange( (gdk_event->state & GDK_CONTROL_MASK) ); - new_event.SetCurrentFocus( win ); - ret = win->GetParent()->GetEventHandler()->ProcessEvent( new_event ); + wxWindow * const parent = win->GetParent(); + if ( parent && parent->HasFlag(wxTAB_TRAVERSAL) ) + { + wxNavigationKeyEvent new_event; + new_event.SetEventObject( parent ); + // GDK reports GDK_ISO_Left_Tab for SHIFT-TAB + new_event.SetDirection( (gdk_event->keyval == GDK_Tab) ); + // CTRL-TAB changes the (parent) window, i.e. switch notebook page + new_event.SetWindowChange( (gdk_event->state & GDK_CONTROL_MASK) ); + new_event.SetCurrentFocus( win ); + ret = parent->GetEventHandler()->ProcessEvent( new_event ); + } } return ret;