[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:
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 94709e6 1/2: [graph/x11] Stop double-dealing BackSpace, Tab, Return, and Esc.,
Alexei Podtelezhnikov <=