Use the right gdk function to duplicate the key events #546.
authorDaniel Carl <danielcarl@gmx.de>
Thu, 14 Mar 2019 22:59:31 +0000 (23:59 +0100)
committerDaniel Carl <danielcarl@gmx.de>
Thu, 14 Mar 2019 23:39:56 +0000 (00:39 +0100)
This fixes the warning "Event with type 8 not holding a GdkDevice. It
is most likely synthesized outside Gdk/GTK+".

src/events.c

index f50ecf0..29b2be9 100644 (file)
@@ -1,4 +1,6 @@
 /* Copyright (C) 2016-2019 Michael Mackus */
+#include <gtk/gtk.h>
+
 #include "events.h"
 
 /* this is only to queue GDK key events, in order to later send them if the map didn't match */
@@ -16,7 +18,7 @@ void queue_event(GdkEventKey *e)
     events.queue = g_realloc(events.queue, (events.qlen + 1) * sizeof(GdkEventKey*));
 
     /* copy memory (otherwise event gets cleared by gdk) */
-    events.queue[events.qlen] = g_memdup(e, sizeof(GdkEventKey));
+    events.queue[events.qlen] = gdk_event_copy(e);
     events.qlen ++;
 }
 
@@ -38,7 +40,7 @@ void process_events(void)
 {
     for (int i = 0; i < events.qlen; ++i) {
         process_event(events.queue[i]);
-        g_free(events.queue[i]);
+        gdk_event_free(events.queue[i]);
         /* TODO take into account qk mapped key? */
     }
 
@@ -61,7 +63,7 @@ gboolean is_processing_events(void)
 void free_events(void)
 {
     for (int i = 0; i < events.qlen; ++i) {
-        g_free(events.queue[i]);
+        gdk_event_free(events.queue[i]);
     }
 
     events.qlen = 0;