webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp
branchRCL_3
changeset 49 919f36ff910f
parent 48 79859ed3eea9
child 50 d96eed154187
equal deleted inserted replaced
48:79859ed3eea9 49:919f36ff910f
    29 #include "PlatformKeyboardEvent.h"
    29 #include "PlatformKeyboardEvent.h"
    30 #include "DebugStream.h"
    30 #include "DebugStream.h"
    31 #include "WebView.h"
    31 #include "WebView.h"
    32 #include "WebFrame.h"
    32 #include "WebFrame.h"
    33 #include "WebFormFill.h"
    33 #include "WebFormFill.h"
    34 #include "HTMLNames.h"
    34 #include "HtmlNames.h"
    35 #include "WebFepTextEditor.h"
    35 #include "WebFepTextEditor.h"
    36 #include <EIKCOCTL.rsg>
    36 #include <eikcoctl.rsg>
    37 #include <eikon.hrh>
    37 #include <eikon.hrh>
    38 
    38 
    39 
    39 
    40 using namespace WebCore;
    40 using namespace WebCore;
    41 using namespace HTMLNames;
    41 using namespace HTMLNames;
   315 //-----------------------------------------------------------------------------
   315 //-----------------------------------------------------------------------------
   316 // WebEditorClient::handleKeypress
   316 // WebEditorClient::handleKeypress
   317 //-----------------------------------------------------------------------------
   317 //-----------------------------------------------------------------------------
   318 void WebEditorClient::handleKeypress(KeyboardEvent* event)
   318 void WebEditorClient::handleKeypress(KeyboardEvent* event)
   319 {
   319 {
   320     if (!m_webView && !m_webView->page()) {
   320     if (!(m_webView && m_webView->page())) {
   321         return;
   321         return;
   322     }
   322     }
   323 
   323 
   324     Frame* frame = m_webView->page()->mainFrame();
   324     Frame* frame = m_webView->page()->mainFrame();
   325     if (!frame) {
   325     if (!frame) {
   378                 else
   378                 else
   379                 {
   379                 {
   380                  frame->editor()->execCommand("MoveLeft");
   380                  frame->editor()->execCommand("MoveLeft");
   381                 }
   381                 }
   382                 m_webView->fepTextEditor()->HandleUpdateCursor();
   382                 m_webView->fepTextEditor()->HandleUpdateCursor();
   383                 if (frame->selectionController()->start() != startPos &&
   383                 if (frame->selectionController()->start() == startPos &&
   384                     frame->selectionController()->end() != endPos) {
   384                     frame->selectionController()->end() == endPos && !select) {
       
   385                     m_shouldEndEditing = !(m_webView->fepTextEditor()->IsTextAreaFocused() || m_webView->fepTextEditor()->IsInputElementFocused());
       
   386                 }
       
   387                 else {
   385                     event->setDefaultHandled();
   388                     event->setDefaultHandled();
   386                 }
       
   387                 else {
       
   388                     m_shouldEndEditing = !m_webView->fepTextEditor()->IsTextAreaFocused();
       
   389                 }
   389                 }
   390                 break;
   390                 break;
   391 
   391 
   392             case EKeyRightArrow:
   392             case EKeyRightArrow:
   393                 if (select)//If shift is pressed then highlight the selection
   393                 if (select)//If shift is pressed then highlight the selection
   401                 else
   401                 else
   402                 {
   402                 {
   403                  frame->editor()->execCommand("MoveRight");
   403                  frame->editor()->execCommand("MoveRight");
   404                 }
   404                 }
   405                 m_webView->fepTextEditor()->HandleUpdateCursor();
   405                 m_webView->fepTextEditor()->HandleUpdateCursor();
   406                 if (frame->selectionController()->start() != startPos &&
   406                 if (frame->selectionController()->start() == startPos &&
   407                     frame->selectionController()->end() != endPos) {
   407                     frame->selectionController()->end() == endPos && !select) {
       
   408                     m_shouldEndEditing = !(m_webView->fepTextEditor()->IsTextAreaFocused() || m_webView->fepTextEditor()->IsInputElementFocused());
       
   409                 }
       
   410                 else {
   408                     event->setDefaultHandled();
   411                     event->setDefaultHandled();
   409                 }
   412                 }
       
   413                 break;
       
   414 
       
   415             case EKeyUpArrow:
       
   416                 if (select) { //If shift is pressed then highlight the selection
       
   417                     if(kevent->isKeyDown())
       
   418                         break;
       
   419                     frame->editor()->execCommand("MoveUpAndModifySelection");//from createCommandMap()
       
   420                 }
   410                 else {
   421                 else {
   411                     m_shouldEndEditing = !m_webView->fepTextEditor()->IsTextAreaFocused();
   422                     frame->editor()->execCommand("MoveUp");
   412                 }
   423                 }
   413                 break;
       
   414 
       
   415             case EKeyUpArrow:
       
   416                 frame->editor()->execCommand("MoveUp");
       
   417                 m_webView->fepTextEditor()->HandleUpdateCursor();
   424                 m_webView->fepTextEditor()->HandleUpdateCursor();
   418                 if (frame->selectionController()->start() != startPos &&
   425                 if (frame->selectionController()->start() == startPos &&
   419                     frame->selectionController()->end() != endPos) {
   426                     frame->selectionController()->end() == endPos && !select) {
       
   427                     m_shouldEndEditing = true;
       
   428                 }
       
   429                 else {
   420                     event->setDefaultHandled();
   430                     event->setDefaultHandled();
   421                 }
   431                 }
       
   432                 break;
       
   433 
       
   434             case EKeyDownArrow:
       
   435                 if (select) {//If shift is pressed then highlight the selection
       
   436                     if(kevent->isKeyDown())
       
   437                         break;
       
   438                     frame->editor()->execCommand("MoveDownAndModifySelection");//from createCommandMap()
       
   439                 }
   422                 else {
   440                 else {
       
   441                     frame->editor()->execCommand("MoveDown");
       
   442                 }
       
   443                 m_webView->fepTextEditor()->HandleUpdateCursor();
       
   444                 if (frame->selectionController()->start() == startPos &&
       
   445                     frame->selectionController()->end() == endPos && !select) {
   423                     m_shouldEndEditing = true;
   446                     m_shouldEndEditing = true;
   424                 }
   447                 }
   425                 break;
   448                 else {
   426 
       
   427             case EKeyDownArrow:
       
   428                 frame->editor()->execCommand("MoveDown");
       
   429                 m_webView->fepTextEditor()->HandleUpdateCursor();
       
   430                 if (frame->selectionController()->start() != startPos &&
       
   431                     frame->selectionController()->end() != endPos) {
       
   432                     event->setDefaultHandled();
   449                     event->setDefaultHandled();
   433                 }
       
   434                 else {
       
   435                     m_shouldEndEditing = true;
       
   436                 }
   450                 }
   437                 break;
   451                 break;
   438                 
   452                 
   439             case EKeyEnter:
   453             case EKeyEnter:
   440             case EKeyDevice3:    
   454             case EKeyDevice3:    
   449                     }
   463                     }
   450                 }
   464                 }
   451                 break;
   465                 break;
   452 
   466 
   453             case EKeyF18:
   467             case EKeyF18:
   454                 if (magnify)
       
   455                 {
       
   456                     switch (kevent->symbianEvent().iScanCode)
       
   457                         {
       
   458                         case EEikCmdEditCut:
       
   459                             m_webView->fepTextEditor()->CcpuCutL();
       
   460                             frame->editor()->deleteWithDirection(SelectionController::BACKWARD,
       
   461                                                              CharacterGranularity, false, true);
       
   462                             m_webView->fepTextEditor()->HandleUpdateCursor();
       
   463                             break;
       
   464                         case EEikCmdEditCopy:
       
   465                             m_webView->fepTextEditor()->CcpuCopyL();
       
   466                             break;
       
   467                         case EEikCmdEditPaste:
       
   468                             m_webView->fepTextEditor()->CcpuPasteL();
       
   469                             break;
       
   470                         default:
       
   471                             break;
       
   472                         }
       
   473                 }
       
   474                 break;
   468                 break;
   475 
   469 
   476 // All of the diagonal KeyEvents are allowed to flow through the "default" case...
   470 // All of the diagonal KeyEvents are allowed to flow through the "default" case...
   477 //
   471 //
   478 //          case EKeyRightUpArrow:        // Northeast
   472 //          case EKeyRightUpArrow:        // Northeast
   504                 case EHotKeyPaste:
   498                 case EHotKeyPaste:
   505                     m_webView->fepTextEditor()->CcpuPasteL();
   499                     m_webView->fepTextEditor()->CcpuPasteL();
   506                     break;
   500                     break;
   507                     }
   501                     }
   508 
   502 
       
   503                 if(m_webView->fepTextEditor()->inlineTextEditingStarted()) 
       
   504                     return;
   509                 if (TChar(kevent->symbianEvent().iCode).IsPrint()) {
   505                 if (TChar(kevent->symbianEvent().iCode).IsPrint()) {
   510                     if (m_webView->fepTextEditor()->DocumentLengthForFep() <
   506                     if (m_webView->fepTextEditor()->DocumentLengthForFep() <
   511                         m_webView->fepTextEditor()->DocumentMaximumLengthForFep()) {
   507                         m_webView->fepTextEditor()->DocumentMaximumLengthForFep()) {
   512                         TText c = kevent->symbianEvent().iCode;
   508                         TText c = kevent->symbianEvent().iCode;
   513                         handleInsertText(frame, String(TPtrC(&c,1)));
   509                         handleInsertText(frame, String(TPtrC(&c,1)));
   524 }
   520 }
   525 
   521 
   526 //-----------------------------------------------------------------------------
   522 //-----------------------------------------------------------------------------
   527 // WebEditorClient::handleInputMethodKeypress
   523 // WebEditorClient::handleInputMethodKeypress
   528 //-----------------------------------------------------------------------------
   524 //-----------------------------------------------------------------------------
   529 void WebEditorClient::handleInputMethodKeypress(KeyboardEvent*)
   525 void WebEditorClient::handleInputMethodKeypress(KeyboardEvent* event)
   530 {
   526 {
   531     notImplemented();
   527     const PlatformKeyboardEvent* kevent = event->keyEvent();
       
   528     if(kevent->isKeyDown())
       
   529     handleKeypress(event);
   532 }
   530 }
   533 
   531 
   534 //-----------------------------------------------------------------------------
   532 //-----------------------------------------------------------------------------
   535 // WebEditorClient::textFieldDidBeginEditing
   533 // WebEditorClient::textFieldDidBeginEditing
   536 //-----------------------------------------------------------------------------
   534 //-----------------------------------------------------------------------------
   561 //-----------------------------------------------------------------------------
   559 //-----------------------------------------------------------------------------
   562 // WebEditorClient::doTextFieldCommandFromEvent
   560 // WebEditorClient::doTextFieldCommandFromEvent
   563 //-----------------------------------------------------------------------------
   561 //-----------------------------------------------------------------------------
   564 bool WebEditorClient::doTextFieldCommandFromEvent(Element*, KeyboardEvent*)
   562 bool WebEditorClient::doTextFieldCommandFromEvent(Element*, KeyboardEvent*)
   565 {
   563 {
   566     notImplemented();
   564      
   567     return false;
   565    notImplemented();
       
   566    return false;
   568 }
   567 }
   569 
   568 
   570 //-----------------------------------------------------------------------------
   569 //-----------------------------------------------------------------------------
   571 // WebEditorClient::textWillBeDeletedInTextField
   570 // WebEditorClient::textWillBeDeletedInTextField
   572 //-----------------------------------------------------------------------------
   571 //-----------------------------------------------------------------------------
   689     else {
   688     else {
   690         m_webView->fepTextEditor()->HandleMaskedDeleteText(frame);
   689         m_webView->fepTextEditor()->HandleMaskedDeleteText(frame);
   691     }
   690     }
   692 }
   691 }
   693 
   692 
       
   693 
       
   694 
       
   695 
       
   696