1081 bool WebView::handleNaviKeyEvent(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) |
1081 bool WebView::handleNaviKeyEvent(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) |
1082 { |
1082 { |
1083 bool downEventConsumed = false; |
1083 bool downEventConsumed = false; |
1084 bool consumed = false; |
1084 bool consumed = false; |
1085 bool tabbedNavigation = (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed); |
1085 bool tabbedNavigation = (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed); |
|
1086 bool navigationNone = (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone); |
1086 /* |
1087 /* |
1087 * For each platform keyDown event EventHandler::keEvent() generates |
1088 * For each platform keyDown event EventHandler::keEvent() generates |
1088 * keydown and keypress. |
1089 * keydown and keypress. |
1089 * For keypress event we need a char code and since we don't |
1090 * For keypress event we need a char code and since we don't |
1090 * have it at the time of EEventKeyDown we pospond it until EEventKey |
1091 * have it at the time of EEventKeyDown we pospond it until EEventKey |
1091 * and send it here. |
1092 * and send it here. |
1092 */ |
1093 */ |
1093 if (eventcode == EEventKeyDown){ |
1094 if (eventcode == EEventKeyDown){ |
1094 downEventConsumed = sendKeyEventToEngine(keyevent, EEventKeyDown, frame); |
1095 downEventConsumed = sendKeyEventToEngine(keyevent, EEventKeyDown, frame) || |
1095 } |
1096 ((m_focusedElementType == TBrCtlDefs::EElementActivatedInputBox && // style of input box |
|
1097 page()->chrome()->client()->elementVisibilityChanged())); |
|
1098 } |
|
1099 |
1096 /* |
1100 /* |
1097 * downEventConsumed will be true if JavaScript consumes key event |
1101 * downEventConsumed will be true if JavaScript consumes key event |
1098 * If we are not in the widget mode we want to deactivate input box |
1102 * If we are not in the widget mode we want to deactivate input box |
1099 * regardless of whether event was consumed by JavaScript or not. |
1103 * regardless of whether event was consumed by JavaScript or not. |
1100 * Othrerwise we have a risk to be trapped inside input box. |
1104 * Othrerwise we have a risk to be trapped inside input box. |
1102 bool widgetDownEventConsumed = downEventConsumed && (m_widgetextension != NULL); |
1106 bool widgetDownEventConsumed = downEventConsumed && (m_widgetextension != NULL); |
1103 |
1107 |
1104 if (!widgetDownEventConsumed && needDeactivateEditable(keyevent, eventcode, frame, downEventConsumed)) { |
1108 if (!widgetDownEventConsumed && needDeactivateEditable(keyevent, eventcode, frame, downEventConsumed)) { |
1105 deactivateEditable(); |
1109 deactivateEditable(); |
1106 } |
1110 } |
1107 |
1111 if(!navigationNone) |
|
1112 if(frame->document()->focusedNode() != NULL && IS_DOWN_KEY(keyevent) && frame->document()->focusedNode()->changed()) |
|
1113 { |
|
1114 deactivateEditable(); |
|
1115 } |
1108 if (tabbedNavigation) { |
1116 if (tabbedNavigation) { |
1109 consumed = downEventConsumed || handleTabbedNavigation(m_currentEventKey, m_currentEventCode); |
1117 consumed = downEventConsumed || handleTabbedNavigation(m_currentEventKey, m_currentEventCode); |
1110 } |
1118 } |
1111 else { |
1119 else { |
1112 consumed = (!m_isEditable && //avoid showing the cursor when we are in the input box |
1120 consumed = (!m_isEditable && //avoid showing the cursor when we are in the input box |
1374 |
1382 |
1375 if ( (keyevent.iScanCode == EStdKeyDevice3) || |
1383 if ( (keyevent.iScanCode == EStdKeyDevice3) || |
1376 (keyevent.iScanCode == EStdKeyEnter) ) { |
1384 (keyevent.iScanCode == EStdKeyEnter) ) { |
1377 // pass it to webcore |
1385 // pass it to webcore |
1378 |
1386 |
1379 if (( m_focusedElementType == TBrCtlDefs::EElementInputBox || |
1387 if (( m_focusedElementType == TBrCtlDefs::EElementActivatedInputBox || |
1380 m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) && |
1388 m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) && |
1381 m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed ) { |
1389 m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed ) { |
1382 if (!m_prevEditMode) { |
1390 if (!m_prevEditMode) { |
1383 setEditable(true); |
1391 setEditable(true); |
1384 } |
1392 } |
2555 if (!m_widgetextension) { |
2563 if (!m_widgetextension) { |
2556 m_widgetextension = CWidgetExtension::NewL(*this, aWidgetCallback); |
2564 m_widgetextension = CWidgetExtension::NewL(*this, aWidgetCallback); |
2557 #if USE(LOW_BANDWIDTH_DISPLAY) |
2565 #if USE(LOW_BANDWIDTH_DISPLAY) |
2558 m_page->mainFrame()->loader()->setUseLowBandwidthDisplay(false); |
2566 m_page->mainFrame()->loader()->setUseLowBandwidthDisplay(false); |
2559 #endif |
2567 #endif |
|
2568 StaticObjectsContainer::instance()->setIconDatabaseEnabled(false); |
2560 } |
2569 } |
2561 |
2570 |
2562 //Widgets dont need memory cache for dead objects. hence set it to 0 |
2571 //Widgets dont need memory cache for dead objects. hence set it to 0 |
2563 cache()->setCapacities(0, 0, 0); |
2572 cache()->setCapacities(0, 0, 0); |
2564 return m_widgetextension; |
2573 return m_widgetextension; |