diff -r e5618cc85d74 -r 6c158198356e javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtevents.cpp --- a/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtevents.cpp Thu Jul 15 18:31:06 2010 +0300 +++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/src/swtevents.cpp Thu Aug 19 09:48:13 2010 +0300 @@ -303,17 +303,15 @@ if (iControl.IsFocusControl()) { // Find the Control's Shell - MSwtShell* shell; MSwtControl* ctrl = &iControl; - while ((shell = ctrl->ShellInterface()) == NULL) - { - ctrl = ctrl->GetParent()->Control(); - } + MSwtShell& shell = ctrl->GetShell(); // Find next focusable control - MSwtControl* newFocus = shell->FindTraversalTargetL(iDetail, iControl); + MSwtControl* newFocus = shell.FindTraversalTargetL(iDetail, iControl); if (newFocus) { + shell.Display().UiUtils().SetNaviKeyInput(ETrue); + newFocus->PrepareForTraverse(); newFocus->CoeControl().SetFocus(ETrue, ENoDrawNow); } }