webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp
changeset 1 7c90e6132015
parent 0 dd21522fd290
child 10 a359256acfc6
equal deleted inserted replaced
0:dd21522fd290 1:7c90e6132015
    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 //