browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp
branchRCL_3
changeset 65 8e6fa1719340
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp	Wed Sep 01 12:31:04 2010 +0100
@@ -0,0 +1,1394 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*
+*
+*/
+
+
+// INCLUDE FILES
+#include <Browser_Platform_Variant.hrh>
+#include <eikmenub.h>
+#include <eikdef.h>
+#include <akninfrm.h>
+#include <eikon.rsg>
+#include <eikenv.h>
+#include <txtglobl.h>
+#include <gulfont.h>
+#include <txtfrmat.h>
+#include <eikgted.h>
+#include <aknconsts.h>
+#include <akneditstateindicator.h>
+#include <AknsListBoxBackgroundControlContext.h>
+#include <BrowserNG.rsg>
+#include <Featmgr.h>
+#include <fepbase.h>
+#include <aknutils.h>
+#include <browseruisdkcrkeys.h>
+
+#include <AknLayout2ScalableDef.h>
+#include <aknlayoutfont.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+
+#include "CommonConstants.h"
+#include "BrowserGotoPane.h"
+#include "BrowserAppUi.h"
+#include "BrowserUtil.h"
+#include "browser.hrh"
+#include <favouriteslimits.h>
+#include "BrowserAdaptiveListPopup.h"
+#include "BrowserContentView.h"
+
+#include "eikon.hrh"
+
+#include <StringLoader.h>
+
+const TInt KMaxTitleLength = 512;
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::NewL
+// ---------------------------------------------------------------------------
+//
+CBrowserGotoPane* CBrowserGotoPane::NewL(
+        const CCoeControl* aParent, TInt aIconBitmapId, TInt aIconMaskId,
+        TBool aPopupListStatus, CBrowserContentView* aContentView,
+        TBool aFindKeywordMode )
+    {
+    CBrowserGotoPane* gotoPane = new(ELeave)
+        CBrowserGotoPane( aContentView, aFindKeywordMode );
+
+    CleanupStack::PushL( gotoPane );
+    gotoPane->ConstructL( aParent, aIconBitmapId, aIconMaskId, aPopupListStatus );
+    gotoPane->MakeVisibleL( EFalse );
+    gotoPane->SetFocus( EFalse );
+    CleanupStack::Pop();    // gotoPane
+
+    return gotoPane;
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::MakeVisibleL
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::MakeVisibleL( TBool aVisible )
+    {
+    if ( aVisible )
+        {
+        if ( iSearchEditor )
+            {
+            ConstructSearchPaneL();
+            }
+        HandleFindSizeChanged();
+        if ( AUTOCOMP ) //ask the feature manager
+        {
+        //2.1 does not put http:// there
+            SetTextL( KNullDesC );
+        }
+        else
+        {
+        //2.0 does put the http:// there
+            SetTextL( KHttpString );
+            }
+        }
+    else
+        {
+        // Clear the search text if goto is cancelled ( hidden ).
+        if ( iSearchEditor )
+            {
+            SetSearchTextL( KNullDesC );
+            }
+        }
+    
+    SetPointerCapture(aVisible);
+    if (AknLayoutUtils::PenEnabled() &&  ( !iSearchEditor )  )
+        {      
+        if (aVisible)
+            {
+            ActivateVKB();
+            }
+        }
+
+    CCoeControl::MakeVisible( aVisible );
+
+    iGotoKeyHandled->Reset();
+    iGotoKeyHandled->EnableL( aVisible );
+
+
+    if ( iSearchEditor )
+        {
+        SetTextModeItalicL();
+        }
+    // To avoid Flickring Effect when SearchInputFrame is
+    // re-created with new search provider icon.
+    DrawNow( );
+
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::MakeVisible
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::MakeVisible( TBool aVisible )
+    {
+    TRAP_IGNORE( MakeVisibleL( aVisible ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::~CBrowserGotoPane
+// ---------------------------------------------------------------------------
+//
+CBrowserGotoPane::~CBrowserGotoPane()
+    {
+    if (iAvkonAppUi!=NULL)
+        {
+        iAvkonAppUi->RemoveFromStack( iGotoKeyHandled );
+        }
+    delete iSearchEditor;
+    delete iSearchInputFrame;
+
+    delete iGotoKeyHandled;
+    delete iEditor;
+    delete iInputFrame;
+    delete iPrevKeyword;
+    delete iBAdaptiveListPopup;
+    delete iDefaultSearchText;
+    iContentView = NULL;
+    CCoeEnv::Static()->RemoveFepObserver(static_cast<MCoeFepObserver &>(*this));
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::CBrowserGotoPane
+// ---------------------------------------------------------------------------
+//
+CBrowserGotoPane::CBrowserGotoPane( CBrowserContentView* aContentView, TBool aFindKeywordMode )
+:   iContentView( aContentView),
+    iFindKeywordMode( aFindKeywordMode ),
+    iHandleFEPFind( ETrue ),
+    iBAdaptiveListPopup( NULL ),
+    iGotoPaneActive( ETrue ),
+    iSearchPaneActive( EFalse),
+    iSearchIconId( 0 )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::ConstructL ( const CCoeControl* aParent, TInt aIconBitmapId, TInt aIconMaskId,
+            TBool
+            aPopupListStatus
+            )
+    {
+    CreateWindowL();
+
+    // remove 'const' modifier and set parent control
+    SetMopParent( CONST_CAST( CCoeControl*, aParent ) );
+
+    iEditor = new (ELeave) CEikGlobalTextEditor;
+
+    iInputFrame = CAknInputFrame::NewL(
+        iEditor,
+        EFalse,
+        KAvkonBitmapFile,
+        aIconBitmapId,
+        aIconMaskId,
+        CAknInputFrame::EPopupLayout );
+
+    iInputFrame->SetContainerWindowL( *this );
+
+    AknEditUtils::ConstructEditingL (   iEditor,
+                                        KFavouritesMaxUrlGotoPaneDefine,
+                                        1,
+                                        EAknEditorCharactersLowerCase,
+                                        EAknEditorAlignRight,
+                                        EFalse,
+                                        ETrue,
+                                        EFalse );
+
+    iEditor->SetContainerWindowL( *this );
+    iEditor->SetObserver( this );
+    iEditor->SetBorder( TGulBorder::ENone );
+    iEditor->SetAknEditorCase( EAknEditorLowerCase );
+    iEditor->SetAknEditorInputMode( EAknEditorTextInputMode );
+
+    if (AVKONAPAC)
+        {
+        // Disallow chinese input.
+        iEditor->SetAknEditorAllowedInputModes( EAknEditorTextInputMode |
+                                            EAknEditorNumericInputMode );
+        }
+    TInt editorFlags =  ((iFindKeywordMode) ? EAknEditorFlagDefault : EAknEditorFlagLatinInputModesOnly) |EAknEditorFlagUseSCTNumericCharmap;
+
+    // Always disable T9 input for goto url
+    editorFlags = (editorFlags | EAknEditorFlagNoT9);
+
+    iEditor->SetAknEditorFlags( editorFlags );
+
+    iEditor->SetAknEditorPermittedCaseModes (   EAknEditorUpperCase |
+                                                EAknEditorLowerCase );
+
+    iGotoKeyHandled = new (ELeave) CBrowserKeyEventHandled( *this );
+    iAvkonAppUi->AddToStackL( iGotoKeyHandled,
+                                ECoeStackPriorityFep + 1,
+                                ECoeStackFlagRefusesFocus );
+    iEditor->SetEdwinObserver( iGotoKeyHandled );
+    iEditor->SetSkinBackgroundControlContextL(NULL);
+
+    TBool searchFeature = iContentView->ApiProvider().Preferences().SearchFeature();
+    if (  searchFeature && !iFindKeywordMode )
+        {
+        iDefaultSearchText = StringLoader::LoadL( R_IS_WEB_SEARCH );
+        ConstructSearchPaneL();
+        }
+
+      //adaptive popuplist
+    if ( aPopupListStatus && AUTOCOMP )
+        {
+        iBAdaptiveListPopup =
+            new (ELeave) CBrowserAdaptiveListPopup( iEditor, this, EGotoPane, searchFeature );
+        iBAdaptiveListPopup->ConstructL();
+        iEditor->SetObserver( iBAdaptiveListPopup );
+        if (iContentView)
+            {
+            iBAdaptiveListPopup->SetUrlSuffixList(iContentView->ApiProvider().Preferences().URLSuffixList());
+            iBAdaptiveListPopup->SetMaxRecentUrls(iContentView->ApiProvider().Preferences().MaxRecentUrls());
+            }
+        }
+
+    CCoeEnv::Static()->AddFepObserverL(static_cast<MCoeFepObserver &>(*this));
+    iPrevKeyword = KNullDesC().AllocL();
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::SetOrdinalPosition
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::SetOrdinalPosition( TInt aPos )
+    {
+    Window().SetOrdinalPosition( aPos );
+    if ( iBAdaptiveListPopup )
+        {
+        iBAdaptiveListPopup->SetOrdinalPosition( aPos );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::HandleFindSizeChanged
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::HandleFindSizeChanged()
+    {
+    
+    if ( iSearchEditor && !iFindKeywordMode)
+        {
+            TRect clientRect = CBrowserAppUi::Static()->ClientRect();
+            TAknWindowLineLayout findWindow = AknLayout::popup_find_window();
+
+            TRect findWindowRect = AknLayoutUtils::RectFromCoords( clientRect,findWindow.il, findWindow.it,
+                    findWindow.ir, findWindow.ib, findWindow.iW, findWindow.iH);
+
+            // Now Increase the height of rect to make room for two editors (Goto + search)//
+            findWindowRect.iTl.iY -= ( findWindow.iH  );
+            SetRect( findWindowRect );
+        }
+
+    else if ( !AknLayoutUtils::PenEnabled() )
+        {
+        
+            TRect parentrect = iAvkonAppUi->ApplicationRect();
+
+            TAknLayoutRect lrect;
+            lrect.LayoutRect( parentrect,
+                        AknLayout::main_pane( CBrowserAppUi::Static()->ApplicationRect(), 0, 1, 1 )
+                        );
+            AknLayoutUtils::LayoutControl ( this,
+                                        lrect.Rect(),
+                                        AknLayout::popup_find_window() );
+        }
+    else if( AknLayoutUtils::PenEnabled() )
+        {
+        // The ClientRect() will be the application rectangle minus any
+        // toolbars/menu bars etc.
+        AknLayoutUtils::LayoutControl ( this,
+                                        CBrowserAppUi::Static()->ClientRect(),
+                                        AknLayout::popup_find_window() );
+        }
+
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::EnableKeyEventHandler
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::EnableKeyEventHandlerL( TBool aEnable )
+    {
+    iGotoKeyHandled->EnableL( aEnable );
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::HandleControlEventL
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::HandleControlEventL ( CCoeControl* /*aControl*/,
+                                                        TCoeEvent aEventType )
+    {
+    if ( iFindKeywordMode )
+        {
+        if ( iEditor->AknEditorCurrentInputMode() == EAknEditorCalculatorNumberModeKeymap
+            // When the user copies and paste's content to the find dialog, the editor
+            // is in Text Input mode, The engine should still get the find keyword request
+            || iEditor->AknEditorCurrentInputMode() == EAknEditorTextInputMode
+            // Also Chinese and Japanese input modes should apply here
+            || iEditor->AknEditorCurrentInputMode() == EAknEditorFullWidthKatakanaInputMode 
+            || iEditor->AknEditorCurrentInputMode() == EAknEditorHiraganaInputMode 
+            )
+            {
+            if ( aEventType == MCoeControlObserver::EEventStateChanged )
+                {
+                HBufC* newText = GetTextL();
+                if (!newText)
+                    {
+                    newText = KNullDesC().AllocL();
+                    }
+
+                if ( iPrevKeyword->Compare( *newText ) )
+                    {
+                    delete iPrevKeyword;
+                    iPrevKeyword = NULL;
+                    iPrevKeyword = newText;
+                    // Find the typed keyword.
+                    iContentView->FindKeywordL( GetTextL() );
+                    iHandleFEPFind = EFalse;
+                    }
+                else
+                    {
+                    delete newText;
+                    }
+                }
+            }
+        }
+
+    switch (aEventType)
+        {
+        case EEventRequestFocus:
+            {
+            FocusChanged( EDrawNow );
+            break;
+            }
+
+        default:
+            break;
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::OfferKeyEventL
+// ----------------------------------------------------------------------------
+//
+TKeyResponse CBrowserGotoPane::OfferKeyEventL
+( const TKeyEvent& aKeyEvent, TEventCode aType )
+    {
+    TKeyResponse resp = EKeyWasNotConsumed;
+
+    if (    AknLayoutUtils::PenEnabled()
+         && PopupList()
+         && PopupList()->DrawableWindow()->OrdinalPosition() > 0 )
+        {
+        PopupList()->SetOrdinalPosition(0);
+        }
+
+    if ( aType == EEventKey && aKeyEvent.iCode == EKeyEscape )  // Escape key event handling
+        {
+        CCoeEnv::Static()->AppUi()->RemoveFromStack( this );
+        if ( PopupList() )
+            {
+            PopupList()->SetDirectoryModeL( ETrue );
+            PopupList()->HidePopupL();
+            }
+        MakeVisible( EFalse );                                  // Hide Goto pane
+        SetFocus( EFalse );
+        resp = EKeyWasConsumed;                                 // should set the focus of container to ETrue...how?
+        }
+
+    if ( iFindKeywordMode )
+        {
+        if ( iContentView->MenuBar()->MenuPane()->IsVisible() )
+            {
+            return iContentView->MenuBar()->MenuPane()->OfferKeyEventL(  aKeyEvent, aType );
+            }
+        else
+            {
+            if ( aType == EEventKey )                           // Handle up and down arow keys to search for
+                {                                               //   next and previous keywords.
+
+                if (    aKeyEvent.iCode == EKeyLeftUpArrow      // Northwest
+                     || aKeyEvent.iCode == EStdKeyDevice10      //   : Extra KeyEvent supports diagonal event simulator wedge
+                     || aKeyEvent.iCode == EKeyUpArrow          // North
+                     || aKeyEvent.iCode == EKeyRightUpArrow     // Northeast
+                     || aKeyEvent.iCode == EStdKeyDevice11 )    //   : Extra KeyEvent supports diagonal event simulator wedge
+                    {                                           // Any of those? If so, then...
+                    iContentView->FindKeywordL( NULL, EFalse ); // Find previous keyword
+                    iHandleFEPFind = EFalse;                    //   :
+                    return EKeyWasConsumed;                     // And that consumes the key
+                    }
+
+                if (    aKeyEvent.iCode == EKeyLeftDownArrow    // Southwest
+                     || aKeyEvent.iCode == EStdKeyDevice13      //   : Extra KeyEvent supports diagonal event simulator wedge
+                     || aKeyEvent.iCode == EKeyDownArrow        // South
+                     || aKeyEvent.iCode == EKeyRightDownArrow   // Southeast
+                     || aKeyEvent.iCode == EStdKeyDevice12 )    //   : Extra KeyEvent supports diagonal event simulator wedge
+                    {                                           // Any of those? If so, then...
+                    iContentView->FindKeywordL( NULL, ETrue );  // Find next keyword
+                    iHandleFEPFind = EFalse;                    //   :
+                    return EKeyWasConsumed;                     // And that consumes the key
+                    }
+
+                if ( aKeyEvent.iCode == EKeyDevice3 )           // Select key?
+                    {                                           // If so, then...
+                    return EKeyWasConsumed;                     // Ignore select key
+                    }
+
+                }
+            return iEditor->OfferKeyEventL( aKeyEvent, aType );  // Otherwise, just pass the key on to the editor
+            }
+        }
+
+    else                                                        // *NOT* iFindKeywordMode
+        {
+
+        if (    aKeyEvent.iCode == EKeyRightUpArrow             // Northeast
+             || aKeyEvent.iCode == EStdKeyDevice11              //   : Extra KeyEvent supports diagonal event simulator wedge
+             || aKeyEvent.iCode == EKeyRightDownArrow           // Southeast
+             || aKeyEvent.iCode == EStdKeyDevice12              //   : Extra KeyEvent supports diagonal event simulator wedge
+             || aKeyEvent.iCode == EKeyLeftDownArrow            // Southwest
+             || aKeyEvent.iCode == EStdKeyDevice13              //   : Extra KeyEvent supports diagonal event simulator wedge
+             || aKeyEvent.iCode == EKeyLeftUpArrow              // Northwest
+             || aKeyEvent.iCode == EStdKeyDevice10 )            //   : Extra KeyEvent supports diagonal event simulator wedge
+            {                                                   // Any of those? If so, then...
+            return EKeyWasConsumed;                             // Ignore diagonal navigation events here
+            }
+
+        // For touch UI, handle enter key from VKB as a "GOTO"
+        if (AknLayoutUtils::PenEnabled() && aKeyEvent.iCode == EKeyEnter)
+            {
+            CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneGoTo);
+            return EKeyWasConsumed;
+            }
+        else if ( ((aKeyEvent.iCode == EKeyOK ) || (aKeyEvent.iCode == EKeyEnter))
+             && iGPObserver 
+             && IsFocused() )
+            {
+            if ( CBrowserAppUi::Static()->ContentView()->MenuBar()->MenuPane()->IsVisible() )
+                {
+                return CBrowserAppUi::Static()->ContentView()->MenuBar()->MenuPane()->OfferKeyEventL( aKeyEvent, aType );
+                }
+            else
+                {
+                // If there is an observer and we have the focus, enter key is
+                // consumed and observer is notified.
+                iGPObserver->HandleGotoPaneEventL
+                                ( this, MGotoPaneObserver::EEventEnterKeyPressed );
+                return EKeyWasConsumed;
+                }
+            }        
+
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            resp = iSearchEditor->OfferKeyEventL( aKeyEvent, aType );
+            }
+        else
+            {
+            resp = iEditor->OfferKeyEventL( aKeyEvent, aType );
+            }
+
+        if ((iBAdaptiveListPopup ) && (resp != EKeyWasConsumed))
+          {
+          resp = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType );
+          }
+
+
+        if ( iSearchEditor )
+            {
+            if (    ( iGotoPaneActive || iSearchPaneActive)
+                 && (resp != EKeyWasConsumed) )
+                {
+
+                if (  aKeyEvent.iCode == EKeyUpArrow )
+                    {
+                    resp = EKeyWasConsumed;
+                    if ( iSearchPaneActive )
+                        {
+                        SetGotoPaneActiveL();
+
+#if defined(BRDO_SEARCH_INTEGRATION_FF)
+                        iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB );
+#endif
+
+                        }
+                    }
+                if ( aKeyEvent.iCode == EKeyDownArrow )
+                    {
+                    resp = EKeyWasConsumed;
+                    if ( iGotoPaneActive )
+                        {
+                        SetSearchPaneActiveL();
+
+#if defined(BRDO_SEARCH_INTEGRATION_FF)
+                        iSearchEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB );
+#endif
+
+                        }
+                    }
+                }
+            }
+
+        }
+
+    return resp;
+
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::HandlePointerEventL
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::HandlePointerEventL(const TPointerEvent& aPointerEvent)
+    {
+    if ( !AknLayoutUtils::PenEnabled() )
+        {
+        return;
+        }
+
+    // ponter is in goto pane
+    if (Rect().Contains(aPointerEvent.iPosition))
+        {
+        iGotoKeyHandled->EnableL(ETrue);
+
+        // If search feature exists, check and route to appropriate editor //
+        if ( iSearchEditor  )
+            {
+            if ( iSearchInputFrame->Rect().Contains(aPointerEvent.iPosition))
+                {
+                if ( !iSearchPaneActive )
+                    {
+                    SetSearchPaneActiveL();
+                    }
+#ifndef BRDO_SINGLE_CLICK_ENABLED_FF
+                else
+                    {
+#endif
+                    iSearchEditor->HandlePointerEventL(aPointerEvent);
+#ifndef BRDO_SINGLE_CLICK_ENABLED_FF
+                    }
+#endif
+
+#if defined(BRDO_SEARCH_INTEGRATION_FF)
+                iSearchEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB);
+#endif
+                }
+            else
+                {
+                if ( !iGotoPaneActive )
+                    {
+                    SetGotoPaneActiveL();
+                    }
+#ifndef BRDO_SINGLE_CLICK_ENABLED_FF
+                else
+                    {
+#endif
+                    iEditor->HandlePointerEventL(aPointerEvent);
+#ifndef BRDO_SINGLE_CLICK_ENABLED_FF
+                    }
+#endif
+
+#if defined(BRDO_SEARCH_INTEGRATION_FF)
+                iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB);
+#endif
+                }
+            }
+        else
+            {
+            iEditor->HandlePointerEventL(aPointerEvent);
+            }
+        iGotoKeyHandled->SetFirstKeyEvent(EFalse);
+        }
+    else
+        {
+        // pointer outside of control
+        if ( iFindKeywordMode )
+            {
+            CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdFindKeywordPaneClose);
+            ResetPrevText();
+            }
+        else
+            {
+            CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneCancel);
+            }
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::CountComponentControls
+// ----------------------------------------------------------------------------
+//
+TInt CBrowserGotoPane::CountComponentControls() const
+    {
+    if ( iSearchEditor && !iFindKeywordMode )
+        {
+        return 4; // iEditor, input frame, SearchEditor and Searchinput frame.
+        }
+    return 2;   // iEditor and input frame
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::ComponentControl
+// ----------------------------------------------------------------------------
+//
+CCoeControl* CBrowserGotoPane::ComponentControl ( TInt aIndex ) const
+    {
+    switch(aIndex)
+        {
+        case 0:
+            {
+            return iInputFrame;
+            }
+        case 1:
+            {
+            return iEditor;
+            }
+        case 2:
+            {
+            return iSearchInputFrame;
+            }
+        case 3:
+            {
+            return iSearchEditor;
+            }
+
+        default:
+            return NULL;
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SizeChanged
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::SizeChanged()
+    {
+    if (iSearchEditor && !iFindKeywordMode )
+        {
+        // We need height and width of FindWindow
+        TAknWindowLineLayout findWindow = AknLayout::popup_find_window();
+        TRect findWindowRect = AknLayoutUtils::RectFromCoords( Rect(), findWindow.il,
+                findWindow.it, findWindow.ir, findWindow.ib, findWindow.iW, findWindow.iH);
+
+        TSize gotoSize( findWindowRect.Size() );
+        TRect gotoRect( TPoint( 0,0 ), gotoSize );
+        iInputFrame->SetRect( gotoRect );
+
+        // Now set SearchPane right below GoTo pane //
+        TRect searchRect( TPoint( 0, gotoRect.iBr.iY ), gotoSize );
+        iSearchInputFrame->SetRect( searchRect );
+        }
+    else
+        {
+        iInputFrame->SetRect( Rect() );
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::FocusChanged
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::FocusChanged( TDrawNow aDrawNow )
+    {
+    // this is a workaround
+    TRAP_IGNORE( iGotoKeyHandled->EnableL( IsFocused() ) );
+    CCoeControl::FocusChanged( aDrawNow );
+    if ( iGotoPaneActive )
+        {
+        iEditor->SetFocus( IsFocused() );
+        }
+    else if ( iSearchEditor && !iFindKeywordMode && iSearchPaneActive )
+        {
+        iSearchEditor->SetFocus( IsFocused() );
+        }
+    }
+
+
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::TextLength
+// ----------------------------------------------------------------------------
+//
+TInt CBrowserGotoPane::SearchTextLength() const
+    {
+    TInt len = 0;
+    if ( iSearchEditor )
+        {
+        len = iSearchEditor->TextLength();
+        }
+    return len;
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::TextLength
+// ----------------------------------------------------------------------------
+//
+TInt CBrowserGotoPane::TextLength() const
+    {
+    return iEditor->TextLength();
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::GetText
+// ----------------------------------------------------------------------------
+//
+HBufC* CBrowserGotoPane::GetTextL() const
+    {
+    HBufC *retVal = NULL;
+
+    if ( TextLength()
+            || SearchTextLength()
+            || iFindKeywordMode)
+        {
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            retVal = HBufC::NewL( SearchTextLength() + 1 );
+            }
+        else
+            {
+            retVal = HBufC::NewL( TextLength() + 1 );
+            }
+        TPtr ptr = retVal->Des();
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            iSearchEditor->GetText( ptr );
+            }
+        else
+            {
+            iEditor->GetText( ptr );
+            }
+        ptr.ZeroTerminate();
+        if ( !iFindKeywordMode && !iSearchPaneActive )
+            {
+            Util::EncodeSpaces(retVal);
+            }
+        }
+
+    return retVal;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetSearchTextL
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::SetSearchTextL( const TDesC& aTxt )
+    {
+    // for search pane, no default text
+    if ( aTxt == KHttpString || aTxt == KWWWString)
+        {
+        iSearchEditor->SetTextL( &KNullDesC );
+        }
+    else
+        {
+        iSearchEditor->SetTextL( &aTxt );
+        }
+    TInt curPos = SearchTextLength();
+    // Cursor to end, no selection.
+    iSearchEditor->SetSelectionL( curPos, curPos );
+    iSearchEditor->DrawNow();
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetTextL
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::SetTextL( const TDesC& aTxt )
+    {
+    iEditor->SetTextL( &aTxt );
+    TInt curPos = TextLength();
+    // Cursor to end, no selection.
+    iEditor->SetSelectionL( curPos, curPos );
+    iEditor->DrawNow();
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SelectAllL
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::SelectAllL()
+    {
+    if ( iSearchEditor && iSearchPaneActive )
+        {
+        iSearchEditor->SelectAllL();
+        }
+    else
+        {
+        iEditor->SelectAllL();
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetInfoTextL
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::SetInfoTextL( const TDesC& aText )
+    {
+    iInputFrame->SetInfoTextL( aText );
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::ClipboardL
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::ClipboardL( CEikEdwin::TClipboardFunc aClipboardFunc )
+    {
+    iEditor->ClipboardL( aClipboardFunc );
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::Editor
+// ----------------------------------------------------------------------------
+CEikEdwin* CBrowserGotoPane::Editor() const
+    {
+    return iEditor;
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetGPObserver
+// ----------------------------------------------------------------------------
+//
+void CBrowserGotoPane::SetGPObserver( MGotoPaneObserver* aObserver )
+    {
+    __ASSERT_DEBUG( !iGPObserver, \
+        Util::Panic( Util::EGotoPaneObserverAlreadySet ) );
+    iGPObserver = aObserver;
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserKeyEventHandled::CBrowserKeyEventHandled
+// ----------------------------------------------------------------------------
+//
+CBrowserKeyEventHandled::CBrowserKeyEventHandled(
+                                    CBrowserGotoPane& aGotoPane ) :
+    iEnabled( EFalse )
+    ,iFirstKeyEvent( ETrue )
+    ,iLeftRightEvent ( EFalse )
+    ,iGotoPane( aGotoPane )
+    {
+    }
+
+
+// ----------------------------------------------------------------------------
+// CBrowserKeyEventHandled::OfferKeyEventL
+// ----------------------------------------------------------------------------
+//
+TKeyResponse
+    CBrowserKeyEventHandled::OfferKeyEventL( const TKeyEvent& aKeyEvent,
+                                                TEventCode aType)
+    {
+    TKeyResponse response( EKeyWasNotConsumed );
+    iLeftRightEvent = EFalse;
+
+    if ( iEnabled && aType == EEventKey )
+        {
+        switch( aKeyEvent.iCode )
+            {
+            case    EKeyUpArrow:
+            case    EKeyDownArrow:
+                {
+                iFirstKeyEvent = EFalse;
+                break;
+                }
+
+            case    EKeyLeftArrow:
+            case    EKeyRightArrow:
+                {
+                iFirstKeyEvent = EFalse;
+                iLeftRightEvent = ETrue;
+
+                // Below added to compensate for a weird key event situation:
+                //   For some reason the CBrowserGotoPane::OfferKeyEventL function
+                //   is not being called for an EEventKey when you press the left/right
+                //   arrows in the menupane produced to paste previously used special
+                //   chars (this is brought up by pressing the pen button on the phone).
+                //   This only happens when the cursor is in the first or last position in
+                //   the goto pane with text in it.
+                //   Therefore, in this particular scenario, we need to process the EEventKey
+                //   here since we will not be able to in CBrowserGotoPane::OfferKeyEventL
+                if (CBrowserAppUi::Static()->ContentView()->MenuBar()->MenuPane()->IsFocused())
+                    {
+                    response = CBrowserAppUi::Static()->ContentView()->MenuBar()->MenuPane()->OfferKeyEventL( aKeyEvent, aType );
+                    }
+                break;
+                }
+
+            case    EKeyBackspace:
+            case    EKeyDelete:
+                {
+                if ( iFirstKeyEvent )
+                    {
+                    iFirstKeyEvent = EFalse;
+                    iCoeEnv->SimulateKeyEventL( aKeyEvent, aType );
+                    response = EKeyWasConsumed;
+                    }
+                break;
+                }
+
+            default:
+                {
+                if ( iFirstKeyEvent )
+                    {
+                    if ( TChar( aKeyEvent.iCode ).IsPrint() )
+                        {
+                        iFirstKeyEvent = EFalse;
+                        response = EKeyWasConsumed;
+                        iCoeEnv->SimulateKeyEventL( aKeyEvent, aType );
+                        }
+                    }
+                break;
+                }
+            }
+//        CBrowserAppUi::Static()->UpdateCbaL();
+        }
+    return response;
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserKeyEventHandled::HandleEdwinEventL
+// ----------------------------------------------------------------------------
+//
+void CBrowserKeyEventHandled::HandleEdwinEventL( CEikEdwin* /*aEdwin*/,
+                                                    TEdwinEvent aEventType )
+    {
+    // if text changed in the editor we don't have to handle clear key anymore
+    if ( aEventType == EEventTextUpdate )
+        {
+        iFirstKeyEvent = EFalse;
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserKeyEventHandled::EnableL
+// ----------------------------------------------------------------------------
+//
+void CBrowserKeyEventHandled::EnableL( TBool aEnable )
+    {
+    iEnabled = aEnable;
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserKeyEventHandled::Reset
+// ----------------------------------------------------------------------------
+//
+void CBrowserKeyEventHandled::Reset()
+    {
+    iFirstKeyEvent = ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::PopupList
+// ---------------------------------------------------------------------------
+//
+CBrowserAdaptiveListPopup* CBrowserGotoPane::PopupList()
+    {
+    return iBAdaptiveListPopup;
+    }
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::HandleResourceChange
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::HandleResourceChange(
+                TInt
+                aType
+                )
+    {
+    CCoeControl::HandleResourceChange( aType );
+
+    if ( iBAdaptiveListPopup )
+        {
+        iBAdaptiveListPopup->HandleResourceChange( aType );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::HandleStartOfTransactionL()
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::HandleStartOfTransactionL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CBrowserGotoPane::HandleCompletionOfTransactionL()
+// ---------------------------------------------------------------------------
+//
+void CBrowserGotoPane::HandleCompletionOfTransactionL()
+    {
+    if ( iContentView && iFindKeywordMode && this->IsVisible() &&
+        !iContentView->MenuBar()->MenuPane()->IsVisible() )
+        {
+        if ( GetTextL() )
+            {
+            // Find the typed keyword.
+            if ( iHandleFEPFind && iPrevKeyword->Compare(GetTextL()->Des()) )
+                {
+                iContentView->FindKeywordL( GetTextL() );
+                }
+            }
+        }
+    iHandleFEPFind = ETrue;
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::ActivateVKB
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::ActivateVKB()
+    {
+    if ( ( iEditor && iEditor->TextView() )
+            || ( iSearchEditor && iSearchEditor->TextView()) )
+        {
+        // make sure observer is set
+        iCoeEnv->SyncNotifyFocusObserversOfChangeInFocus();
+
+           // simulate pointer event to force VKB
+
+           // first get point at cursor location
+        TInt pos = 0;
+        CTextView* textView = NULL;
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            pos = iSearchEditor->CursorPos();
+            textView = iSearchEditor->TextView();
+            }
+        else
+            {
+            pos = iEditor->CursorPos();
+            textView = iEditor->TextView();
+            }
+
+        TPoint curPos;
+        textView->DocPosToXyPosL(pos, curPos);
+
+        TPointerEvent pe;
+        pe.iPosition = curPos;
+
+        pe.iType = TPointerEvent::EButton1Down;
+
+        TInt err(KErrNone);
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            TRAP(err, iSearchEditor->HandlePointerEventL(pe));
+            }
+        else
+            {
+            TRAP(err, iEditor->HandlePointerEventL(pe));
+            }
+
+        if (err != KErrNone)
+            {
+            return;
+            }
+
+        pe.iType = TPointerEvent::EButton1Up;
+
+        // VKB will only activate is nothing selected
+        if ( iSearchEditor && iSearchPaneActive )
+            {
+            iSearchEditor->SetSelectionL(pos,pos);
+            TRAP_IGNORE(iSearchEditor->HandlePointerEventL(pe));
+            }
+        else
+            {
+            iEditor->SetSelectionL(pos,pos);
+            TRAP_IGNORE(iEditor->HandlePointerEventL(pe));
+            }
+#ifdef BRDO_SINGLE_CLICK_ENABLED_FF
+        TRAP_IGNORE(SelectAllL());
+#endif
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::ConstructSearchPaneL
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::ConstructSearchPaneL()
+    {
+
+    TFileName iconFile;
+    TInt iconId = iContentView->ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId );
+    iContentView->ApiProvider().Preferences().GetStringValueL( KBrowserSearchIconPath, KMaxFileName, iconFile );
+
+    // If Icon File Path Changed or Icon Id Changed, Refresh the Icon for Search Pane.
+    // Comparing Icon File path as well, because it may be possible that two different
+    // Icon files have same icon id.
+    if ( iconId != iSearchIconId
+            || iSearchIconFilePath.Compare( iconFile ) != 0 )
+        {
+
+        TInt iconMaskId = iContentView->ApiProvider().Preferences().GetIntValue( KBrowserSearchIconMaskId );
+        // Save IconId
+        iSearchIconId = iconId;
+        // Save Icon File
+        iSearchIconFilePath = iconFile;
+
+        // No Icon file or IconId or IconMaskId set , then it means no search provider is still
+        // selected and set by search application, in that case we use the default icon for Search.
+        if ( ! iconFile.Length()
+                || iconId == -1
+                || iconMaskId == -1 )
+            {
+            iconId = EMbmAvkonQgn_indi_find_glass;
+            iconMaskId = EMbmAvkonQgn_indi_find_glass_mask;
+            iconFile = KAvkonBitmapFile;
+            }
+
+
+        if ( iSearchEditor )
+           {
+           delete iSearchEditor;
+           iSearchEditor = NULL;
+           }
+
+        if ( iSearchInputFrame )
+           {
+           delete iSearchInputFrame;
+           iSearchInputFrame = NULL;
+           }
+
+
+        // iSearchEditor != NULL, implies presence of Search Feature, which can be
+        // used to validate search feature exsistence, avoiding unecessary feature
+        // check calls and need of separate variable.
+        iSearchEditor = new (ELeave) CEikGlobalTextEditor;
+        iSearchInputFrame = CAknInputFrame::NewL(
+                iSearchEditor,
+                EFalse,
+                iconFile,
+                iconId,
+                iconMaskId,
+                CAknInputFrame::EPopupLayout );
+
+        iSearchInputFrame->SetContainerWindowL( *this);
+        AknEditUtils::ConstructEditingL (   iSearchEditor,
+                                              KFavouritesMaxUrlGotoPaneDefine,
+                                              1,
+                                              EAknEditorCharactersLowerCase,
+                                              EAknEditorAlignRight,
+                                              EFalse,
+                                              ETrue,
+                                              EFalse );
+
+        iSearchEditor->SetContainerWindowL( *this );
+        iSearchEditor->SetObserver( this );
+        iSearchEditor->SetBorder( TGulBorder::ENone );
+        iSearchEditor->SetAknEditorCase( EAknEditorLowerCase );
+        iSearchEditor->SetAknEditorInputMode( EAknEditorTextInputMode );
+
+        if (AVKONAPAC)
+            {
+            // Disallow chinese input.
+            iSearchEditor->SetAknEditorAllowedInputModes( EAknEditorTextInputMode |
+                    EAknEditorNumericInputMode );
+            }
+
+        //Search should use EAknEditorFlagDefault as search allows all types of input
+        iSearchEditor->SetAknEditorFlags
+            ( EAknEditorFlagDefault | EAknEditorFlagUseSCTNumericCharmap );
+
+        iSearchEditor->SetAknEditorPermittedCaseModes (   EAknEditorUpperCase |
+            EAknEditorLowerCase );
+
+        iSearchEditor->SetEdwinObserver( iGotoKeyHandled );
+        iSearchEditor->SetSkinBackgroundControlContextL(NULL);
+        iSearchEditor->MakeVisible( ETrue );
+        iSearchInputFrame->MakeVisible( ETrue );
+        // Set the default text if not active//
+        if ( ! iSearchPaneActive )
+            {
+            HBufC* searchProvider = HBufC::NewLC( KMaxTitleLength );
+            TPtr searchProviderPtr = searchProvider->Des();
+            iContentView->ApiProvider().Preferences().GetStringValueL( KBrowserSearchProviderTitle,
+                KMaxTitleLength , searchProviderPtr);
+            if( searchProvider->Length() == 0 )
+                {
+                 SetSearchTextL( *iDefaultSearchText );
+                }
+            else
+                {
+                SetSearchTextL( *searchProvider );
+                delete iDefaultSearchText;
+                iDefaultSearchText = NULL;
+                iDefaultSearchText = searchProvider->AllocL();
+                }
+            CleanupStack::PopAndDestroy(searchProvider);
+            }
+        iSearchInputFrame->ActivateL();
+        }
+
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetGotoPaneActive
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::SetGotoPaneActiveL()
+    {
+
+    iGotoPaneActive = ETrue;
+    iSearchPaneActive = EFalse;
+
+    if ( iSearchEditor )
+        {
+#if defined(BRDO_SEARCH_INTEGRATION_FF)
+        iEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB );
+#endif
+        // if searchpane is empty add default text
+        if ( !SearchTextLength() )
+            {
+            HBufC* searchProvider = HBufC::NewLC( KMaxTitleLength );
+            TPtr searchProviderPtr = searchProvider->Des();
+            iContentView->ApiProvider().Preferences().GetStringValueL( KBrowserSearchProviderTitle,
+                KMaxTitleLength , searchProviderPtr);
+            if( searchProvider->Length() == 0 )
+                {
+                SetSearchTextL( *iDefaultSearchText );
+                }
+            else
+                {
+                SetSearchTextL( *searchProvider );
+                }
+            CleanupStack::PopAndDestroy(searchProvider);
+            }
+
+        // if gotopane is empty add default text
+        if ( !TextLength() )
+            {
+            SetTextL( KWWWString );
+            }
+
+        iSearchEditor->SetFocus( EFalse);
+        }
+
+    iEditor->SetFocus( ETrue );
+    CBrowserAppUi::Static()->UpdateCbaL();
+    SetTextModeItalicL();
+    iEditor->SetCursorPosL(iEditor->TextLength(), EFalse);
+    DrawDeferred();
+    }
+
+// ----------------------------------------------------------------------------
+// CBrowserGotoPane::SetSearchPaneActive
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::SetSearchPaneActiveL()
+    {
+
+    if ( iSearchEditor )
+        {
+#if defined(BRDO_SEARCH_INTEGRATION_FF)
+        iSearchEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB );
+#endif
+        // if gotopane is empty add default text
+        if ( !TextLength() )
+            {
+            SetTextL( KWWWString );
+            }
+
+        // if searchpane has default text remove it
+        HBufC* text = iSearchEditor->GetTextInHBufL();
+        if ( text )
+            {
+            CleanupStack::PushL( text );
+            if ( !text->Compare( iDefaultSearchText->Des() ) )
+                {
+                SetSearchTextL( KNullDesC );
+                }
+
+            CleanupStack::PopAndDestroy( text );
+            }
+
+        iSearchPaneActive = ETrue;
+        iGotoPaneActive = EFalse;
+        iEditor->SetFocus( EFalse );
+        if ( iBAdaptiveListPopup )
+            iBAdaptiveListPopup->HidePopupL();
+        iSearchEditor->SetFocus( ETrue );
+        iSearchEditor->SetCursorPosL(iSearchEditor->TextLength(), EFalse);
+        CBrowserAppUi::Static()->UpdateCbaL();
+
+        SetTextModeItalicL();
+        DrawDeferred();
+        }
+    }
+
+
+// ----------------------------------------------------------------------------
+// CBrowserBookmarksGotoPane::SetTextModeItalic
+// ----------------------------------------------------------------------------
+void CBrowserGotoPane::SetTextModeItalicL()
+    {
+
+    // Editor Control is laid in a scalable way, so we need to get the correct font
+    // specification for setting CharFormatLayer, We could have used GetNearestFontInTwips,
+    // as done above in SetTextL() but it does not provide correct fonts for editor.
+    // We do not need to set the FontPosture back to EPostureUpright ( Normal ), as it
+    // is automatically handled by AknLayoutUtils::LayoutEdwinScalable called by
+    // iInputFrame->SetRect(), which overwrites all the properties for Editor.
+    if ( iSearchEditor )
+        {
+        TAknTextComponentLayout   editorLayout;
+        TBool apac( AknLayoutUtils::Variant() == EApacVariant && ( CAknInputFrame::EShowIndicators ) );
+        editorLayout    = AknLayoutScalable_Avkon::input_popup_find_pane_t1( apac ? 2 : 0 );
+        TAknTextLineLayout lineLayout = editorLayout.LayoutLine();
+        TInt fontid =  lineLayout.FontId();
+        const CAknLayoutFont *font = AknLayoutUtils::LayoutFontFromId( fontid  );
+
+        TCharFormat charFormat;
+        TCharFormatMask charFormatMask;
+        charFormat.iFontSpec = font->FontSpecInTwips();
+        charFormat.iFontSpec.iFontStyle.SetPosture( EPostureItalic );
+        charFormatMask.SetAttrib(EAttFontTypeface);
+        charFormatMask.SetAttrib(EAttFontHeight);
+        charFormatMask.SetAttrib(EAttFontStrokeWeight);
+        charFormatMask.SetAttrib(EAttFontPosture);
+
+        // Owner ship of charFormatLayer is taken by Editor
+        CCharFormatLayer* charFormatLayerItalics = NULL;
+        CCharFormatLayer* charFormatLayerUpright = NULL;
+        charFormatLayerItalics = CCharFormatLayer::NewL(charFormat,charFormatMask);
+        charFormat.iFontSpec.iFontStyle.SetPosture( EPostureUpright );
+        charFormatLayerUpright = CCharFormatLayer::NewL(charFormat,charFormatMask);
+        if ( iSearchPaneActive   )
+            {
+            iSearchEditor->SetCharFormatLayer(charFormatLayerUpright);
+            iEditor->SetCharFormatLayer(charFormatLayerItalics);
+            }
+        else
+            {
+            iSearchEditor->SetCharFormatLayer(charFormatLayerItalics);
+            iEditor->SetCharFormatLayer(charFormatLayerUpright);
+            }
+        }
+   }
+
+void CBrowserGotoPane::ResetPrevText()
+    {
+    iPrevKeyword->Des().SetLength(0);
+    }
+
+//  END OF FILE