[gtk/readonly-events-1: 33/49] Make GdkEvent a boxed type
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/readonly-events-1: 33/49] Make GdkEvent a boxed type
- Date: Sun, 16 Feb 2020 14:32:30 +0000 (UTC)
commit 585001c85136c1ed04172bdcb27c860290ccf5fa
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Feb 15 15:40:03 2020 -0500
Make GdkEvent a boxed type
gdk/gdkevents.c | 497 +++++++++++++++++++------------------------------
gdk/gdkevents.h | 3 -
gdk/gdkeventsprivate.h | 13 +-
gdk/gdksurface.c | 4 +-
4 files changed, 199 insertions(+), 318 deletions(-)
---
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c
index 52ebfc8b45..ab11e24c3f 100644
--- a/gdk/gdkevents.c
+++ b/gdk/gdkevents.c
@@ -64,87 +64,10 @@
* of related touch events.
*/
-/* Private variable declarations
- */
-
-static void gdk_event_constructed (GObject *object);
-static void gdk_event_finalize (GObject *object);
-
-G_DEFINE_TYPE (GdkEvent, gdk_event, G_TYPE_OBJECT)
-
-enum {
- PROP_0,
- PROP_EVENT_TYPE,
- N_PROPS
-};
-
-static GParamSpec *event_props[N_PROPS] = { NULL, };
-
-#define EVENT_PAYLOAD(ev) (&(ev)->any.type)
-#define EVENT_PAYLOAD_SIZE (sizeof (GdkEvent) - sizeof (GObject))
-
-static void
-gdk_event_init (GdkEvent *event)
-{
-}
-
-static void
-gdk_event_real_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GdkEvent *event = GDK_EVENT (object);
-
- switch (prop_id)
- {
- case PROP_EVENT_TYPE:
- g_value_set_enum (value, event->any.type);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gdk_event_real_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GdkEvent *event = GDK_EVENT (object);
- switch (prop_id)
- {
- case PROP_EVENT_TYPE:
- event->any.type = g_value_get_enum (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gdk_event_class_init (GdkEventClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->get_property = gdk_event_real_get_property;
- object_class->set_property = gdk_event_real_set_property;
- object_class->constructed = gdk_event_constructed;
- object_class->finalize = gdk_event_finalize;
-
- event_props[PROP_EVENT_TYPE] =
- g_param_spec_enum ("event-type",
- P_("Event type"),
- P_("Event type"),
- GDK_TYPE_EVENT_TYPE, GDK_NOTHING,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY);
- g_object_class_install_properties (object_class, N_PROPS, event_props);
-}
+G_DEFINE_BOXED_TYPE (GdkEvent, gdk_event,
+ gdk_event_ref,
+ gdk_event_unref)
gboolean
check_event_sanity (GdkEvent *event)
@@ -446,86 +369,21 @@ _gdk_event_queue_flush (GdkDisplay *display)
}
}
-static GdkEvent *
-gdk_event_new (GdkEventType type)
-{
- return g_object_new (GDK_TYPE_EVENT,
- "event-type", type,
- NULL);
-}
-
GdkEvent *
gdk_event_ref (GdkEvent *event)
{
- return g_object_ref (event);
+ event->any.ref_count++;
+ return event;
}
+static void gdk_event_free (GdkEvent *event);
+
void
gdk_event_unref (GdkEvent *event)
{
- g_object_unref (event);
-}
-
-static void
-gdk_event_constructed (GObject *object)
-{
- GdkEvent *new_event = GDK_EVENT (object);
-
- /*
- * Bytewise 0 initialization is reasonable for most of the
- * current event types. Explicitely initialize double fields
- * since I trust bytewise 0 == 0. less than for integers
- * or pointers.
- */
- switch ((guint) new_event->any.type)
- {
- case GDK_MOTION_NOTIFY:
- new_event->motion.x = 0.;
- new_event->motion.y = 0.;
- break;
- case GDK_BUTTON_PRESS:
- case GDK_BUTTON_RELEASE:
- new_event->button.x = 0.;
- new_event->button.y = 0.;
- break;
- case GDK_TOUCH_BEGIN:
- case GDK_TOUCH_UPDATE:
- case GDK_TOUCH_END:
- case GDK_TOUCH_CANCEL:
- new_event->touch.x = 0.;
- new_event->touch.y = 0.;
- break;
- case GDK_SCROLL:
- new_event->scroll.x = 0.;
- new_event->scroll.y = 0.;
- new_event->scroll.delta_x = 0.;
- new_event->scroll.delta_y = 0.;
- new_event->scroll.is_stop = FALSE;
- break;
- case GDK_ENTER_NOTIFY:
- case GDK_LEAVE_NOTIFY:
- new_event->crossing.x = 0.;
- new_event->crossing.y = 0.;
- break;
- case GDK_TOUCHPAD_SWIPE:
- new_event->touchpad_swipe.x = 0;
- new_event->touchpad_swipe.y = 0;
- new_event->touchpad_swipe.dx = 0;
- new_event->touchpad_swipe.dy = 0;
- break;
- case GDK_TOUCHPAD_PINCH:
- new_event->touchpad_pinch.x = 0;
- new_event->touchpad_pinch.y = 0;
- new_event->touchpad_pinch.dx = 0;
- new_event->touchpad_pinch.dy = 0;
- new_event->touchpad_pinch.angle_delta = 0;
- new_event->touchpad_pinch.scale = 0;
- break;
- default:
- break;
- }
-
- G_OBJECT_CLASS (gdk_event_parent_class)->constructed (object);
+ event->any.ref_count--;
+ if (event->any.ref_count == 0)
+ gdk_event_free (event);
}
void
@@ -554,9 +412,8 @@ gdk_event_get_pointer_emulated (GdkEvent *event)
}
static void
-gdk_event_finalize (GObject *object)
+gdk_event_free (GdkEvent *event)
{
- GdkEvent *event = GDK_EVENT (object);
GdkDisplay *display;
switch ((guint) event->any.type)
@@ -621,7 +478,7 @@ gdk_event_finalize (GObject *object)
g_clear_object (&event->any.source_device);
g_clear_object (&event->any.target);
- G_OBJECT_CLASS (gdk_event_parent_class)->finalize (object);
+ g_free (event);
}
/**
@@ -2326,26 +2183,27 @@ gdk_event_button_new (GdkEventType type,
double y,
double *axes)
{
- GdkEvent *event;
+ GdkEventButton *event;
g_return_val_if_fail (type == GDK_BUTTON_PRESS ||
type == GDK_BUTTON_RELEASE, NULL);
- event = gdk_event_new (type);
-
+ event = g_new0 (GdkEventButton, 1);
+ event->any.ref_count = 1;
+ event->any.type = type;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->button.tool = tool ? g_object_ref (tool) : NULL;
- event->button.time = time;
- event->button.axes = NULL;
- event->button.state = state;
- event->button.button = button;
- event->button.x = x;
- event->button.y = y;
- event->button.axes = axes;
+ event->tool = tool ? g_object_ref (tool) : NULL;
+ event->time = time;
+ event->axes = NULL;
+ event->state = state;
+ event->button = button;
+ event->x = x;
+ event->y = y;
+ event->axes = axes;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2359,20 +2217,22 @@ gdk_event_motion_new (GdkSurface *surface,
double y,
double *axes)
{
- GdkEvent *event = gdk_event_new (GDK_MOTION_NOTIFY);
+ GdkEventMotion *event = g_new0 (GdkEventMotion, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_MOTION_NOTIFY;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->motion.tool = tool ? g_object_ref (tool) : NULL;
- event->motion.time = time;
- event->motion.state = state;
- event->motion.x = x;
- event->motion.y = y;
- event->motion.axes = axes;
- event->motion.state = state;
+ event->tool = tool ? g_object_ref (tool) : NULL;
+ event->time = time;
+ event->state = state;
+ event->x = x;
+ event->y = y;
+ event->axes = axes;
+ event->state = state;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2387,24 +2247,26 @@ gdk_event_crossing_new (GdkEventType type,
GdkCrossingMode mode,
GdkNotifyType detail)
{
- GdkEvent *event;
+ GdkEventCrossing *event;
g_return_val_if_fail (type == GDK_ENTER_NOTIFY ||
type == GDK_LEAVE_NOTIFY, NULL);
- event = gdk_event_new (type);
+ event = g_new0 (GdkEventCrossing, 1);
+ event->any.ref_count = 1;
+ event->any.type = type;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->crossing.time = time;
- event->crossing.state = state;
- event->crossing.x = x;
- event->crossing.y = y;
- event->crossing.mode = mode;
- event->crossing.detail = detail;
+ event->time = time;
+ event->state = state;
+ event->x = x;
+ event->y = y;
+ event->mode = mode;
+ event->detail = detail;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2415,20 +2277,22 @@ gdk_event_proximity_new (GdkEventType type,
GdkDeviceTool *tool,
guint32 time)
{
- GdkEvent *event;
+ GdkEventProximity *event;
g_return_val_if_fail (type == GDK_PROXIMITY_IN ||
type == GDK_PROXIMITY_OUT, NULL);
- event = gdk_event_new (type);
+ event = g_new0 (GdkEventProximity, 1);
+ event->any.ref_count = 1;
+ event->any.type = type;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->proximity.tool = tool ? g_object_ref (tool) : NULL;
- event->proximity.time = time;
+ event->tool = tool ? g_object_ref (tool) : NULL;
+ event->time = time;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2444,25 +2308,27 @@ gdk_event_key_new (GdkEventType type,
guint8 group,
gboolean is_modifier)
{
- GdkEvent *event;
+ GdkEventKey *event;
g_return_val_if_fail (type == GDK_KEY_PRESS ||
type == GDK_KEY_RELEASE, NULL);
- event = gdk_event_new (type);
+ event = g_new0 (GdkEventKey, 1);
+ event->any.ref_count = 1;
+ event->any.type = type;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->key.time = time;
- event->key.state = state;
- event->key.keyval = keyval;
- event->key.hardware_keycode = keycode;
- event->key.group = group;
- event->key.is_modifier = is_modifier;
- gdk_event_set_scancode (event, scancode);
+ event->time = time;
+ event->state = state;
+ event->keyval = keyval;
+ event->hardware_keycode = keycode;
+ event->key_scancode = scancode;
+ event->group = group;
+ event->is_modifier = is_modifier;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2470,24 +2336,27 @@ gdk_event_configure_new (GdkSurface *surface,
int width,
int height)
{
- GdkEvent *event = gdk_event_new (GDK_CONFIGURE);
+ GdkEventConfigure *event = g_new0 (GdkEventConfigure, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_CONFIGURE;
event->any.surface = g_object_ref (surface);
+ event->width = width;
+ event->height = height;
- event->configure.width = width;
- event->configure.height = height;
-
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
gdk_event_delete_new (GdkSurface *surface)
{
- GdkEvent *event = gdk_event_new (GDK_DELETE);
+ GdkEventAny *event = g_new0 (GdkEventAny, 1);
- event->any.surface = g_object_ref (surface);
+ event->ref_count = 1;
+ event->type = GDK_DELETE;
+ event->surface = g_object_ref (surface);
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2496,14 +2365,16 @@ gdk_event_focus_new (GdkSurface *surface,
GdkDevice *source_device,
gboolean focus_in)
{
- GdkEvent *event = gdk_event_new (GDK_FOCUS_CHANGE);
+ GdkEventFocus *event = g_new0 (GdkEventFocus, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_FOCUS_CHANGE;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->focus_change.in = focus_in;
+ event->in = focus_in;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2517,22 +2388,24 @@ gdk_event_scroll_new (GdkSurface *surface,
double delta_y,
gboolean is_stop)
{
- GdkEvent *event = gdk_event_new (GDK_SCROLL);
+ GdkEventScroll *event = g_new0 (GdkEventScroll, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_SCROLL;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->scroll.tool = tool ? g_object_ref (tool) : NULL;
- event->scroll.time = time;
- event->scroll.state = state;
- event->scroll.x = NAN;
- event->scroll.y = NAN;
- event->scroll.direction = GDK_SCROLL_SMOOTH;
- event->scroll.delta_x = delta_x;
- event->scroll.delta_y = delta_y;
- event->scroll.is_stop = is_stop;
+ event->tool = tool ? g_object_ref (tool) : NULL;
+ event->time = time;
+ event->state = state;
+ event->x = NAN;
+ event->y = NAN;
+ event->direction = GDK_SCROLL_SMOOTH;
+ event->delta_x = delta_x;
+ event->delta_y = delta_y;
+ event->is_stop = is_stop;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2545,20 +2418,23 @@ gdk_event_discrete_scroll_new (GdkSurface *surface,
GdkScrollDirection direction,
gboolean emulated)
{
- GdkEvent *event = gdk_event_new (GDK_SCROLL);
+ GdkEventScroll *event = g_new0 (GdkEventScroll, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_SCROLL;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->scroll.tool = tool ? g_object_ref (tool) : NULL;
- event->scroll.time = time;
- event->scroll.state = state;
- event->scroll.x = NAN;
- event->scroll.y = NAN;
- event->scroll.direction = direction;
- gdk_event_set_pointer_emulated (event, emulated);
+ event->tool = tool ? g_object_ref (tool) : NULL;
+ event->time = time;
+ event->state = state;
+ event->x = NAN;
+ event->y = NAN;
+ event->direction = direction;
+ if (emulated)
+ event->any.flags = GDK_EVENT_POINTER_EMULATED;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2574,28 +2450,31 @@ gdk_event_touch_new (GdkEventType type,
double *axes,
gboolean emulating)
{
- GdkEvent *event;
+ GdkEventTouch *event;
g_return_val_if_fail (type == GDK_TOUCH_BEGIN ||
type == GDK_TOUCH_END ||
type == GDK_TOUCH_UPDATE ||
type == GDK_TOUCH_CANCEL, NULL);
- event = gdk_event_new (type);
+ event = g_new0 (GdkEventTouch, 1);
+ event->any.ref_count = 1;
+ event->any.type = type;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->touch.sequence = sequence;
- event->touch.time = time;
- event->touch.state = state;
- event->touch.x = x;
- event->touch.y = y;
- event->touch.axes = axes;
- event->touch.emulating_pointer = emulating;
- gdk_event_set_pointer_emulated (event, emulating);
+ event->sequence = sequence;
+ event->time = time;
+ event->state = state;
+ event->x = x;
+ event->y = y;
+ event->axes = axes;
+ event->emulating_pointer = emulating;
+ if (emulating)
+ event->any.flags = GDK_EVENT_POINTER_EMULATED;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2610,20 +2489,22 @@ gdk_event_touchpad_swipe_new (GdkSurface *surface,
double dx,
double dy)
{
- GdkEvent *event = gdk_event_new (GDK_TOUCHPAD_SWIPE);
+ GdkEventTouchpadSwipe *event = g_new0 (GdkEventTouchpadSwipe, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_TOUCHPAD_SWIPE;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->touchpad_swipe.time = time;
- event->touchpad_swipe.state = state;
- event->touchpad_swipe.x = x;
- event->touchpad_swipe.y = y;
- event->touchpad_swipe.dx = dx;
- event->touchpad_swipe.dy = dy;
- event->touchpad_swipe.n_fingers = n_fingers;
+ event->time = time;
+ event->state = state;
+ event->x = x;
+ event->y = y;
+ event->dx = dx;
+ event->dy = dy;
+ event->n_fingers = n_fingers;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2641,23 +2522,25 @@ gdk_event_touchpad_pinch_new (GdkSurface *surface,
double scale,
double angle_delta)
{
- GdkEvent *event = gdk_event_new (GDK_TOUCHPAD_PINCH);
+ GdkEventTouchpadPinch *event = g_new0 (GdkEventTouchpadPinch, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_TOUCHPAD_PINCH;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->touchpad_pinch.time = time;
- event->touchpad_pinch.state = state;
- event->touchpad_pinch.phase = phase;
- event->touchpad_pinch.x = x;
- event->touchpad_pinch.y = y;
- event->touchpad_pinch.dx = dx;
- event->touchpad_pinch.dy = dy;
- event->touchpad_pinch.n_fingers = n_fingers;
- event->touchpad_pinch.scale = scale;
- event->touchpad_pinch.angle_delta = angle_delta;
+ event->time = time;
+ event->state = state;
+ event->phase = phase;
+ event->x = x;
+ event->y = y;
+ event->dx = dx;
+ event->dy = dy;
+ event->n_fingers = n_fingers;
+ event->scale = scale;
+ event->angle_delta = angle_delta;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2670,18 +2553,20 @@ gdk_event_pad_ring_new (GdkSurface *surface,
guint mode,
double value)
{
- GdkEvent *event = gdk_event_new (GDK_PAD_RING);
+ GdkEventPadAxis *event = g_new0 (GdkEventPadAxis, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_PAD_RING;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->pad_axis.time = time;
- event->pad_axis.group = group;
- event->pad_axis.index = index;
- event->pad_axis.mode = mode;
- event->pad_axis.value = value;
+ event->time = time;
+ event->group = group;
+ event->index = index;
+ event->mode = mode;
+ event->value = value;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2694,18 +2579,20 @@ gdk_event_pad_strip_new (GdkSurface *surface,
guint mode,
double value)
{
- GdkEvent *event = gdk_event_new (GDK_PAD_STRIP);
+ GdkEventPadAxis *event = g_new0 (GdkEventPadAxis, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_PAD_STRIP;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->pad_axis.time = time;
- event->pad_axis.group = group;
- event->pad_axis.index = index;
- event->pad_axis.mode = mode;
- event->pad_axis.value = value;
+ event->time = time;
+ event->group = group;
+ event->index = index;
+ event->mode = mode;
+ event->value = value;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2718,22 +2605,24 @@ gdk_event_pad_button_new (GdkEventType type,
guint button,
guint mode)
{
- GdkEvent *event;
+ GdkEventPadButton *event;
g_return_val_if_fail (type == GDK_PAD_BUTTON_PRESS ||
type == GDK_PAD_BUTTON_RELEASE, NULL);
- event = gdk_event_new (type);
+ event = g_new0 (GdkEventPadButton, 1);
+ event->any.ref_count = 1;
+ event->any.type = type;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->pad_button.time = time;
- event->pad_button.group = group;
- event->pad_button.button = button;
- event->pad_axis.mode = mode;
+ event->time = time;
+ event->group = group;
+ event->button = button;
+ event->mode = mode;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2744,16 +2633,18 @@ gdk_event_pad_group_mode_new (GdkSurface *surface,
guint group,
guint mode)
{
- GdkEvent *event = gdk_event_new (GDK_PAD_GROUP_MODE);
+ GdkEventPadGroupMode *event = g_new0 (GdkEventPadGroupMode, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_PAD_GROUP_MODE;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->pad_group_mode.time = time;
- event->pad_group_mode.group = group;
- event->pad_group_mode.mode = mode;
+ event->time = time;
+ event->group = group;
+ event->mode = mode;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2765,23 +2656,25 @@ gdk_event_drag_new (GdkEventType type,
double x,
double y)
{
- GdkEvent *event;
+ GdkEventDND *event;
g_return_val_if_fail (type == GDK_DRAG_ENTER ||
type == GDK_DRAG_MOTION ||
type == GDK_DRAG_LEAVE ||
type == GDK_DROP_START, NULL);
- event = gdk_event_new (type);
+ event = g_new0 (GdkEventDND, 1);
+ event->any.ref_count = 1;
+ event->any.type = type;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
- event->dnd.drop = g_object_ref (drop);
- event->dnd.time = time;
- event->dnd.x = x;
- event->dnd.y = y;
+ event->drop = g_object_ref (drop);
+ event->time = time;
+ event->x = x;
+ event->y = y;
- return event;
+ return (GdkEvent *)event;
}
GdkEvent *
@@ -2791,14 +2684,16 @@ gdk_event_grab_broken_new (GdkSurface *surface,
GdkSurface *grab_surface,
gboolean implicit)
{
- GdkEvent *event = gdk_event_new (GDK_GRAB_BROKEN);
+ GdkEventGrabBroken *event = g_new0 (GdkEventGrabBroken, 1);
+ event->any.ref_count = 1;
+ event->any.type = GDK_GRAB_BROKEN;
event->any.surface = g_object_ref (surface);
event->any.device = g_object_ref (device);
event->any.source_device = g_object_ref (source_device);
- event->grab_broken.grab_surface = grab_surface;
- event->grab_broken.implicit = implicit;
- event->grab_broken.keyboard = gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD;
+ event->grab_surface = grab_surface;
+ event->implicit = implicit;
+ event->keyboard = gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD;
- return event;
+ return (GdkEvent *)event;
}
diff --git a/gdk/gdkevents.h b/gdk/gdkevents.h
index 84f893f680..4a9724487e 100644
--- a/gdk/gdkevents.h
+++ b/gdk/gdkevents.h
@@ -41,9 +41,6 @@ G_BEGIN_DECLS
#define GDK_TYPE_EVENT (gdk_event_get_type ())
#define GDK_TYPE_EVENT_SEQUENCE (gdk_event_sequence_get_type ())
-#define GDK_EVENT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_EVENT, GdkEvent))
-#define GDK_IS_EVENT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_EVENT))
-
/**
* GDK_PRIORITY_EVENTS:
diff --git a/gdk/gdkeventsprivate.h b/gdk/gdkeventsprivate.h
index df87bc74b8..5fe673b7bd 100644
--- a/gdk/gdkeventsprivate.h
+++ b/gdk/gdkeventsprivate.h
@@ -30,17 +30,6 @@
#include <gdk/gdkdevice.h>
#include <gdk/gdkdevicetool.h>
-#define GDK_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_EVENT, GdkEventClass))
-#define GDK_IS_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_EVENT))
-#define GDK_EVENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_EVENT, GdkEventClass))
-
-typedef struct _GdkEventClass GdkEventClass;
-
-struct _GdkEventClass
-{
- GObjectClass object_class;
-};
-
/*
* GdkEventAny:
* @type: the type of the event.
@@ -53,7 +42,7 @@ struct _GdkEventClass
*/
struct _GdkEventAny
{
- GObject parent_instance;
+ int ref_count;
GdkEventType type;
GdkSurface *surface;
guint16 flags;
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c
index 01b2bd8fed..9a5633960a 100644
--- a/gdk/gdksurface.c
+++ b/gdk/gdksurface.c
@@ -579,13 +579,13 @@ gdk_surface_class_init (GdkSurfaceClass *klass)
0,
g_signal_accumulator_true_handled,
NULL,
- _gdk_marshal_BOOLEAN__OBJECT,
+ _gdk_marshal_BOOLEAN__BOXED,
G_TYPE_BOOLEAN,
1,
GDK_TYPE_EVENT);
g_signal_set_va_marshaller (signals[EVENT],
G_OBJECT_CLASS_TYPE (object_class),
- _gdk_marshal_BOOLEAN__OBJECTv);
+ _gdk_marshal_BOOLEAN__BOXEDv);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]