]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/uiactioncmn.cpp
Always link with expat in monolithic build.
[wxWidgets.git] / src / common / uiactioncmn.cpp
index fce28719e39f047594047c66727298159da162e8..bfd5135e0c845fa01449846c06242caa1b1cdf2f 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Kevin Ollivier, Steven Lamerton, Vadim Zeitlin
 // Modified by:
 // Created:     2010-03-06
-// RCS-ID:      $Id: menu.cpp 54129 2008-06-11 19:30:52Z SC $
+// RCS-ID:      $Id$
 // Copyright:   (c) Kevin Ollivier
 //              (c) 2010 Steven Lamerton
 //              (c) 2010 Vadim Zeitlin
@@ -50,8 +50,6 @@ wxUIActionSimulator::MouseDragDrop(long x1, long y1, long x2, long y2,
 bool
 wxUIActionSimulator::Key(int keycode, int modifiers, bool isDown)
 {
-    wxASSERT_MSG( !(modifiers & wxMOD_CONTROL),
-        "wxMOD_CONTROL is not implemented, use wxMOD_CMD instead" );
     wxASSERT_MSG( (modifiers & wxMOD_ALTGR) != wxMOD_ALTGR,
         "wxMOD_ALTGR is not implemented" );
     wxASSERT_MSG( !(modifiers & wxMOD_META ),
@@ -59,11 +57,74 @@ wxUIActionSimulator::Key(int keycode, int modifiers, bool isDown)
     wxASSERT_MSG( !(modifiers & wxMOD_WIN ),
         "wxMOD_WIN is not implemented" );
 
-    return DoKey(keycode, modifiers, isDown);
+    if ( isDown )
+        SimulateModifiers(modifiers, true);
+
+    bool rc = DoKey(keycode, modifiers, isDown);
+
+    if ( !isDown )
+        SimulateModifiers(modifiers, false);
+
+    return rc;
+}
+
+void wxUIActionSimulator::SimulateModifiers(int modifiers, bool isDown)
+{
+    if ( modifiers & wxMOD_SHIFT )
+        DoKey(WXK_SHIFT, modifiers, isDown);
+    if ( modifiers & wxMOD_ALT )
+        DoKey(WXK_ALT, modifiers, isDown);
+    if ( modifiers & wxMOD_CONTROL )
+        DoKey(WXK_CONTROL, modifiers, isDown);
 }
 
-bool  wxUIActionSimulator::Char(int keycode, int modifiers)
+bool wxUIActionSimulator::Char(int keycode, int modifiers)
 {
+    switch(keycode)
+    {
+    case '0':
+        keycode = '0';
+        break;
+    case '1':
+        keycode = '1';
+        break;
+    case '2':
+        keycode = '2';
+        break;
+    case '3':
+        keycode = '3';
+        break;
+    case '4':
+        keycode = '4';
+        break;
+    case '5':
+        keycode = '5';
+        break;
+    case '6':
+        keycode = '6';
+        break;
+    case '7':
+        keycode = '7';
+        break;
+    case '8':
+        keycode = '8';
+        break;
+    case '9':
+        keycode = '9';
+        break;
+    case '+':
+        keycode = '+';
+        break;
+    case '-':
+        keycode = '-';
+        break;
+    case '.':
+        keycode = '.';
+        break;
+    default:
+        break;
+    };
+
     Key(keycode, modifiers, true);
     Key(keycode, modifiers, false);
 
@@ -75,9 +136,6 @@ bool wxUIActionSimulator::Text(const char *s)
     while ( *s != '\0' )
     {
         const char ch = *s++;
-
-        wxASSERT_MSG( ch, "Only letters are allowed" );
-
         if ( !Char(ch, isupper(ch) ? wxMOD_SHIFT : 0) )
             return false;
     }