src/hbcore/vkbhosts/hbabstractvkbhost.cpp
changeset 21 4633027730f5
parent 6 c3690ec91ef8
child 23 e6ad4ef83b23
equal deleted inserted replaced
7:923ff622b8b9 21:4633027730f5
    36 #include "hbinstance.h"
    36 #include "hbinstance.h"
    37 
    37 
    38 #include <QTextEdit>
    38 #include <QTextEdit>
    39 
    39 
    40 const int HbAnimationTime = 200;
    40 const int HbAnimationTime = 200;
    41 const qreal HbEditorExtraMargin = 5.0;
    41 const qreal HbEditorExtraMargin = 17.0;
    42 const qreal HbCursorLineMargin = 15.0;
    42 const qreal HbCursorLineMargin = 5.0;
    43 const qreal HbContainerBorderMargin = 20.0;
    43 const qreal HbContainerBorderMargin = 20.0;
    44 const qreal HbHeightVerticalFactor = 0.5;
    44 const qreal HbHeightVerticalFactor = 0.5;
    45 const qreal HbHeightHorizFactor = 0.7;
    45 const qreal HbHeightHorizFactor = 0.7;
       
    46 //Marginal value of the keypad height
       
    47 const qreal HbHeightMarginFactor = 0.6;
       
    48 const qreal HbDeltaHeight = 3.0;
       
    49 
    46 const QString KHandWritingName("Handwriting");
    50 const QString KHandWritingName("Handwriting");
    47 // see hbpopup.cpp for this
    51 // see hbpopup.cpp for this
    48 extern const char* KPositionManagedByVKB;
    52 extern const char* KPositionManagedByVKB;
    49 
    53 
    50 /// @cond
    54 /// @cond
   180       mContainerMovementStartingPoint(QPointF(0, 0)),
   184       mContainerMovementStartingPoint(QPointF(0, 0)),
   181       mContainerMovementVector(QPointF(0, 0)),
   185       mContainerMovementVector(QPointF(0, 0)),
   182       mKeypadMovementStartingPoint(QPointF(0, 0)),
   186       mKeypadMovementStartingPoint(QPointF(0, 0)),
   183       mKeypadMovementVector(QPointF(0, 0)),
   187       mKeypadMovementVector(QPointF(0, 0)),
   184       mInputMethod(0),
   188       mInputMethod(0),
   185       mKeypadStatusBeforeOrientationChange(HbVkbHost::HbVkbStatusClosed)
   189       mKeypadStatusBeforeOrientationChange(HbVkbHost::HbVkbStatusClosed),
       
   190       mTitleBarHiddenByVkbHost(false),
       
   191       mStatusBarHiddenByVkbHost(false)
   186 {
   192 {
   187     mTimeLine.setUpdateInterval(16);
   193     mTimeLine.setUpdateInterval(16);
   188 }
   194 }
   189 
   195 
   190 HbAbstractVkbHostPrivate::~HbAbstractVkbHostPrivate()
   196 HbAbstractVkbHostPrivate::~HbAbstractVkbHostPrivate()
   219     }
   225     }
   220 
   226 
   221     if (status == HbVkbHost::HbVkbStatusOpened) {
   227     if (status == HbVkbHost::HbVkbStatusOpened) {
   222         // Calculate the area that remains visible when the keypad is open.
   228         // Calculate the area that remains visible when the keypad is open.
   223         QRectF visibleArea = QRectF(0.0, 0.0, mScreenSize.width(), mScreenSize.height() - mKeypad->size().height());
   229         QRectF visibleArea = QRectF(0.0, 0.0, mScreenSize.width(), mScreenSize.height() - mKeypad->size().height());
   224 
   230         // adjust the container position such that the focused object is always visible. This is required in some cases 
       
   231         // where the actual visible area is very less when the keypad is opened. The cotainer position is automatically adjusted when
       
   232         // the keypad height to screen height ratio exceeds the marginal height value HbHeightMarginFactor. By doing this, we can make
       
   233         // sure that some space available for displaying popups like exactword popup in some input methods        
       
   234         bool adjustContainer = (q_ptr->confirmedKeyboardSize().height() >
       
   235             (mScreenSize.height() * HbHeightMarginFactor))? true : false;
   225         // Find out the container area.
   236         // Find out the container area.
   226         QRectF containerArea = mContainerWidget->sceneBoundingRect();
   237         QRectF containerArea = mContainerWidget->sceneBoundingRect();
   227         containerArea.adjust(0.0, -HbContainerBorderMargin, 0.0, HbContainerBorderMargin);
   238         containerArea.adjust(0.0, -HbContainerBorderMargin, 0.0, HbContainerBorderMargin);
   228 
   239 
       
   240         HbMainWindow *mainWin = mainWindow();
       
   241         HbView *currentView = mainWin ? mainWin->currentView() : 0;
       
   242 
       
   243         if (!currentView) {
       
   244             return false;
       
   245         }
       
   246         // check whether the title and status bars are hidden or not
       
   247         bool isTitleOrStatusBarVisible = currentView->isItemVisible(
       
   248             Hb::TitleBarItem) | currentView->isItemVisible(Hb::StatusBarItem);
       
   249 
       
   250         // move the container up when hiding the title and status bars
       
   251         if (isTitleOrStatusBarVisible) {
       
   252             mContainerMovementVector.setY(visibleArea.top() - currentView->sceneBoundingRect().top());			
       
   253         }
       
   254 
   229         if (visibleArea.contains(containerArea)) {
   255         if (visibleArea.contains(containerArea)) {
   230             // The whole container is already inside the visible area, nothing to do.
   256             // The whole container is already inside the visible area, nothing to do.
   231             return false;
   257             return false;
   232         }
   258         }
   233 
   259 
       
   260         // If it isn't in the visible area yet but fits there. Let's move it there.
   234         if (visibleArea.height() >= containerArea.height()) {
   261         if (visibleArea.height() >= containerArea.height()) {
   235             // It isn't in the visible area yet but fits there. Let's move it there.
   262             // calculate the new container area after hiding the bars
   236             mContainerMovementVector = QPointF(0.0, visibleArea.bottom() - containerArea.bottom());
   263             containerArea.translate(mContainerMovementVector);
       
   264 
       
   265             if (adjustContainer) {
       
   266                 adjustContainerPosition();
       
   267             } else {
       
   268                 mContainerMovementVector += QPointF(0.0, visibleArea.bottom() - containerArea.bottom());
       
   269             }
   237             return true;
   270             return true;
   238         }
   271         }
   239 
   272 
   240         // Find out the editor bounding box and add a small margin to height.
   273         // Find out the editor bounding box and add a small margin to height.
   241         QRectF editorGeometry = mInputMethod->focusObject()->editorGeometry();
   274         QRectF editorGeometry = mInputMethod->focusObject()->editorGeometry();
   242         editorGeometry.adjust(0.0, -HbCursorLineMargin, 0.0, HbCursorLineMargin);
   275         editorGeometry.adjust(0.0, -HbCursorLineMargin, 0.0, HbCursorLineMargin);
       
   276 
       
   277         // calculate the new editor position after hiding the title bars		
       
   278         editorGeometry.translate(mContainerMovementVector);
   243 
   279 
   244         // Then see if the editor is already inside the visible area.
   280         // Then see if the editor is already inside the visible area.
   245         // If it isn't, see if it would fit there.
   281         // If it isn't, see if it would fit there.
   246         if (!visibleArea.contains(editorGeometry)) {
   282         if (!visibleArea.contains(editorGeometry)) {
   247             if (editorGeometry.width() <= visibleArea.width() &&
   283             if (editorGeometry.width() <= visibleArea.width() &&
   248                 editorGeometry.height() <= visibleArea.height()) {
   284                 editorGeometry.height() <= visibleArea.height()) {
       
   285                 // first check whether the microfocus rectangle is inside the visible area. In case of
       
   286                 // text or multiline editors, dont change the editor position if cursor is in visible area                
       
   287                 if (adjustContainer) {
       
   288                     if (adjustContainerPosition()) {
       
   289                         return true;
       
   290                     }
       
   291                 }
   249                 // Yes, it fits into visible area, let's move it there so that
   292                 // Yes, it fits into visible area, let's move it there so that
   250                 // the whole editor area is in use right away.
   293                 // the whole editor area is in use right away.
   251                 // First check if we want to move it to upper or lower
   294                 // First check if we want to move it to upper or lower
   252                 // part of the visible area.
   295                 // part of the visible area.
   253                 if (editorGeometry.top() <= visibleArea.top()) {
   296                 if (editorGeometry.top() <= visibleArea.top()) {
   254                     // It goes to the upper part of the visible area.
   297                     // It goes to the upper part of the visible area.
   255                     mContainerMovementVector = QPointF(0.0, -editorGeometry.top());
   298                     mContainerMovementVector += QPointF(0.0, -editorGeometry.top());
   256                 } else {
   299                 } else {
   257                     mContainerMovementVector = QPointF(0.0, visibleArea.bottom() - editorGeometry.bottom());
   300                     mContainerMovementVector += QPointF(0.0, visibleArea.bottom() - editorGeometry.bottom());
   258                 }
   301                 } 
   259 
       
   260                 return true;
   302                 return true;
   261             }
   303             }
   262         }
   304         }
   263 
   305 
   264         // The editor is either already inside the visible area or doesn't fit there.
   306         // The editor is either already inside the visible area or doesn't fit there.
   266         // First find out micro focus rectangle and increase the height by a small margin.
   308         // First find out micro focus rectangle and increase the height by a small margin.
   267         QRectF microFocus = mInputMethod->focusObject()->microFocus();
   309         QRectF microFocus = mInputMethod->focusObject()->microFocus();
   268         microFocus.setTop(microFocus.top() - HbEditorExtraMargin);
   310         microFocus.setTop(microFocus.top() - HbEditorExtraMargin);
   269         microFocus.setBottom(microFocus.bottom() + HbEditorExtraMargin);
   311         microFocus.setBottom(microFocus.bottom() + HbEditorExtraMargin);
   270 
   312 
       
   313         // calculate the new cursor position after hiding the title bars
       
   314         microFocus.translate(mContainerMovementVector);
       
   315  			
   271         // Check whether the cursor rectangle is inside visible area.
   316         // Check whether the cursor rectangle is inside visible area.
   272         if (!visibleArea.contains(microFocus)) {
   317         if (!visibleArea.contains(microFocus)) {
   273             QRectF realEditorGeometry = editorGeometry;
   318             QRectF realEditorGeometry = editorGeometry;
   274             realEditorGeometry.adjust(0.0, HbCursorLineMargin, 0.0, -HbCursorLineMargin);
   319             realEditorGeometry.adjust(0.0, HbCursorLineMargin, 0.0, -HbCursorLineMargin);
   275             if (!realEditorGeometry.contains(microFocus)) {
   320             if (!realEditorGeometry.contains(microFocus)) {
   285                 // Is the cursor visible then?
   330                 // Is the cursor visible then?
   286                 // This is always preferred, use it if possible.
   331                 // This is always preferred, use it if possible.
   287                 QPointF toOriginalPos = mOriginalContainerPosition - mContainerWidget->pos();
   332                 QPointF toOriginalPos = mOriginalContainerPosition - mContainerWidget->pos();
   288                 QRectF translatedMicroFocus = microFocus.translated(toOriginalPos);
   333                 QRectF translatedMicroFocus = microFocus.translated(toOriginalPos);
   289                 if (visibleArea.contains(translatedMicroFocus)) {
   334                 if (visibleArea.contains(translatedMicroFocus)) {
   290                     mContainerMovementVector = toOriginalPos;
   335                     mContainerMovementVector += toOriginalPos;
   291                 } else {
   336                 } else {
   292                     // It goes to the upper part of the visible area.
   337                     // It goes to the upper part of the visible area.
   293                     mContainerMovementVector = QPointF(0.0, HbCursorLineMargin - microFocus.top());
   338                     mContainerMovementVector += QPointF(0.0, visibleArea.top() - microFocus.top());
   294                 }
   339                 }
   295             } else {
   340             } else {
   296                 mContainerMovementVector = QPointF(0.0, visibleArea.bottom() - HbCursorLineMargin - microFocus.bottom());
   341                 mContainerMovementVector += QPointF(0.0, visibleArea.bottom() - microFocus.bottom());
   297             }
   342             }		
   298 
       
   299             return true;
   343             return true;
   300         }
   344         }
       
   345         if (adjustContainer && adjustContainerPosition()) {
       
   346            return true;
       
   347 		}		   
   301     } else {
   348     } else {
   302         // It is going to be closed or minimized.
   349         // It is going to be closed or minimized.
   303         mContainerMovementVector = mOriginalContainerPosition - mContainerMovementStartingPoint;
   350         mContainerMovementVector = mOriginalContainerPosition - mContainerMovementStartingPoint;
   304         return true;
   351         return true;
   305     }
   352     }
   393                 mCallback->aboutToOpen(q_ptr);
   440                 mCallback->aboutToOpen(q_ptr);
   394                 q_ptr->resizeKeyboard(); // Make sure that the keyboard doesn't exceed given boundaries.
   441                 q_ptr->resizeKeyboard(); // Make sure that the keyboard doesn't exceed given boundaries.
   395             }
   442             }
   396 
   443 
   397             if (prepareAnimations(HbVkbHost::HbVkbStatusOpened)) {
   444             if (prepareAnimations(HbVkbHost::HbVkbStatusOpened)) {
       
   445                 // hide the title bar and status bar when opening the vkb
       
   446                 setTitleAndStatusBarVisible(false);
       
   447 
   398                 // Run the animation
   448                 // Run the animation
   399                 mKeypadStatus = HbVkbHost::HbVkbStatusOpened;
   449                 mKeypadStatus = HbVkbHost::HbVkbStatusOpened;
   400                 mTimeLine.start();
   450                 mTimeLine.start();
   401             }
   451             }
   402         }
   452         }
   412 
   462 
   413     if (mKeypadStatus != HbVkbHost::HbVkbStatusClosed) {
   463     if (mKeypadStatus != HbVkbHost::HbVkbStatusClosed) {
   414         mCallback->aboutToClose(q_ptr);
   464         mCallback->aboutToClose(q_ptr);
   415 
   465 
   416         if (prepareAnimations(HbVkbHost::HbVkbStatusClosed)) {
   466         if (prepareAnimations(HbVkbHost::HbVkbStatusClosed)) {
       
   467             // show the title bar and status bar when closing the vkb	
       
   468             setTitleAndStatusBarVisible(true);
       
   469 
   417             mKeypadStatus = HbVkbHost::HbVkbStatusClosed;
   470             mKeypadStatus = HbVkbHost::HbVkbStatusClosed;
   418             mTimeLine.start();
   471             mTimeLine.start();
   419         }
   472         }
   420     }
   473     }
   421 }
   474 }
   424 {
   477 {
   425     if (mCallback && mKeypadStatus != HbVkbHost::HbVkbStatusMinimized) {
   478     if (mCallback && mKeypadStatus != HbVkbHost::HbVkbStatusMinimized) {
   426         mCallback->aboutToClose(q_ptr);
   479         mCallback->aboutToClose(q_ptr);
   427         if (mContainerWidget->widgetObject()) {
   480         if (mContainerWidget->widgetObject()) {
   428             if (prepareAnimations(HbVkbHost::HbVkbStatusMinimized)) {
   481             if (prepareAnimations(HbVkbHost::HbVkbStatusMinimized)) {
       
   482                 //show the title bar and status bar when minimizing the vkb 	
       
   483                 setTitleAndStatusBarVisible(true);
       
   484 
   429                 mKeypadStatus = HbVkbHost::HbVkbStatusMinimized;
   485                 mKeypadStatus = HbVkbHost::HbVkbStatusMinimized;
   430                 mTimeLine.start();
   486                 mTimeLine.start();
   431             }
   487             }
   432         }
   488         }
   433     }
   489     }
   445         if (mKeypadStatus != HbVkbHost::HbVkbStatusOpened) {
   501         if (mKeypadStatus != HbVkbHost::HbVkbStatusOpened) {
   446             mCallback->aboutToOpen(q_ptr);
   502             mCallback->aboutToOpen(q_ptr);
   447             q_ptr->resizeKeyboard(); // Make sure that the keyboard doesn't exceed given boundaries.
   503             q_ptr->resizeKeyboard(); // Make sure that the keyboard doesn't exceed given boundaries.
   448         }
   504         }
   449         if (prepareAnimations(HbVkbHost::HbVkbStatusOpened)) {
   505         if (prepareAnimations(HbVkbHost::HbVkbStatusOpened)) {
       
   506             // hide the title bar and status bar when opening the vkb		
       
   507             setTitleAndStatusBarVisible(false);
       
   508 
   450             if (!disableCursorShift()) {
   509             if (!disableCursorShift()) {
   451                 // Move the container widget to keep the focused line visible.
   510                 // Move the container widget to keep the focused line visible.
   452                 mContainerWidget->setPos(mContainerWidget->pos() + mContainerMovementVector);
   511                 mContainerWidget->setPos(mContainerWidget->pos() + mContainerMovementVector);
   453 
   512 
   454                 // Move the keypad
   513                 // Move the keypad
   489 
   548 
   490 void HbAbstractVkbHostPrivate::closeKeypadWithoutAnimation()
   549 void HbAbstractVkbHostPrivate::closeKeypadWithoutAnimation()
   491 {
   550 {
   492     if (mKeypadStatus != HbVkbHost::HbVkbStatusClosed && mKeypad) {
   551     if (mKeypadStatus != HbVkbHost::HbVkbStatusClosed && mKeypad) {
   493         mCallback->aboutToClose(q_ptr);
   552         mCallback->aboutToClose(q_ptr);
       
   553         // show the title bar and status bar when closing the vkb
       
   554         setTitleAndStatusBarVisible(true);
       
   555 
   494         // Set original content widget position
   556         // Set original content widget position
   495         mKeypadStatus = HbVkbHost::HbVkbStatusClosed;
   557         mKeypadStatus = HbVkbHost::HbVkbStatusClosed;
   496 
   558 
   497         if (!disableCursorShift()) {
   559         if (!disableCursorShift()) {
   498             // Return the container widget to original position.
   560             // Return the container widget to original position.
   514         mCallback->aboutToClose(q_ptr);
   576         mCallback->aboutToClose(q_ptr);
   515         if (mKeypad->scene() != mainWin->scene()) {
   577         if (mKeypad->scene() != mainWin->scene()) {
   516             // Add item to scene if it is not already in there.
   578             // Add item to scene if it is not already in there.
   517             mainWin->scene()->addItem(mKeypad);
   579             mainWin->scene()->addItem(mKeypad);
   518         }
   580         }
       
   581         // show the title bar and status bar when minimizing the vkb
       
   582         setTitleAndStatusBarVisible(true);
   519 
   583 
   520         mKeypadStatus = HbVkbHost::HbVkbStatusMinimized;
   584         mKeypadStatus = HbVkbHost::HbVkbStatusMinimized;
   521         if (!disableCursorShift()) {
   585         if (!disableCursorShift()) {
   522             // Return the container widget to original position.
   586             // Return the container widget to original position.
   523             mContainerWidget->setPos(mOriginalContainerPosition);
   587             mContainerWidget->setPos(mOriginalContainerPosition);
   604     if (mainWindow() && mainWindow()->orientation() == Qt::Horizontal && imName == KHandWritingName) {
   668     if (mainWindow() && mainWindow()->orientation() == Qt::Horizontal && imName == KHandWritingName) {
   605         return true;
   669         return true;
   606     }
   670     }
   607     return false;
   671     return false;
   608 }
   672 }
   609 
   673 void HbAbstractVkbHostPrivate::setTitleAndStatusBarVisible(bool visible)
       
   674 {
       
   675     HbMainWindow *mainWin = mainWindow();
       
   676     HbView *currentView;
       
   677 
       
   678     if (mainWin && (currentView = mainWin->currentView())) {
       
   679         HbView::HbViewFlags flags = currentView->viewFlags();
       
   680 
       
   681         HbView::HbViewFlags setFlags = HbView::ViewFlagNone;
       
   682         if (!visible) {
       
   683             if (!(flags & HbView::ViewTitleBarHidden)) {
       
   684                 setFlags |= HbView::ViewTitleBarHidden;
       
   685                 mTitleBarHiddenByVkbHost = true;
       
   686             }
       
   687             if (!(flags & HbView::ViewStatusBarHidden)) {
       
   688                 setFlags |= HbView::ViewStatusBarHidden;
       
   689                 mStatusBarHiddenByVkbHost = true;
       
   690             }
       
   691             if (mTitleBarHiddenByVkbHost || mStatusBarHiddenByVkbHost) {
       
   692                 setFlags |= HbView::ViewDisableRelayout;
       
   693             }	
       
   694             currentView->setViewFlags(flags | setFlags);
       
   695         } else {
       
   696             if ((flags & HbView::ViewDisableRelayout) && (mTitleBarHiddenByVkbHost ||
       
   697                 mStatusBarHiddenByVkbHost)) {
       
   698                 setFlags |= HbView::ViewDisableRelayout;
       
   699             }
       
   700             if ((flags & HbView::ViewTitleBarHidden) && mTitleBarHiddenByVkbHost) {
       
   701                 setFlags |= HbView::ViewTitleBarHidden;
       
   702                 mTitleBarHiddenByVkbHost = false;
       
   703             }
       
   704             if ((flags & HbView::ViewStatusBarHidden) && mStatusBarHiddenByVkbHost) {
       
   705                 setFlags |= HbView::ViewStatusBarHidden;
       
   706                 mStatusBarHiddenByVkbHost = false;
       
   707             }
       
   708             currentView->setViewFlags(flags & ~setFlags);
       
   709         }
       
   710     }
       
   711 }
       
   712 
       
   713 bool HbAbstractVkbHostPrivate::adjustContainerPosition()
       
   714 {
       
   715     bool result = false;
       
   716     if (!mInputMethod || !mInputMethod->focusObject()) {
       
   717         return result;
       
   718     }
       
   719     // Calculate the area that remains visible when the keypad is open.	
       
   720     QRectF visibleArea = QRectF(0.0, 0.0, mScreenSize.width(), mScreenSize.height() - mKeypad->size().height());
       
   721     QRectF microFocus = mInputMethod->focusObject()->microFocus();
       
   722     microFocus.adjust(0.0, -HbEditorExtraMargin, 0.0, HbEditorExtraMargin);
       
   723 
       
   724     // calculate the new cursor position after moving it to the visible area
       
   725     QRectF newCursorRect = microFocus.translated(mContainerMovementVector);
       
   726     if (visibleArea.contains(newCursorRect)) {
       
   727         qreal topArea = newCursorRect.top() - visibleArea.top() - HbDeltaHeight;
       
   728         qreal bottomArea = visibleArea.bottom() - newCursorRect.bottom() - HbDeltaHeight;
       
   729         if (topArea > 0 && bottomArea > 0) {
       
   730             if (topArea >= bottomArea) {
       
   731                 mContainerMovementVector += QPointF(0.0, bottomArea);
       
   732             } else {
       
   733                 mContainerMovementVector += QPointF(0.0, -topArea);
       
   734             }
       
   735         }
       
   736         result = true;  
       
   737     }
       
   738     return result;
       
   739 }
   610 
   740 
   611 /// @endcond
   741 /// @endcond
   612 
   742 
   613 
   743 
   614 HbAbstractVkbHost::HbAbstractVkbHost(HbWidget *containerWidget) : d_ptr(new HbAbstractVkbHostPrivate(this, containerWidget))
   744 HbAbstractVkbHost::HbAbstractVkbHost(HbWidget *containerWidget) : d_ptr(new HbAbstractVkbHostPrivate(this, containerWidget))
   997 
  1127 
   998     return QRectF();
  1128     return QRectF();
   999 }
  1129 }
  1000 
  1130 
  1001 /*!
  1131 /*!
  1002 \reimp
  1132 \deprecated HbAbstractVkbHost::minimizeKeypad(bool)
       
  1133     is deprecated.
  1003 */
  1134 */
  1004 void HbAbstractVkbHost::minimizeKeypad(bool animationAllowed)
  1135 void HbAbstractVkbHost::minimizeKeypad(bool animationAllowed)
  1005 {
  1136 {
  1006     Q_D(HbAbstractVkbHost);
  1137     Q_D(HbAbstractVkbHost);
  1007     if (d->mKeypadStatus != HbVkbStatusClosed && !d->mKeypadOperationOngoing) {
  1138     if (d->mKeypadStatus != HbVkbStatusClosed && !d->mKeypadOperationOngoing) {
  1016         d->mKeypadOperationOngoing = false;
  1147         d->mKeypadOperationOngoing = false;
  1017     }
  1148     }
  1018 }
  1149 }
  1019 
  1150 
  1020 /*!
  1151 /*!
  1021 \reimp
  1152 \deprecated HbAbstractVkbHost::openMinimizedKeypad(HbVirtualKeyboard*, HbInputMethod*)
       
  1153     is deprecated.
  1022 */
  1154 */
  1023 void HbAbstractVkbHost::openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner)
  1155 void HbAbstractVkbHost::openMinimizedKeypad(HbVirtualKeyboard *vkb, HbInputMethod *owner)
  1024 {
  1156 {
  1025     Q_D(HbAbstractVkbHost);
  1157     Q_D(HbAbstractVkbHost);
  1026     d->mInputMethod = owner;
  1158     d->mInputMethod = owner;