webengine/osswebengine/WebKit/s60/webview/WebView.cpp
changeset 38 6297cdf66332
parent 37 cb62a4f66ebe
child 42 d39add9822e2
equal deleted inserted replaced
37:cb62a4f66ebe 38:6297cdf66332
  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;