]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxApp::CheckForKeyUp
authorMichael Bedward <mbedward@ozemail.com.au>
Fri, 30 Jul 1999 03:50:03 +0000 (03:50 +0000)
committerMichael Bedward <mbedward@ozemail.com.au>
Fri, 30 Jul 1999 03:50:03 +0000 (03:50 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/motif/app.cpp

index 8845b9782f03a676015d85228e9bd8c33bd8beda..e3c8bb71a93641f2f2f7a5c0cbc4a71a740605b7 100644 (file)
@@ -346,22 +346,35 @@ void wxApp::ProcessXEvent(WXEvent* _event)
                    widget, XtParent(widget));
 #endif // DEBUG
 
-      if (CheckForAccelerator(_event))
-      {
-        // Do nothing! We intercepted and processed the event as an
-        // accelerator.
-        return;
-      }
-      else if (CheckForKeyDown(_event))
-      {
-        // We intercepted and processed the key down event
-        return;
-      }
-      else
-      {
-        XtDispatchEvent(event);
-        return;
-      }
+       if (CheckForAccelerator(_event))
+       {
+            // Do nothing! We intercepted and processed the event as an
+            // accelerator.
+            return;
+       }
+       else if (CheckForKeyDown(_event))
+       {
+            // We intercepted and processed the key down event
+            return;
+       }
+       else
+       {
+            XtDispatchEvent(event);
+           return;
+       }
+    }
+    else if (event->type == KeyRelease)
+    {
+        if (CheckForKeyUp(_event))
+       {
+           // We intercepted and processed the key up event
+           return;
+       }
+       else
+       {
+           XtDispatchEvent(event);
+           return;
+       }
     }
     else if (event->type == PropertyNotify)
     {
@@ -640,21 +653,46 @@ bool wxApp::CheckForKeyDown(WXEvent* event)
     XEvent* xEvent = (XEvent*) event;
     if (xEvent->xany.type == KeyPress)
     {
-      Widget widget = XtWindowToWidget((Display*) wxGetDisplay(),
-                                       xEvent->xany.window);
-      wxWindow* win = NULL;
+        Widget widget = XtWindowToWidget((Display*) wxGetDisplay(),
+                                        xEvent->xany.window);
+       wxWindow* win = NULL;
+
+       // Find the first wxWindow that corresponds to this event window
+       while (widget && !(win = wxGetWindowFromTable(widget)))
+            widget = XtParent(widget);
+
+       if (!widget || !win)
+            return FALSE;
+
+       wxKeyEvent keyEvent(wxEVT_KEY_DOWN);
+       wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
+
+       return win->ProcessEvent( keyEvent );
+    }
+
+    return FALSE;
+}
+
+bool wxApp::CheckForKeyUp(WXEvent* event)
+{
+    XEvent* xEvent = (XEvent*) event;
+    if (xEvent->xany.type == KeyRelease)
+    {
+        Widget widget = XtWindowToWidget((Display*) wxGetDisplay(),
+                                        xEvent->xany.window);
+       wxWindow* win = NULL;
 
-      // Find the first wxWindow that corresponds to this event window
-      while (widget && !(win = wxGetWindowFromTable(widget)))
-          widget = XtParent(widget);
+       // Find the first wxWindow that corresponds to this event window
+       while (widget && !(win = wxGetWindowFromTable(widget)))
+            widget = XtParent(widget);
 
-      if (!widget || !win)
-          return FALSE;
+       if (!widget || !win)
+            return FALSE;
 
-      wxKeyEvent keyEvent(wxEVT_KEY_DOWN);
-      wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
+       wxKeyEvent keyEvent(wxEVT_KEY_UP);
+       wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent);
 
-      return win->ProcessEvent( keyEvent );
+       return win->ProcessEvent( keyEvent );
     }
 
     return FALSE;