diff -r ecbabf52600f -r bd83ceabce89 textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp --- a/textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp Wed Sep 01 12:23:33 2010 +0100 +++ b/textinput/peninputsplitqwerty/src/peninputsplitqwertylafdatamgr.cpp Tue Sep 14 21:59:06 2010 +0300 @@ -345,10 +345,6 @@ layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout ); pic3pRightWidth = layoutrect.Rect().Width(); - linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(v1).LayoutLine(); - layoutrect.LayoutRect( keypadRect.Rect(), linelayout ); - TInt rowIndentWidth = layoutrect.Rect().Width(); - base = rectMainWin.iTl; data->iClientRect = RelativeRect( rectMainWin, base ); @@ -356,8 +352,43 @@ TRect rectOfKeypad = RelativeRect( keypadRect.Rect(), base ); TRect rectOfButtons = rectOfKeypad; - rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); - rectOfButtons.iTl.iY += rectOfKeypad.Height(); + + TInt rowNumberOfKeyboard; + TInt gapValue; + switch ( aLayoutType ) + { + case ELayout10x3: + { + rowNumberOfKeyboard = 3; + break; + } + case ELayout11x3: + { + rowNumberOfKeyboard = 3; + break; + } + case ELayout11x4: + { + rowNumberOfKeyboard = 4; + break; + } + default: + { + rowNumberOfKeyboard = 3; + break; + } + } + + // Compute the gap between first row key's top line and keyboard's top line + gapValue = keypaneRect.Rect().iTl.iY - keypadRect.Rect().iTl.iY; + // Compute function button's top left Y coordinate + rectOfButtons.iTl.iY = rectOfButtons.iTl.iY + + keypaneRect.Rect().Height() * rowNumberOfKeyboard + gapValue; + + // Compute keyboard position + rectOfKeypad.iBr.iY = rectOfKeypad.iTl.iY + + keypaneRect.Rect().Height() * rowNumberOfKeyboard + gapValue; + rectOfKeypad.iTl.iY += gapValue; //keypad data->iKeypad.iKaypadRect = rectOfKeypad; @@ -375,18 +406,15 @@ for ( TInt i = 0; i < aRows; i++ ) { - TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for ( TInt j = 0; j < aCols; j++ ) { TRect bound = rectXPane; bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); - bound.Move( indent, 0 ); data->iKeypad.iRects.AppendL( bound ); TRect inner = rectXPane; inner.Move( j * rectXPane.Width(), i * rectXPane.Height() ); - inner.Move( indent, 0 ); TAknLayoutText keyTextLayout; keyTextLayout.LayoutText( inner, keyText ); @@ -398,7 +426,10 @@ //all template rects are relative to TL of buttons row rectXPane = keypaneRect.Rect(); - rectXBorder = RelativeRect( keycellRect.Rect(), rectXPane.iTl ); + + // The key rect without gap + rectXBorder = RelativeRect( keypaneRect.Rect(), rectXPane.iTl ); + rectXInner = RelativeRect( keylabelRect.Rect(), rectXPane.iTl ); TRect rect3PicPane = RelativeRect( pic3paneRect.Rect(), rectXPane.iTl ); rectXPane.Move( - rectXPane.iTl );