17 |
17 |
18 |
18 |
19 |
19 |
20 #include "config.h" |
20 #include "config.h" |
21 #include "../../bidi.h" |
21 #include "../../bidi.h" |
22 |
22 #include "StaticObjectsContainer.h" |
|
23 #include "AtomicString.h" |
|
24 #include "PlatformFontCache.h" |
|
25 #include "BrCtl.h" |
23 #include "WebFepTextEditor.h" |
26 #include "WebFepTextEditor.h" |
24 #include "WebEditorClient.h" |
27 #include "WebEditorClient.h" |
25 #include "WebTextFormatMask.h" |
28 #include "WebTextFormatMask.h" |
26 #include "WebView.h" |
29 #include "WebView.h" |
27 #include "WebFrame.h" |
30 #include "WebFrame.h" |
86 CWebFepTextEditor::~CWebFepTextEditor() |
89 CWebFepTextEditor::~CWebFepTextEditor() |
87 { |
90 { |
88 delete m_state; |
91 delete m_state; |
89 delete m_inlineEditText; |
92 delete m_inlineEditText; |
90 delete m_textFormatMask; |
93 delete m_textFormatMask; |
|
94 delete m_ExtendedInputCapabilities; |
91 } |
95 } |
92 |
96 |
93 // ----------------------------------------------------------------------------- |
97 // ----------------------------------------------------------------------------- |
94 // CreateTextFormatMask |
98 // CreateTextFormatMask |
95 // |
99 // |
493 // ----------------------------------------------------------------------------- |
497 // ----------------------------------------------------------------------------- |
494 // GetScreenCoordinatesForFepL |
498 // GetScreenCoordinatesForFepL |
495 // |
499 // |
496 // |
500 // |
497 // ----------------------------------------------------------------------------- |
501 // ----------------------------------------------------------------------------- |
498 void CWebFepTextEditor::GetScreenCoordinatesForFepL(TPoint& /*aLeftSideOfBaseLine*/, |
502 void CWebFepTextEditor::GetScreenCoordinatesForFepL(TPoint& aLeftSideOfBaseLine, |
499 TInt& /*aHeight*/, |
503 TInt& aHeight, |
500 TInt& /*aAscent*/, |
504 TInt& aAscent, |
501 TInt /*aDocumentPosition*/) const |
505 TInt aDocumentPosition) const |
502 { |
506 { |
|
507 Frame* frame = m_webView->page()->focusController()->focusedOrMainFrame(); |
|
508 if (frame && |
|
509 frame->document() && |
|
510 frame->document()->focusedNode()){ |
|
511 if ( frame->document()->focusedNode()->hasTagName(HTMLNames::inputTag) || |
|
512 frame->document()->focusedNode()->hasTagName(HTMLNames::textareaTag)){ |
|
513 HTMLGenericFormElement* ie = static_cast<HTMLGenericFormElement*>(frame->document()->focusedNode()); |
|
514 SelectionController* sc = frame->selectionController(); |
|
515 int xPos(0); |
|
516 int yPos(0); |
|
517 if ( sc ){ |
|
518 IntRect rect = sc->caretRect(); |
|
519 xPos = rect.x(); |
|
520 yPos = rect.y(); |
|
521 yPos += m_webView->brCtl()->PositionRelativeToScreen().iY; |
|
522 Node* editNode = sc->focusNode(); |
|
523 String str; |
|
524 if ( editNode && |
|
525 editNode->isTextNode() ) { |
|
526 WebCore::Text* aText = (WebCore::Text*)editNode; |
|
527 str = aText->data(); |
|
528 aDocumentPosition = aText->length(); |
|
529 TInt position = aDocumentPosition - ( str.reverseFind(KBlankDesC(), aDocumentPosition )+1); |
|
530 String word(str); |
|
531 if( position > 0 ){ |
|
532 word = str.left( position ); |
|
533 } |
|
534 RenderStyle* s = frame->document()->focusedNode()->renderStyle(); |
|
535 PlatformFontCache* cache = StaticObjectsContainer::instance()->fontCache(); |
|
536 CFont* sFont = cache->zoomedFont( s->fontDescription(), cache->fontZoomFactor()); |
|
537 TInt sizePix = sFont->MeasureText( word.des() ); |
|
538 xPos -= sizePix; |
|
539 } |
|
540 } |
|
541 aLeftSideOfBaseLine.SetXY( xPos,yPos ); |
|
542 } |
|
543 } |
|
544 aAscent = 0; |
|
545 aHeight = 0; |
503 } |
546 } |
504 |
547 |
505 // ----------------------------------------------------------------------------- |
548 // ----------------------------------------------------------------------------- |
506 // DoCommitFepInlineEditL |
549 // DoCommitFepInlineEditL |
507 // |
550 // |