[gtk] inspector: Fix a crash
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk] inspector: Fix a crash
- Date: Fri, 17 Apr 2020 12:39:06 +0000 (UTC)
commit 726a7ac705e511d511ffa4e8429a0474aa1b88ec
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Apr 17 08:37:45 2020 -0400
inspector: Fix a crash
Don't crash while picking. The event signal broke
when GdkEvent was turned into a type instance,
since the automatic marshallers don't know how to
deal with that. Manually set the right marshaller.
gtk/inspector/window.c | 34 +++++++++++++++++++++++-----------
1 file changed, 23 insertions(+), 11 deletions(-)
---
diff --git a/gtk/inspector/window.c b/gtk/inspector/window.c
index 2b86655b43..c588554a52 100644
--- a/gtk/inspector/window.c
+++ b/gtk/inspector/window.c
@@ -46,6 +46,7 @@
#include "general.h"
#include "logs.h"
+#include "gdkmarshalers.h"
#include "gdk-private.h"
#include "gskrendererprivate.h"
#include "gtkbutton.h"
@@ -70,6 +71,14 @@ enum {
static GParamSpec *properties[NUM_PROPERTIES];
+enum {
+ EVENT,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+
G_DEFINE_TYPE (GtkInspectorWindow, gtk_inspector_window, GTK_TYPE_WINDOW)
static gboolean
@@ -392,16 +401,19 @@ gtk_inspector_window_class_init (GtkInspectorWindowClass *klass)
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
g_object_class_install_properties (object_class, NUM_PROPERTIES, properties);
- g_signal_new (g_intern_static_string ("event"),
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- 0,
- g_signal_accumulator_true_handled,
- NULL,
- NULL,
- G_TYPE_BOOLEAN,
- 1,
- GDK_TYPE_EVENT);
+ signals[EVENT] = g_signal_new (g_intern_static_string ("event"),
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ _gdk_marshal_BOOLEAN__POINTER,
+ G_TYPE_BOOLEAN,
+ 1,
+ GDK_TYPE_EVENT);
+ g_signal_set_va_marshaller (signals[EVENT],
+ G_OBJECT_CLASS_TYPE (object_class),
+ _gdk_marshal_BOOLEAN__POINTERv);
gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/window.ui");
@@ -623,7 +635,7 @@ gtk_inspector_handle_event (GdkEvent *event)
if (iw == NULL)
return FALSE;
- g_signal_emit_by_name (iw, "event", event, &handled);
+ g_signal_emit (iw, signals[EVENT], 0, event, &handled);
return handled;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]