freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master 94709e6 1/2: [graph/x11] Stop double-dealing Ba


From: Alexei Podtelezhnikov
Subject: [freetype2-demos] master 94709e6 1/2: [graph/x11] Stop double-dealing BackSpace, Tab, Return, and Esc.
Date: Thu, 28 May 2020 23:56:19 -0400 (EDT)

branch: master
commit 94709e6db5a734a9d4da30991f55509915de5b5c
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    [graph/x11] Stop double-dealing BackSpace, Tab, Return, and Esc.
    
    * graph/x11/grx11.c (gr_x11_surface_listen_event): Do not reset the
    cursor prematurely.
---
 ChangeLog         |  7 +++++++
 graph/x11/grx11.c | 29 +++++++++++++----------------
 2 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 1b03e9d..ed5675f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2020-05-28  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       [graph/x11] Stop double-dealing BackSpace, Tab, Return, and Esc.
+
+       * graph/x11/grx11.c (gr_x11_surface_listen_event): Do not reset the
+       cursor prematurely.
+
 2020-05-27  Alexei Podtelezhnikov  <apodtele@gmail.com>
 
        * graph/x11/grx11.c (gr_x11_surface_init): Register WM_DELETE_WINDOW.
diff --git a/graph/x11/grx11.c b/graph/x11/grx11.c
index 8a0f22b..b8689ef 100644
--- a/graph/x11/grx11.c
+++ b/graph/x11/grx11.c
@@ -1180,20 +1180,16 @@ typedef  unsigned long   uint32;
     KeySym     key;
     Display*   display = surface->display;
 
-    int        bool_exit;
+    int        num;
     grKey      grkey;
 
-    XComposeStatus  compose;
-
     /* XXX: for now, ignore the event mask, and only exit when */
     /*      a key is pressed                                   */
     (void)event_mask;
 
-    bool_exit = surface->key_cursor < surface->key_number;
-
     XDefineCursor( display, surface->win, x11dev.idle );
 
-    while ( !bool_exit )
+    while ( surface->key_cursor >= surface->key_number )
     {
       XNextEvent( display, &x_event );
 
@@ -1208,15 +1204,13 @@ typedef  unsigned long   uint32;
         break;
 
       case KeyPress:
-        surface->key_number = XLookupString( &x_event.xkey,
-                                             surface->key_buffer,
-                                             sizeof ( surface->key_buffer ),
-                                             &key,
-                                             &compose );
-        surface->key_cursor = 0;
-
-        if ( surface->key_number == 0 ||
-             key > 512       )
+        num = XLookupString( &x_event.xkey,
+                             surface->key_buffer,
+                             sizeof ( surface->key_buffer ),
+                             &key,
+                             NULL );
+
+        if ( num == 0 || key > 512 )
         {
           /* this may be a special key like F1, F2, etc. */
           grkey = KeySymTogrKey( key );
@@ -1224,7 +1218,10 @@ typedef  unsigned long   uint32;
             goto Set_Key;
         }
         else
-          bool_exit = 1;
+        {
+          surface->key_number = num;
+          surface->key_cursor = 0;
+        }
         break;
 
       case MappingNotify:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]