webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp
changeset 11 c8a366e56285
parent 10 a359256acfc6
child 15 60c5402cb945
equal deleted inserted replaced
10:a359256acfc6 11:c8a366e56285
   102 //-----------------------------------------------------------------------------
   102 //-----------------------------------------------------------------------------
   103 // WebEditorClient::shouldEndEditing
   103 // WebEditorClient::shouldEndEditing
   104 //-----------------------------------------------------------------------------
   104 //-----------------------------------------------------------------------------
   105 bool WebEditorClient::shouldEndEditing(WebCore::Range*)
   105 bool WebEditorClient::shouldEndEditing(WebCore::Range*)
   106 {
   106 {
   107     notImplemented();
   107     return m_shouldEndEditing;
   108     return false;
       
   109 }
   108 }
   110 
   109 
   111 //-----------------------------------------------------------------------------
   110 //-----------------------------------------------------------------------------
   112 // WebEditorClient::shouldInsertText
   111 // WebEditorClient::shouldInsertText
   113 //-----------------------------------------------------------------------------
   112 //-----------------------------------------------------------------------------
   325     Frame* frame = m_webView->page()->mainFrame();
   324     Frame* frame = m_webView->page()->mainFrame();
   326     if (!frame) {
   325     if (!frame) {
   327         return;
   326         return;
   328     }
   327     }
   329 
   328 
       
   329     m_shouldEndEditing = false;
   330     // Move to the right frame
   330     // Move to the right frame
   331     frame = m_webView->page()->focusController()->focusedOrMainFrame();
   331     frame = m_webView->page()->focusController()->focusedOrMainFrame();
   332 
   332 
   333     const PlatformKeyboardEvent* kevent = event->keyEvent();
   333     const PlatformKeyboardEvent* kevent = event->keyEvent();
   334     if (!kevent->isKeyUp()) {
   334     if (!kevent->isKeyUp()) {
   365                 m_webView->fepTextEditor()->UpdateEditingMode();
   365                 m_webView->fepTextEditor()->UpdateEditingMode();
   366                 event->setDefaultHandled();
   366                 event->setDefaultHandled();
   367                 break;
   367                 break;
   368 
   368 
   369             case EKeyLeftArrow:
   369             case EKeyLeftArrow:
   370                 frame->editor()->execCommand("MoveLeft");
   370                 if (select) //If shift is pressed then highlight the selection
       
   371                 {
       
   372                 //Webview Passes EEventKeyDown and EEventKey due to which 2 characters are getting selected in one key press
       
   373                 //Avoiding one Event so that for each key press it selects 1 character only
       
   374                  if(kevent->isKeyDown())
       
   375                     break;
       
   376                  frame->editor()->execCommand("MoveLeftAndModifySelection");//from createCommandMap()
       
   377                 }
       
   378                 else
       
   379                 {
       
   380                  frame->editor()->execCommand("MoveLeft");
       
   381                 }
   371                 m_webView->fepTextEditor()->HandleUpdateCursor();
   382                 m_webView->fepTextEditor()->HandleUpdateCursor();
   372                 if (frame->selectionController()->start() != startPos &&
   383                 if (frame->selectionController()->start() != startPos &&
   373                     frame->selectionController()->end() != endPos) {
   384                     frame->selectionController()->end() != endPos) {
   374                     event->setDefaultHandled();
   385                     event->setDefaultHandled();
   375                 }
   386                 }
   376                 break;
   387                 break;
   377 
   388 
   378             case EKeyRightArrow:
   389             case EKeyRightArrow:
   379                 frame->editor()->execCommand("MoveRight");
   390                 if (select)//If shift is pressed then highlight the selection
       
   391                 {
       
   392                 //Webview Passes EEventKeyDown and EEventKey due to which 2 characters are getting selected in one key press
       
   393                 //Avoiding one Event so that for each key press it selects 1 character only
       
   394                  if(kevent->isKeyDown())
       
   395                     break;
       
   396                  frame->editor()->execCommand("MoveRightAndModifySelection");
       
   397                 }
       
   398                 else
       
   399                 {
       
   400                  frame->editor()->execCommand("MoveRight");
       
   401                 }
   380                 m_webView->fepTextEditor()->HandleUpdateCursor();
   402                 m_webView->fepTextEditor()->HandleUpdateCursor();
   381                 if (frame->selectionController()->start() != startPos &&
   403                 if (frame->selectionController()->start() != startPos &&
   382                     frame->selectionController()->end() != endPos) {
   404                     frame->selectionController()->end() != endPos) {
   383                     event->setDefaultHandled();
   405                     event->setDefaultHandled();
   384                 }
   406                 }
   389                 m_webView->fepTextEditor()->HandleUpdateCursor();
   411                 m_webView->fepTextEditor()->HandleUpdateCursor();
   390                 if (frame->selectionController()->start() != startPos &&
   412                 if (frame->selectionController()->start() != startPos &&
   391                     frame->selectionController()->end() != endPos) {
   413                     frame->selectionController()->end() != endPos) {
   392                     event->setDefaultHandled();
   414                     event->setDefaultHandled();
   393                 }
   415                 }
       
   416                 else {
       
   417                     m_shouldEndEditing = true;
       
   418                 }
   394                 break;
   419                 break;
   395 
   420 
   396             case EKeyDownArrow:
   421             case EKeyDownArrow:
   397                 frame->editor()->execCommand("MoveDown");
   422                 frame->editor()->execCommand("MoveDown");
   398                 m_webView->fepTextEditor()->HandleUpdateCursor();
   423                 m_webView->fepTextEditor()->HandleUpdateCursor();
   399                 if (frame->selectionController()->start() != startPos &&
   424                 if (frame->selectionController()->start() != startPos &&
   400                     frame->selectionController()->end() != endPos) {
   425                     frame->selectionController()->end() != endPos) {
   401                     event->setDefaultHandled();
   426                     event->setDefaultHandled();
   402                 }
   427                 }
       
   428                 else {
       
   429                     m_shouldEndEditing = true;
       
   430                 }
   403                 break;
   431                 break;
   404                 
   432                 
   405             case EKeyEnter:
   433             case EKeyEnter:
       
   434             case EKeyDevice3:    
   406             	// If we are in a textarea, add a newline
   435             	// If we are in a textarea, add a newline
   407                 if (m_webView->fepTextEditor()->IsTextAreaFocused()) {
   436                 if (m_webView->fepTextEditor()->IsTextAreaFocused()) {
   408                     if (m_webView->fepTextEditor()->DocumentLengthForFep() <
   437                     if (m_webView->fepTextEditor()->DocumentLengthForFep() <
   409                         m_webView->fepTextEditor()->DocumentMaximumLengthForFep()) {
   438                         m_webView->fepTextEditor()->DocumentMaximumLengthForFep()) {
   410                         frame->editor()->insertLineBreak();
   439                         frame->editor()->insertLineBreak();