uifw/AvKon/src/AknSctDialog.cpp
branchRCL_3
changeset 64 85902f042028
parent 59 978afdc0236f
child 72 a5e7a4f63858
--- a/uifw/AvKon/src/AknSctDialog.cpp	Tue Sep 14 21:48:24 2010 +0300
+++ b/uifw/AvKon/src/AknSctDialog.cpp	Wed Sep 15 12:29:17 2010 +0300
@@ -106,6 +106,7 @@
     TAknCharMapPictoMode    iPictoMode;
     TAknCharMapEmotionMode  iEmotionMode;
     TBool iFirstOrientation;
+    TBool iSimKeyDown;
     };
 
 // -----------------------------------------------------------------------------
@@ -116,7 +117,8 @@
 //
 CAknCharMapDialogExtension::CAknCharMapDialogExtension(CAknCharMapDialog* aCaller) : 
 iFlags(0), iQwertyMode(EFalse), iCaller(aCaller), 
-iShowAnotherTableCharCase(-1), iPictoMode(EAknCharMapPictoNoUse), iEmotionMode(EAknCharMapEmotionNoUse)
+iShowAnotherTableCharCase(-1), iPictoMode(EAknCharMapPictoNoUse), iEmotionMode(EAknCharMapEmotionNoUse),
+iSimKeyDown( EFalse )
     {
     }
 
@@ -297,22 +299,7 @@
     // to select multiple characters before.
     if (aButtonId == EAknSoftkeyOk || aButtonId == EAknSoftkeySelect || aButtonId == EAknSoftkeyExit)
         {
-        // In Korean UI, SCT isn't closed by pressing "Select" softkey,
-        // but SCT is closed by pressing "Back"(button id is EAknSoftkeyClose).
-        // Japanese feature for SCT will not be supported since TB9.2 PS2,
-        // so remove the code for Japanese SCT.
         MAknSctFocusHandler* handler = charmapControl->FocusHandler();
-        if ( charmapControl->IsKoreanSctUi() &&
-            aButtonId != EAknSoftkeyExit &&
-            handler->FocusedControl() == charmapControl)
-            {
-            TKeyEvent key;
-            key.iCode=EKeySpace;
-            key.iModifiers=0;
-            handler->FocusedControl()->OfferKeyEventL(key, EEventKey);
-            return(EFalse);
-            }
-        // else
         TKeyEvent key;
         key.iCode=EKeyOK;
         key.iModifiers=0;
@@ -494,20 +481,35 @@
                 break;
             }
         }
-    else if (aModifiers == EEventKeyUp)
+    else if ( aModifiers == EEventKeyDown )
         {
-        switch (aKeyEvent.iScanCode)
+        switch ( aKeyEvent.iScanCode )
             {
             case EStdKeyLeftFunc:
             case EStdKeyRightFunc:
                 {
-                if (!aKeyEvent.iRepeats) // switch another table when repeat count is 0 only.
+                iExtension->iSimKeyDown = ETrue;
+                }
+                break;
+            default:
+                break;
+            }
+        }
+    else if ( aModifiers == EEventKeyUp )
+        {
+        switch ( aKeyEvent.iScanCode )
+            {
+            case EStdKeyLeftFunc:
+            case EStdKeyRightFunc:
+                {
+                if ( !aKeyEvent.iRepeats  && iExtension->iSimKeyDown ) // switch another table when repeat count is 0 only.
                     {
                     if (!isLockNumericKeys) // Check whether current input mode is Qwerty.
                         {
                         SwitchTablesOrPagesL();
                         }
                     }
+                iExtension->iSimKeyDown = EFalse;
                 }
                 break;
             default: