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(); |