With wxTE_PROCESS_TAB, tabs are now inserted in the text control

by default. The new Navigate function can be used to do navigation
programmatically.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27807 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2004-06-15 14:03:06 +00:00
parent 1ab608ee00
commit 5f6cfda79f
7 changed files with 61 additions and 39 deletions

View File

@@ -1689,11 +1689,6 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
break;
case WXK_TAB:
// always produce navigation event -- even if we process TAB
// ourselves the fact that we got here means that the user code
// decided to skip processing of this TAB -- probably to let it
// do its default job.
// ok, so this is getting absolutely ridiculous but I don't see
// any other way to fix this bug: when a multiline text control is
// inside a wxFrame, we need to generate the navigation event as
@@ -1708,15 +1703,19 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
// the right thing to do would, of course, be to understand what
// the hell is IsDialogMessage() doing but this is beyond my feeble
// forces at the moment unfortunately
if ( FindFocus() == this )
if ( !(m_windowStyle & wxTE_PROCESS_TAB))
{
wxNavigationKeyEvent eventNav;
eventNav.SetDirection(!event.ShiftDown());
eventNav.SetWindowChange(event.ControlDown());
eventNav.SetEventObject(this);
if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
return;
if ( FindFocus() == this )
{
if (Navigate(!event.ShiftDown(), event.ControlDown()))
return;
}
}
else
{
// Insert tab since calling the default Windows handler
// doesn't seem to do it
WriteText(wxT("\t"));
}
break;
}