gdk3 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002-2004 Ruby-GNOME2 Project Team
3
+ * Copyright (C) 2002-2013 Ruby-GNOME2 Project Team
5
4
  * Copyright (C) 1998-2000 Yukihiro Matsumoto,
6
5
  * Daisuke Kanda,
7
6
  * Hiroshi Igarashi
@@ -24,25 +23,344 @@
24
23
 
25
24
  #include "rbgdk3private.h"
26
25
 
27
- static VALUE gdkevents[36];
26
+ static VALUE rb_cGdkEvent;
27
+ static VALUE rb_cGdkEventAny;
28
+ static VALUE rb_cGdkEventExpose;
29
+ static VALUE rb_cGdkEventVisibility;
30
+ static VALUE rb_cGdkEventMotion;
31
+ static VALUE rb_cGdkEventButton;
32
+ static VALUE rb_cGdkEventTouch;
33
+ static VALUE rb_cGdkEventScroll;
34
+ static VALUE rb_cGdkEventKey;
35
+ static VALUE rb_cGdkEventCrossing;
36
+ static VALUE rb_cGdkEventFocus;
37
+ static VALUE rb_cGdkEventConfigure;
38
+ static VALUE rb_cGdkEventProperty;
39
+ static VALUE rb_cGdkEventSelection;
40
+ static VALUE rb_cGdkEventOwnerChange;
41
+ static VALUE rb_cGdkEventProximity;
42
+ static VALUE rb_cGdkEventDND;
43
+ static VALUE rb_cGdkEventWindowState;
44
+ static VALUE rb_cGdkEventSetting;
45
+ static VALUE rb_cGdkEventGrabBroken;
46
+
47
+ #define DEFINE_EVENT_TYPE(type_lower_case, type_upper_case) \
48
+ static GType \
49
+ rb_gdk_event_ ## type_lower_case ## _get_type(void) \
50
+ { \
51
+ static GType type = 0; \
52
+ if (type == 0) { \
53
+ type = g_boxed_type_register_static("GdkEvent" # type_upper_case, \
54
+ (GBoxedCopyFunc)gdk_event_copy, \
55
+ (GBoxedFreeFunc)gdk_event_free); \
56
+ } \
57
+ return type; \
58
+ }
59
+
60
+ DEFINE_EVENT_TYPE(any, Any)
61
+ DEFINE_EVENT_TYPE(expose, Expose)
62
+ DEFINE_EVENT_TYPE(visibility, Visibility)
63
+ DEFINE_EVENT_TYPE(motion, Motion)
64
+ DEFINE_EVENT_TYPE(button, Button)
65
+ DEFINE_EVENT_TYPE(touch, Touch)
66
+ DEFINE_EVENT_TYPE(scroll, Scroll)
67
+ DEFINE_EVENT_TYPE(key, Key)
68
+ DEFINE_EVENT_TYPE(crossing, Crossing)
69
+ DEFINE_EVENT_TYPE(focus, Focus)
70
+ DEFINE_EVENT_TYPE(configure, Configure)
71
+ DEFINE_EVENT_TYPE(property, Property)
72
+ DEFINE_EVENT_TYPE(selection, Selection)
73
+ DEFINE_EVENT_TYPE(owner_change, OwnerChange)
74
+ DEFINE_EVENT_TYPE(proximity, Proximity)
75
+ DEFINE_EVENT_TYPE(dnd, DND)
76
+ DEFINE_EVENT_TYPE(window_state, WindowState)
77
+ DEFINE_EVENT_TYPE(setting, Setting)
78
+ DEFINE_EVENT_TYPE(grab_broken, GrabBroken)
79
+
80
+ #define GDK_TYPE_EVENT_ANY (rb_gdk_event_any_get_type())
81
+ #define GDK_TYPE_EVENT_EXPOSE (rb_gdk_event_expose_get_type())
82
+ #define GDK_TYPE_EVENT_VISIBILITY (rb_gdk_event_visibility_get_type())
83
+ #define GDK_TYPE_EVENT_MOTION (rb_gdk_event_motion_get_type())
84
+ #define GDK_TYPE_EVENT_BUTTON (rb_gdk_event_button_get_type())
85
+ #define GDK_TYPE_EVENT_TOUCH (rb_gdk_event_touch_get_type())
86
+ #define GDK_TYPE_EVENT_SCROLL (rb_gdk_event_scroll_get_type())
87
+ #define GDK_TYPE_EVENT_KEY (rb_gdk_event_key_get_type())
88
+ #define GDK_TYPE_EVENT_CROSSING (rb_gdk_event_crossing_get_type())
89
+ #define GDK_TYPE_EVENT_FOCUS (rb_gdk_event_focus_get_type())
90
+ #define GDK_TYPE_EVENT_CONFIGURE (rb_gdk_event_configure_get_type())
91
+ #define GDK_TYPE_EVENT_PROPERTY (rb_gdk_event_property_get_type())
92
+ #define GDK_TYPE_EVENT_SELECTION (rb_gdk_event_selection_get_type())
93
+ #define GDK_TYPE_EVENT_OWNER_CHANGE (rb_gdk_event_owner_change_get_type())
94
+ #define GDK_TYPE_EVENT_PROXIMITY (rb_gdk_event_proximity_get_type())
95
+ #define GDK_TYPE_EVENT_DND (rb_gdk_event_dnd_get_type())
96
+ #define GDK_TYPE_EVENT_WINDOW_STATE (rb_gdk_event_window_state_get_type())
97
+ #define GDK_TYPE_EVENT_SETTING (rb_gdk_event_setting_get_type())
98
+ #define GDK_TYPE_EVENT_GRAB_BROKEN (rb_gdk_event_grab_broken_get_type())
28
99
 
29
100
  /***********************************************/
30
101
 
31
- VALUE
32
- make_gdkevent(GdkEvent *ev)
102
+ static GType
103
+ rb_gdk_event_type_to_gtype(GdkEventType event_type)
104
+ {
105
+ GType gtype = GDK_TYPE_EVENT_ANY;
106
+
107
+ switch (event_type) {
108
+ case GDK_NOTHING:
109
+ case GDK_DELETE:
110
+ case GDK_DESTROY:
111
+ break;
112
+ case GDK_EXPOSE:
113
+ gtype = GDK_TYPE_EVENT_EXPOSE;
114
+ break;
115
+ case GDK_MOTION_NOTIFY:
116
+ gtype = GDK_TYPE_EVENT_MOTION;
117
+ break;
118
+ case GDK_BUTTON_PRESS:
119
+ case GDK_2BUTTON_PRESS:
120
+ case GDK_3BUTTON_PRESS:
121
+ case GDK_BUTTON_RELEASE:
122
+ gtype = GDK_TYPE_EVENT_BUTTON;
123
+ break;
124
+ case GDK_KEY_PRESS:
125
+ case GDK_KEY_RELEASE:
126
+ gtype = GDK_TYPE_EVENT_KEY;
127
+ break;
128
+ case GDK_ENTER_NOTIFY:
129
+ case GDK_LEAVE_NOTIFY:
130
+ gtype = GDK_TYPE_EVENT_CROSSING;
131
+ break;
132
+ case GDK_FOCUS_CHANGE:
133
+ gtype = GDK_TYPE_EVENT_FOCUS;
134
+ break;
135
+ case GDK_CONFIGURE:
136
+ gtype = GDK_TYPE_EVENT_CONFIGURE;
137
+ break;
138
+ case GDK_MAP:
139
+ case GDK_UNMAP:
140
+ break;
141
+ case GDK_PROPERTY_NOTIFY:
142
+ gtype = GDK_TYPE_EVENT_PROPERTY;
143
+ break;
144
+ case GDK_SELECTION_CLEAR:
145
+ case GDK_SELECTION_REQUEST:
146
+ case GDK_SELECTION_NOTIFY:
147
+ gtype = GDK_TYPE_EVENT_SELECTION;
148
+ break;
149
+ case GDK_PROXIMITY_IN:
150
+ case GDK_PROXIMITY_OUT:
151
+ gtype = GDK_TYPE_EVENT_PROXIMITY;
152
+ break;
153
+ case GDK_DRAG_ENTER:
154
+ case GDK_DRAG_LEAVE:
155
+ case GDK_DRAG_MOTION:
156
+ case GDK_DRAG_STATUS:
157
+ case GDK_DROP_START:
158
+ case GDK_DROP_FINISHED:
159
+ gtype = GDK_TYPE_EVENT_DND;
160
+ break;
161
+ case GDK_CLIENT_EVENT:
162
+ break;
163
+ case GDK_VISIBILITY_NOTIFY:
164
+ gtype = GDK_TYPE_EVENT_VISIBILITY;
165
+ break;
166
+ case GDK_SCROLL:
167
+ gtype = GDK_TYPE_EVENT_SCROLL;
168
+ break;
169
+ case GDK_WINDOW_STATE:
170
+ gtype = GDK_TYPE_EVENT_WINDOW_STATE;
171
+ break;
172
+ case GDK_SETTING:
173
+ gtype = GDK_TYPE_EVENT_SETTING;
174
+ break;
175
+ case GDK_OWNER_CHANGE:
176
+ gtype = GDK_TYPE_EVENT_OWNER_CHANGE;
177
+ break;
178
+ case GDK_GRAB_BROKEN:
179
+ gtype = GDK_TYPE_EVENT_GRAB_BROKEN;
180
+ break;
181
+ case GDK_DAMAGE:
182
+ gtype = GDK_TYPE_EVENT_EXPOSE;
183
+ break;
184
+ case GDK_TOUCH_BEGIN:
185
+ case GDK_TOUCH_UPDATE:
186
+ case GDK_TOUCH_END:
187
+ case GDK_TOUCH_CANCEL:
188
+ gtype = GDK_TYPE_EVENT_TOUCH;
189
+ break;
190
+ case GDK_EVENT_LAST:
191
+ break;
192
+ default:
193
+ break;
194
+ }
195
+
196
+ return gtype;
197
+ }
198
+
199
+ static VALUE
200
+ rb_gdk_event_type_to_class(GdkEventType event_type)
201
+ {
202
+ VALUE klass = Qnil;
203
+
204
+ switch (event_type) {
205
+ case GDK_NOTHING:
206
+ case GDK_DELETE:
207
+ case GDK_DESTROY:
208
+ break;
209
+ case GDK_EXPOSE:
210
+ klass = rb_cGdkEventExpose;
211
+ break;
212
+ case GDK_MOTION_NOTIFY:
213
+ klass = rb_cGdkEventMotion;
214
+ break;
215
+ case GDK_BUTTON_PRESS:
216
+ case GDK_2BUTTON_PRESS:
217
+ case GDK_3BUTTON_PRESS:
218
+ case GDK_BUTTON_RELEASE:
219
+ klass = rb_cGdkEventButton;
220
+ break;
221
+ case GDK_KEY_PRESS:
222
+ case GDK_KEY_RELEASE:
223
+ klass = rb_cGdkEventKey;
224
+ break;
225
+ case GDK_ENTER_NOTIFY:
226
+ case GDK_LEAVE_NOTIFY:
227
+ klass = rb_cGdkEventCrossing;
228
+ break;
229
+ case GDK_FOCUS_CHANGE:
230
+ klass = rb_cGdkEventFocus;
231
+ break;
232
+ case GDK_CONFIGURE:
233
+ klass = rb_cGdkEventConfigure;
234
+ break;
235
+ case GDK_MAP:
236
+ case GDK_UNMAP:
237
+ break;
238
+ case GDK_PROPERTY_NOTIFY:
239
+ klass = rb_cGdkEventProperty;
240
+ break;
241
+ case GDK_SELECTION_CLEAR:
242
+ case GDK_SELECTION_REQUEST:
243
+ case GDK_SELECTION_NOTIFY:
244
+ klass = rb_cGdkEventSelection;
245
+ break;
246
+ case GDK_PROXIMITY_IN:
247
+ case GDK_PROXIMITY_OUT:
248
+ klass = rb_cGdkEventProximity;
249
+ break;
250
+ case GDK_DRAG_ENTER:
251
+ case GDK_DRAG_LEAVE:
252
+ case GDK_DRAG_MOTION:
253
+ case GDK_DRAG_STATUS:
254
+ case GDK_DROP_START:
255
+ case GDK_DROP_FINISHED:
256
+ klass = rb_cGdkEventDND;
257
+ break;
258
+ case GDK_CLIENT_EVENT:
259
+ break;
260
+ case GDK_VISIBILITY_NOTIFY:
261
+ klass = rb_cGdkEventVisibility;
262
+ break;
263
+ case GDK_SCROLL:
264
+ klass = rb_cGdkEventScroll;
265
+ break;
266
+ case GDK_WINDOW_STATE:
267
+ klass = rb_cGdkEventWindowState;
268
+ break;
269
+ case GDK_SETTING:
270
+ klass = rb_cGdkEventSetting;
271
+ break;
272
+ case GDK_OWNER_CHANGE:
273
+ klass = rb_cGdkEventOwnerChange;
274
+ break;
275
+ case GDK_GRAB_BROKEN:
276
+ klass = rb_cGdkEventGrabBroken;
277
+ break;
278
+ case GDK_DAMAGE:
279
+ klass = rb_cGdkEventExpose;
280
+ break;
281
+ case GDK_TOUCH_BEGIN:
282
+ case GDK_TOUCH_UPDATE:
283
+ case GDK_TOUCH_END:
284
+ case GDK_TOUCH_CANCEL:
285
+ klass = rb_cGdkEventTouch;
286
+ break;
287
+ case GDK_EVENT_LAST:
288
+ break;
289
+ default:
290
+ break;
291
+ }
292
+
293
+ if (NIL_P(klass)) {
294
+ klass = rb_cGdkEventAny;
295
+ }
296
+
297
+ return klass;
298
+ }
299
+
300
+ static GType
301
+ rb_gdk_event_to_gtype(VALUE event)
33
302
  {
34
- VALUE obj;
35
- if (ev == NULL) return Qnil;
303
+ VALUE klass;
304
+ GType type = GDK_TYPE_EVENT;
305
+
306
+ klass = rb_obj_class(event);
307
+ if (klass == rb_cGdkEvent) {
308
+ type = GDK_TYPE_EVENT;
309
+ } else if (klass == rb_cGdkEventAny) {
310
+ type = GDK_TYPE_EVENT_ANY;
311
+ } else if (klass == rb_cGdkEventExpose) {
312
+ type = GDK_TYPE_EVENT_EXPOSE;
313
+ } else if (klass == rb_cGdkEventVisibility) {
314
+ type = GDK_TYPE_EVENT_VISIBILITY;
315
+ } else if (klass == rb_cGdkEventMotion) {
316
+ type = GDK_TYPE_EVENT_MOTION;
317
+ } else if (klass == rb_cGdkEventButton) {
318
+ type = GDK_TYPE_EVENT_BUTTON;
319
+ } else if (klass == rb_cGdkEventScroll) {
320
+ type = GDK_TYPE_EVENT_SCROLL;
321
+ } else if (klass == rb_cGdkEventKey) {
322
+ type = GDK_TYPE_EVENT_KEY;
323
+ } else if (klass == rb_cGdkEventCrossing) {
324
+ type = GDK_TYPE_EVENT_CROSSING;
325
+ } else if (klass == rb_cGdkEventFocus) {
326
+ type = GDK_TYPE_EVENT_FOCUS;
327
+ } else if (klass == rb_cGdkEventConfigure) {
328
+ type = GDK_TYPE_EVENT_CONFIGURE;
329
+ } else if (klass == rb_cGdkEventProperty) {
330
+ type = GDK_TYPE_EVENT_PROPERTY;
331
+ } else if (klass == rb_cGdkEventSelection) {
332
+ type = GDK_TYPE_EVENT_SELECTION;
333
+ } else if (klass == rb_cGdkEventOwnerChange) {
334
+ type = GDK_TYPE_EVENT_OWNER_CHANGE;
335
+ } else if (klass == rb_cGdkEventProximity) {
336
+ type = GDK_TYPE_EVENT_PROXIMITY;
337
+ } else if (klass == rb_cGdkEventDND) {
338
+ type = GDK_TYPE_EVENT_DND;
339
+ } else if (klass == rb_cGdkEventWindowState) {
340
+ type = GDK_TYPE_EVENT_WINDOW_STATE;
341
+ } else if (klass == rb_cGdkEventSetting) {
342
+ type = GDK_TYPE_EVENT_SETTING;
343
+ } else if (klass == rb_cGdkEventGrabBroken) {
344
+ type = GDK_TYPE_EVENT_GRAB_BROKEN;
345
+ } else if (klass == rb_cGdkEventTouch) {
346
+ type = GDK_TYPE_EVENT_TOUCH;
347
+ } else {
348
+ rb_raise(rb_eArgError, "Not event object: %s", RBG_INSPECT(event));
349
+ }
350
+
351
+ return type;
352
+ }
36
353
 
37
- obj = GDKEVENT2RVAL(ev);
38
- RBASIC(obj)->klass = gdkevents[ev->type]; /* hack */
39
- return obj;
354
+ VALUE
355
+ rbgdk_gdkevent2rval(GdkEvent *event)
356
+ {
357
+ return BOXED2RVAL(event, rb_gdk_event_type_to_gtype(event->any.type));
40
358
  }
41
359
 
42
- GdkEvent*
43
- get_gdkevent(VALUE event)
360
+ GdkEvent *
361
+ rbgdk_rval2gdkevent(VALUE event)
44
362
  {
45
- return NIL_P(event) ? NULL : RVAL2GDKEVENT(event);
363
+ return RVAL2BOXED(event, rb_gdk_event_to_gtype(event));
46
364
  }
47
365
 
48
366
  /***********************************************/
@@ -50,12 +368,12 @@ get_gdkevent(VALUE event)
50
368
  static VALUE \
51
369
  gdkevent ## type ## _ ## name (VALUE self)\
52
370
  {\
53
- return CSTR2RVAL(get_gdkevent(self)->type.name);\
371
+ return CSTR2RVAL(RVAL2GDKEVENT(self)->type.name);\
54
372
  }\
55
373
  static VALUE \
56
374
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
57
375
  {\
58
- get_gdkevent(self)->type.name = (gchar *)RVAL2CSTR(val);\
376
+ RVAL2GDKEVENT(self)->type.name = (gchar *)RVAL2CSTR(val);\
59
377
  return self;\
60
378
  }
61
379
 
@@ -63,12 +381,12 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
63
381
  static VALUE \
64
382
  gdkevent ## type ## _ ## name (VALUE self)\
65
383
  {\
66
- return INT2NUM(get_gdkevent(self)->type.name);\
384
+ return INT2NUM(RVAL2GDKEVENT(self)->type.name);\
67
385
  }\
68
386
  static VALUE \
69
387
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
70
388
  {\
71
- get_gdkevent(self)->type.name = NUM2INT(val);\
389
+ RVAL2GDKEVENT(self)->type.name = NUM2INT(val);\
72
390
  return self;\
73
391
  }
74
392
 
@@ -76,12 +394,12 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
76
394
  static VALUE \
77
395
  gdkevent ## type ## _ ## name (VALUE self)\
78
396
  {\
79
- return UINT2NUM(get_gdkevent(self)->type.name);\
397
+ return UINT2NUM(RVAL2GDKEVENT(self)->type.name);\
80
398
  }\
81
399
  static VALUE \
82
400
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
83
401
  {\
84
- get_gdkevent(self)->type.name = NUM2UINT(val);\
402
+ RVAL2GDKEVENT(self)->type.name = NUM2UINT(val);\
85
403
  return self;\
86
404
  }
87
405
 
@@ -89,12 +407,12 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
89
407
  static VALUE \
90
408
  gdkevent ## type ## _ ## name (VALUE self)\
91
409
  {\
92
- return GOBJ2RVAL(get_gdkevent(self)->type.name);\
410
+ return GOBJ2RVAL(RVAL2GDKEVENT(self)->type.name);\
93
411
  }\
94
412
  static VALUE \
95
413
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
96
414
  {\
97
- get_gdkevent(self)->type.name = RVAL2GDKWINDOW(val);\
415
+ RVAL2GDKEVENT(self)->type.name = RVAL2GDKWINDOW(val);\
98
416
  return self;\
99
417
  }
100
418
 
@@ -102,12 +420,12 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
102
420
  static VALUE \
103
421
  gdkevent ## type ## _ ## name (VALUE self)\
104
422
  {\
105
- return rb_float_new(get_gdkevent(self)->type.name);\
423
+ return rb_float_new(RVAL2GDKEVENT(self)->type.name);\
106
424
  }\
107
425
  static VALUE \
108
426
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
109
427
  {\
110
- get_gdkevent(self)->type.name = NUM2DBL(val);\
428
+ RVAL2GDKEVENT(self)->type.name = NUM2DBL(val);\
111
429
  return self;\
112
430
  }
113
431
 
@@ -115,13 +433,13 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
115
433
  static VALUE \
116
434
  gdkevent ## type ## _ ## name (VALUE self)\
117
435
  {\
118
- return GOBJ2RVAL(get_gdkevent(self)->type.name);\
436
+ return GOBJ2RVAL(RVAL2GDKEVENT(self)->type.name);\
119
437
  }\
120
438
  static VALUE \
121
439
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
122
440
  {\
123
441
  GdkEvent *event;\
124
- event = get_gdkevent(self);\
442
+ event = RVAL2GDKEVENT(self);\
125
443
  if (event->type.name)\
126
444
  g_object_unref(event->type.name);\
127
445
  event->type.name = RVAL2GOBJ(val);\
@@ -134,12 +452,12 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
134
452
  static VALUE \
135
453
  gdkevent ## type ## _ ## name (VALUE self)\
136
454
  {\
137
- return CBOOL2RVAL(get_gdkevent(self)->type.name);\
455
+ return CBOOL2RVAL(RVAL2GDKEVENT(self)->type.name);\
138
456
  }\
139
457
  static VALUE \
140
458
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
141
459
  {\
142
- get_gdkevent(self)->type.name = RVAL2CBOOL(val);\
460
+ RVAL2GDKEVENT(self)->type.name = RVAL2CBOOL(val);\
143
461
  return self;\
144
462
  }
145
463
 
@@ -147,13 +465,13 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
147
465
  static VALUE \
148
466
  gdkevent ## type ## _ ## name (VALUE self)\
149
467
  {\
150
- GdkAtom atom = get_gdkevent(self)->type.name;\
468
+ GdkAtom atom = RVAL2GDKEVENT(self)->type.name;\
151
469
  return GDKATOM2RVAL(atom);\
152
470
  }\
153
471
  static VALUE \
154
472
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
155
473
  {\
156
- get_gdkevent(self)->type.name = RVAL2ATOM(val);\
474
+ RVAL2GDKEVENT(self)->type.name = RVAL2ATOM(val);\
157
475
  return self;\
158
476
  }
159
477
 
@@ -161,12 +479,12 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
161
479
  static VALUE \
162
480
  gdkevent ## type ## _ ## name (VALUE self)\
163
481
  {\
164
- return GFLAGS2RVAL(get_gdkevent(self)->type.name, gtype);\
482
+ return GFLAGS2RVAL(RVAL2GDKEVENT(self)->type.name, gtype);\
165
483
  }\
166
484
  static VALUE \
167
485
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
168
486
  {\
169
- get_gdkevent(self)->type.name = RVAL2GFLAGS(val, gtype);\
487
+ RVAL2GDKEVENT(self)->type.name = RVAL2GFLAGS(val, gtype);\
170
488
  return self;\
171
489
  }
172
490
 
@@ -174,12 +492,12 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
174
492
  static VALUE \
175
493
  gdkevent ## type ## _ ## name (VALUE self)\
176
494
  {\
177
- return GENUM2RVAL(get_gdkevent(self)->type.name, gtype);\
495
+ return GENUM2RVAL(RVAL2GDKEVENT(self)->type.name, gtype);\
178
496
  }\
179
497
  static VALUE \
180
498
  gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
181
499
  {\
182
- get_gdkevent(self)->type.name = RVAL2GENUM(val, gtype);\
500
+ RVAL2GDKEVENT(self)->type.name = RVAL2GENUM(val, gtype);\
183
501
  return self;\
184
502
  }
185
503
 
@@ -187,7 +505,7 @@ gdkevent ## type ## _set_ ## name (VALUE self, VALUE val)\
187
505
  static VALUE \
188
506
  gdkevent ##type ## _axes(VALUE self)\
189
507
  {\
190
- gdkklass type = get_gdkevent(self)->type;\
508
+ gdkklass type = RVAL2GDKEVENT(self)->type;\
191
509
  return type.axes ? rb_ary_new3(2, \
192
510
  rb_float_new(type.axes[0]),\
193
511
  rb_float_new(type.axes[1])) : Qnil;\
@@ -195,7 +513,7 @@ gdkevent ##type ## _axes(VALUE self)\
195
513
  static VALUE \
196
514
  gdkevent ## type ## _set_axes(VALUE self, VALUE x, VALUE y)\
197
515
  {\
198
- gdkklass val = get_gdkevent(self)->type;\
516
+ gdkklass val = RVAL2GDKEVENT(self)->type;\
199
517
  val.axes[0] = NUM2DBL(x);\
200
518
  val.axes[1] = NUM2DBL(y);\
201
519
  return self;\
@@ -240,45 +558,42 @@ gdkevent_s_events_pending(G_GNUC_UNUSED VALUE self)
240
558
  static VALUE
241
559
  gdkevent_s_peek(G_GNUC_UNUSED VALUE self)
242
560
  {
243
- return make_gdkevent(gdk_event_peek());
561
+ return GDKEVENT2RVAL(gdk_event_peek());
244
562
  }
245
563
 
246
564
  static VALUE
247
565
  gdkevent_s_get(G_GNUC_UNUSED VALUE self)
248
566
  {
249
- return make_gdkevent(gdk_event_get());
250
- }
251
-
252
- /* deprecated
253
- static VALUE
254
- gdkevent_s_get_graphics_expose(G_GNUC_UNUSED VALUE self, VALUE window)
255
- {
256
- return make_gdkevent(gdk_event_get_graphics_expose(RVAL2GDKWINDOW(window)));
567
+ return GDKEVENT2RVAL(gdk_event_get());
257
568
  }
258
- */
259
569
 
260
570
  /* GdkEvent */
261
571
  static VALUE
262
572
  gdkevent_initialize(VALUE self, VALUE type)
263
573
  {
264
- GdkEventType gtype = RVAL2GDKEVENTTYPE(type);
265
- if (RBASIC(self)->klass != gdkevents[gtype])
574
+ GdkEventType event_type;
575
+ VALUE klass;
576
+
577
+ event_type = RVAL2GDKEVENTTYPE(type);
578
+ klass = rb_gdk_event_type_to_class(event_type);
579
+ if (!RVAL2CBOOL(rb_obj_is_kind_of(self, klass))) {
266
580
  rb_raise(rb_eArgError, "Wrong event type for this class.");
581
+ }
267
582
 
268
- G_INITIALIZE(self, gdk_event_new(gtype));
583
+ G_INITIALIZE(self, gdk_event_new(event_type));
269
584
  return Qnil;
270
585
  }
271
586
 
272
587
  static VALUE
273
588
  gdkevent_type(VALUE self)
274
589
  {
275
- return GDKEVENTTYPE2RVAL(get_gdkevent(self)->type);
590
+ return GDKEVENTTYPE2RVAL(RVAL2GDKEVENT(self)->type);
276
591
  }
277
592
 
278
593
  static VALUE
279
594
  gdkevent_put(VALUE self)
280
595
  {
281
- gdk_event_put(get_gdkevent(self));
596
+ gdk_event_put(RVAL2GDKEVENT(self));
282
597
  return self;
283
598
  }
284
599
 
@@ -292,7 +607,7 @@ static VALUE
292
607
  gdkevent_get_axis(VALUE self, VALUE axis_use)
293
608
  {
294
609
  gdouble value;
295
- gboolean ret = gdk_event_get_axis(get_gdkevent(self),
610
+ gboolean ret = gdk_event_get_axis(RVAL2GDKEVENT(self),
296
611
  RVAL2GDKAXISUSE(axis_use), &value);
297
612
  return ret ? rb_float_new(value) : Qnil;
298
613
  }
@@ -301,7 +616,7 @@ static VALUE
301
616
  gdkevent_get_coords(VALUE self)
302
617
  {
303
618
  gdouble x_win, y_win;
304
- gboolean ret = gdk_event_get_coords(get_gdkevent(self), &x_win, &y_win);
619
+ gboolean ret = gdk_event_get_coords(RVAL2GDKEVENT(self), &x_win, &y_win);
305
620
 
306
621
  return ret ? rb_ary_new3(2, rb_float_new(x_win), rb_float_new(y_win)) : Qnil;
307
622
  }
@@ -310,7 +625,7 @@ static VALUE
310
625
  gdkevent_get_root_coords(VALUE self)
311
626
  {
312
627
  gdouble x_root, y_root;
313
- gboolean ret = gdk_event_get_root_coords(get_gdkevent(self), &x_root, &y_root);
628
+ gboolean ret = gdk_event_get_root_coords(RVAL2GDKEVENT(self), &x_root, &y_root);
314
629
 
315
630
  return ret ? rb_ary_new3(2, rb_float_new(x_root), rb_float_new(y_root)) : Qnil;
316
631
  }
@@ -318,7 +633,7 @@ gdkevent_get_root_coords(VALUE self)
318
633
  static void
319
634
  handler_func(GdkEvent *event, gpointer func)
320
635
  {
321
- rb_funcall((VALUE)func, id_call, 1, make_gdkevent(event));
636
+ rb_funcall((VALUE)func, id_call, 1, GDKEVENT2RVAL(event));
322
637
  }
323
638
 
324
639
  static VALUE
@@ -347,14 +662,14 @@ gdkevent_s_set_show_events(VALUE self, VALUE show_events)
347
662
  static VALUE
348
663
  gdkevent_set_screen(VALUE self, VALUE screen)
349
664
  {
350
- gdk_event_set_screen(get_gdkevent(self), RVAL2GDKSCREEN(screen));
665
+ gdk_event_set_screen(RVAL2GDKEVENT(self), RVAL2GDKSCREEN(screen));
351
666
  return self;
352
667
  }
353
668
 
354
669
  static VALUE
355
670
  gdkevent_screen(VALUE self)
356
671
  {
357
- return GOBJ2RVAL(gdk_event_get_screen(get_gdkevent(self)));
672
+ return GOBJ2RVAL(gdk_event_get_screen(RVAL2GDKEVENT(self)));
358
673
  }
359
674
 
360
675
  /*
@@ -405,6 +720,19 @@ ATTR_GOBJ(button, device);
405
720
  ATTR_FLOAT(button, x_root);
406
721
  ATTR_FLOAT(button, y_root);
407
722
 
723
+ /* GdkEventTouch */
724
+ ATTR_GOBJ(touch, window);
725
+ ATTR_BOOL(touch, send_event);
726
+ ATTR_UINT(touch, time);
727
+ ATTR_FLOAT(touch, x);
728
+ ATTR_FLOAT(touch, y);
729
+ ATTR_AXES(touch, GdkEventTouch);
730
+ ATTR_FLAGS(touch, state, GDK_TYPE_MODIFIER_TYPE);
731
+ ATTR_BOOL(touch, emulating_pointer);
732
+ ATTR_GOBJ(touch, device);
733
+ ATTR_FLOAT(touch, x_root);
734
+ ATTR_FLOAT(touch, y_root);
735
+
408
736
  /* GdkEventScroll */
409
737
  ATTR_UINT(scroll, time);
410
738
  ATTR_FLOAT(scroll, x);
@@ -431,45 +759,44 @@ GDKEVENT_INIT(motion, GDK_MOTION_NOTIFY);
431
759
  static VALUE
432
760
  gdkeventmotion_request_motions(VALUE self)
433
761
  {
434
- gdk_event_request_motions(&(get_gdkevent(self)->motion));
762
+ gdk_event_request_motions(&(RVAL2GDKEVENT(self)->motion));
435
763
  return self;
436
764
  }
437
765
 
438
766
  /* GdkEventExpose */
439
- /* deprecated
440
767
  static VALUE
441
768
  gdkeventexpose_area(VALUE self)
442
769
  {
443
- return GDKRECTANGLE2RVAL(&get_gdkevent(self)->expose.area);
770
+ return GDKRECTANGLE2RVAL(&RVAL2GDKEVENT(self)->expose.area);
444
771
  }
445
-
772
+
446
773
  static VALUE
447
774
  gdkeventexpose_set_area(VALUE self, VALUE rect)
448
775
  {
449
776
  GdkRectangle* grect = RVAL2GDKRECTANGLE(rect);
450
- GdkEventExpose event = get_gdkevent(self)->expose;
451
- event.area.x = grect->x;
452
- event.area.y = grect->y;
453
- event.area.width = grect->width;
454
- event.area.height = grect->height;
777
+ GdkEventExpose *event = &(RVAL2GDKEVENT(self)->expose);
778
+ event->area.x = grect->x;
779
+ event->area.y = grect->y;
780
+ event->area.width = grect->width;
781
+ event->area.height = grect->height;
455
782
  return self;
456
783
  }
457
784
 
458
785
  static VALUE
459
786
  gdkeventexpose_region(VALUE self)
460
787
  {
461
- return GDKREGION2RVAL(get_gdkevent(self)->expose.region);
788
+ return CRREGION2RVAL(RVAL2GDKEVENT(self)->expose.region);
462
789
  }
790
+
463
791
  static VALUE
464
792
  gdkeventexpose_set_region(VALUE self, VALUE region)
465
793
  {
466
- get_gdkevent(self)->expose.region = RVAL2GDKREGION(region);
794
+ RVAL2GDKEVENT(self)->expose.region = RVAL2CRREGION(region);
467
795
  return self;
468
796
  }
469
797
 
470
798
  ATTR_INT(expose, count);
471
799
  GDKEVENT_INIT(expose, GDK_EXPOSE);
472
- */
473
800
 
474
801
  /* GdkEventVisibility */
475
802
  ATTR_ENUM(visibility, state, GDK_TYPE_VISIBILITY_STATE);
@@ -521,88 +848,6 @@ ATTR_INT(dnd, y_root);
521
848
  ATTR_UINT(proximity, time);
522
849
  ATTR_GOBJ(proximity, device);
523
850
 
524
- /* GdkEventClient */
525
- /* deprecated
526
- ATTR_ATOM(client, message_type);
527
- GDKEVENT_INIT(client, GDK_CLIENT_EVENT);
528
-
529
- static VALUE
530
- gdkeventclient_data_format(VALUE self)
531
- {
532
- return INT2NUM(get_gdkevent(self)->client.data_format);
533
- }
534
-
535
- static VALUE
536
- gdkeventclient_data(VALUE self)
537
- {
538
- int i;
539
- VALUE ary = Qnil;
540
- gushort format = get_gdkevent(self)->client.data_format;
541
-
542
- if (format == 8) {
543
- ary = rb_ary_new2(20);
544
- for (i = 0; i < 20; i++)
545
- rb_ary_push(ary, INT2FIX(get_gdkevent(self)->client.data.b[i]));
546
- } else if (format == 16) {
547
- ary = rb_ary_new2(10);
548
- for (i = 0; i<10; i++)
549
- rb_ary_push(ary, INT2FIX(get_gdkevent(self)->client.data.s[i]));
550
- } else if (format == 32){
551
- ary = rb_ary_new2(5);
552
- for (i = 0; i < 5; i++)
553
- rb_ary_push(ary, INT2NUM(get_gdkevent(self)->client.data.l[i]));
554
- } else {
555
- rb_warn("The format is not supported.");
556
- }
557
- return ary;
558
- }
559
-
560
- static VALUE
561
- gdkeventclient_send_client_message(int argc, VALUE *argv, VALUE self)
562
- {
563
- VALUE xid, display;
564
- rb_scan_args(argc, argv, "11", &xid, &display);
565
- if (NIL_P(display)){
566
- return CBOOL2RVAL(gdk_event_send_client_message(
567
- get_gdkevent(self), RVAL2GDKNATIVEWINDOW(xid)));
568
- } else {
569
- return CBOOL2RVAL(gdk_event_send_client_message_for_display(
570
- RVAL2GDKDISPLAYOBJECT(display),
571
- get_gdkevent(self),
572
- RVAL2GDKNATIVEWINDOW(xid)));
573
- }
574
- }
575
-
576
- static VALUE
577
- gdkeventclient_send_clientmessage_toall(VALUE self)
578
- {
579
- gdk_event_send_clientmessage_toall(get_gdkevent(self));
580
- return self;
581
- }
582
-
583
- static GdkFilterReturn
584
- filter_func(GdkXEvent *xevent, GdkEvent *event, gpointer func)
585
- {
586
- VALUE ret = rb_funcall((VALUE)func, id_call, 2, LONG2NUM((glong)xevent), make_gdkevent(event));
587
- return RVAL2GDKFILTERRETURN(ret);
588
- }
589
-
590
- static VALUE
591
- gdkevent_s_add_client_message_filter(VALUE self, VALUE message_type)
592
- {
593
- volatile VALUE func = rb_block_proc();
594
- G_RELATIVE(self, func);
595
- gdk_add_client_message_filter(RVAL2ATOM(message_type),
596
- (GdkFilterFunc)filter_func, (gpointer)func);
597
- return self;
598
- }
599
- */
600
-
601
- /* GdkEventNoExpose */
602
- /* deprecated
603
- GDKEVENT_INIT(noexpose, GDK_NO_EXPOSE);
604
- */
605
-
606
851
  /* GdkEventWindowState */
607
852
  ATTR_FLAGS(window_state, changed_mask, GDK_TYPE_WINDOW_STATE);
608
853
  ATTR_FLAGS(window_state, new_window_state, GDK_TYPE_WINDOW_STATE);
@@ -628,299 +873,302 @@ ATTR_GOBJ(grab_broken, grab_window);
628
873
  GDKEVENT_INIT(grab_broken, GDK_GRAB_BROKEN);
629
874
 
630
875
  /* MISC */
631
- static VALUE
876
+ static VALUE
632
877
  gdkevent_g2r(const GValue *values)
633
878
  {
634
- return make_gdkevent(g_value_get_boxed(&values[0]));
879
+ return GDKEVENT2RVAL(g_value_get_boxed(&values[0]));
635
880
  }
636
881
 
637
882
  void
638
883
  Init_gdk_event(VALUE mGdk)
639
884
  {
640
- VALUE ev;
641
- VALUE gdkEvent;
642
- VALUE gdkEventAny;
885
+ /* GdkEvent */
886
+ rb_cGdkEvent = G_DEF_CLASS(GDK_TYPE_EVENT, "Event", mGdk);
887
+ rbg_define_method(rb_cGdkEvent, "initialize", gdkevent_initialize, 1);
888
+ rbg_define_method(rb_cGdkEvent, "event_type", gdkevent_type, 0);
889
+
890
+ rbg_define_singleton_method(rb_cGdkEvent, "events_pending?", gdkevent_s_events_pending, 0);
891
+ rbg_define_singleton_method(rb_cGdkEvent, "peek", gdkevent_s_peek, 0);
892
+ rbg_define_singleton_method(rb_cGdkEvent, "get", gdkevent_s_get, 0);
893
+ rbg_define_method(rb_cGdkEvent, "put", gdkevent_put, 0);
894
+ rbg_define_method(rb_cGdkEvent, "get_axis", gdkevent_get_axis, 1);
895
+ rbg_define_method(rb_cGdkEvent, "coords", gdkevent_get_coords, 0);
896
+ rbg_define_method(rb_cGdkEvent, "root_coords", gdkevent_get_root_coords, 0);
897
+
898
+ rbg_define_singleton_method(rb_cGdkEvent, "handler_set", gdkevent_s_handler_set, 0);
899
+ rbg_define_singleton_method(rb_cGdkEvent, "show_events?", gdkevent_s_get_show_events, 0);
900
+ rbg_define_singleton_method(rb_cGdkEvent, "set_show_events", gdkevent_s_set_show_events, 1);
901
+ rbg_define_singleton_method(rb_cGdkEvent, "setting_get", gdkevent_s_setting_get, -1);
902
+ rbg_define_method(rb_cGdkEvent, "screen", gdkevent_screen, 0);
903
+ rbg_define_method(rb_cGdkEvent, "set_screen", gdkevent_set_screen, 1);
643
904
 
644
- gdkEvent = G_DEF_CLASS(GDK_TYPE_EVENT, "Event", mGdk);
645
- gdkEventAny = rb_define_class_under(mGdk, "EventAny", gdkEvent);
905
+ /*
906
+ * GdkEvent's Constants
907
+ */
908
+ rb_define_const(rb_cGdkEvent, "CURRENT_TIME", INT2FIX(GDK_CURRENT_TIME));
909
+ rb_define_const(rb_cGdkEvent, "PRIORITY_EVENTS", INT2FIX(GDK_PRIORITY_EVENTS));
910
+ rb_define_const(rb_cGdkEvent, "PRIORITY_REDRAW", INT2FIX(GDK_PRIORITY_REDRAW));
646
911
 
647
- gdkevents[GDK_DELETE] = gdkEventAny;
648
- gdkevents[GDK_DESTROY] = gdkEventAny;
649
- /* deprecated
650
- gdkevents[GDK_EXPOSE] = rb_define_class_under(mGdk, "EventExpose", gdkEventAny);
651
- */
652
- gdkevents[GDK_MOTION_NOTIFY] = rb_define_class_under(mGdk, "EventMotion", gdkEventAny);
653
- gdkevents[GDK_BUTTON_PRESS] = rb_define_class_under(mGdk, "EventButton", gdkEventAny);
654
- gdkevents[GDK_2BUTTON_PRESS] = gdkevents[GDK_BUTTON_PRESS];
655
- gdkevents[GDK_3BUTTON_PRESS] = gdkevents[GDK_BUTTON_PRESS];
656
- gdkevents[GDK_BUTTON_RELEASE]= gdkevents[GDK_BUTTON_PRESS];
657
- gdkevents[GDK_KEY_PRESS] = rb_define_class_under(mGdk, "EventKey", gdkEventAny);
658
- gdkevents[GDK_KEY_RELEASE] = gdkevents[GDK_KEY_PRESS];
659
- gdkevents[GDK_ENTER_NOTIFY] = rb_define_class_under(mGdk, "EventCrossing", gdkEventAny);
660
- gdkevents[GDK_LEAVE_NOTIFY] = gdkevents[GDK_ENTER_NOTIFY];
661
- gdkevents[GDK_FOCUS_CHANGE] = rb_define_class_under(mGdk, "EventFocus", gdkEventAny);
662
- gdkevents[GDK_CONFIGURE] = rb_define_class_under(mGdk, "EventConfigure", gdkEventAny);
663
- gdkevents[GDK_MAP] = gdkEventAny;
664
- gdkevents[GDK_UNMAP] = gdkEventAny;
665
- gdkevents[GDK_PROPERTY_NOTIFY]= rb_define_class_under(mGdk, "EventProperty", gdkEventAny);
666
- gdkevents[GDK_SELECTION_CLEAR]= rb_define_class_under(mGdk, "EventSelection", gdkEventAny);
667
- gdkevents[GDK_SELECTION_REQUEST]= gdkevents[GDK_SELECTION_CLEAR];
668
- gdkevents[GDK_SELECTION_NOTIFY] = gdkevents[GDK_SELECTION_CLEAR];
669
- gdkevents[GDK_PROXIMITY_IN] = rb_define_class_under(mGdk, "EventProximity", gdkEventAny);
670
- gdkevents[GDK_PROXIMITY_OUT] = gdkevents[GDK_PROXIMITY_IN];
671
- gdkevents[GDK_DRAG_ENTER] = rb_define_class_under(mGdk, "EventDND", gdkEventAny);
672
- gdkevents[GDK_DRAG_LEAVE] = gdkevents[GDK_DRAG_ENTER];
673
- gdkevents[GDK_DRAG_MOTION] = gdkevents[GDK_DRAG_ENTER];
674
- gdkevents[GDK_DRAG_STATUS] = gdkevents[GDK_DRAG_ENTER];
675
- gdkevents[GDK_DROP_START] = gdkevents[GDK_DRAG_ENTER];
676
- gdkevents[GDK_DROP_FINISHED] = gdkevents[GDK_DRAG_ENTER];
677
- gdkevents[GDK_CLIENT_EVENT] = rb_define_class_under(mGdk, "EventClient", gdkEventAny);
678
- gdkevents[GDK_VISIBILITY_NOTIFY] = rb_define_class_under(mGdk, "EventVisibility", gdkEventAny);
679
- /* deprecated
680
- gdkevents[GDK_NO_EXPOSE] = rb_define_class_under(mGdk, "EventNoExpose", gdkEventAny);
681
- */
682
- gdkevents[GDK_SCROLL] = rb_define_class_under(mGdk, "EventScroll", gdkEventAny);
683
- gdkevents[GDK_WINDOW_STATE] = rb_define_class_under(mGdk, "EventWindowState", gdkEventAny);
684
- gdkevents[GDK_SETTING] = rb_define_class_under(mGdk, "EventSetting", gdkEventAny);
685
- gdkevents[GDK_OWNER_CHANGE] = rb_define_class_under(mGdk, "EventOwnerChange", gdkEventAny);
686
- gdkevents[GDK_GRAB_BROKEN] = rb_define_class_under(mGdk, "EventGrabBroken", gdkEventAny);
912
+ /* GdkEventType */
913
+ /* XXX */
914
+ G_RENAME_CONSTANT("2BUTTON_PRESS","BUTTON2_PRESS");
915
+ G_RENAME_CONSTANT("3BUTTON_PRESS","BUTTON3_PRESS");
916
+ G_DEF_CLASS(GDK_TYPE_EVENT_TYPE, "Type", rb_cGdkEvent);
917
+ G_RENAME_CONSTANT("2BUTTON_PRESS","BUTTON2_PRESS");
918
+ G_RENAME_CONSTANT("3BUTTON_PRESS","BUTTON3_PRESS");
919
+ G_DEF_CONSTANTS(rb_cGdkEvent, GDK_TYPE_EVENT_TYPE, "GDK_");
687
920
 
688
- /* GdkEvent */
689
- rbg_define_method(gdkEvent, "initialize", gdkevent_initialize, 1);
690
- rbg_define_method(gdkEvent, "event_type", gdkevent_type, 0);
691
-
692
- rbg_define_singleton_method(gdkEvent, "events_pending?", gdkevent_s_events_pending, 0);
693
- rbg_define_singleton_method(gdkEvent, "peek", gdkevent_s_peek, 0);
694
- rbg_define_singleton_method(gdkEvent, "get", gdkevent_s_get, 0);
695
- rbg_define_method(gdkEvent, "put", gdkevent_put, 0);
696
- rbg_define_method(gdkEvent, "get_axis", gdkevent_get_axis, 1);
697
- rbg_define_method(gdkEvent, "coords", gdkevent_get_coords, 0);
698
- rbg_define_method(gdkEvent, "root_coords", gdkevent_get_root_coords, 0);
699
-
700
- rbg_define_singleton_method(gdkEvent, "handler_set", gdkevent_s_handler_set, 0);
701
- rbg_define_singleton_method(gdkEvent, "show_events?", gdkevent_s_get_show_events, 0);
702
- rbg_define_singleton_method(gdkEvent, "set_show_events", gdkevent_s_set_show_events, 1);
703
- rbg_define_singleton_method(gdkEvent, "setting_get", gdkevent_s_setting_get, -1);
704
- /* deprecated
705
- rbg_define_singleton_method(gdkEvent, "add_client_message_filter", gdkevent_s_add_client_message_filter, 1);
706
- */
707
- rbg_define_method(gdkEvent, "screen", gdkevent_screen, 0);
708
- rbg_define_method(gdkEvent, "set_screen", gdkevent_set_screen, 1);
921
+ /* GdkEventMask */
922
+ G_DEF_CLASS(GDK_TYPE_EVENT_MASK, "Mask", rb_cGdkEvent);
923
+ G_DEF_CONSTANTS(rb_cGdkEvent, GDK_TYPE_EVENT_MASK, "GDK_");
709
924
 
710
925
  /* GdkEventAny */
711
- DEFINE_ACCESSOR(gdkEventAny, any, window);
712
- rbg_define_method(gdkEventAny, "send_event?", gdkeventany_send_event, 0);
713
- rbg_define_method(gdkEventAny, "set_send_event", gdkeventany_set_send_event, 1);
714
-
715
- /* GdkEventKey */
716
- ev = gdkevents[GDK_KEY_PRESS];
717
- DEFINE_ACCESSOR(ev, key, time);
718
- DEFINE_ACCESSOR(ev, key, state);
719
- DEFINE_ACCESSOR(ev, key, keyval);
720
- DEFINE_ACCESSOR(ev, key, hardware_keycode);
721
- DEFINE_ACCESSOR(ev, key, group);
926
+ rb_cGdkEventAny =
927
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_ANY, "EventAny",
928
+ mGdk, rb_cGdkEvent);
929
+ DEFINE_ACCESSOR(rb_cGdkEventAny, any, window);
930
+ rbg_define_method(rb_cGdkEventAny, "send_event?", gdkeventany_send_event, 0);
931
+ rbg_define_method(rb_cGdkEventAny, "set_send_event", gdkeventany_set_send_event, 1);
722
932
 
723
- /* GdkEventButton */
724
- ev = gdkevents[GDK_BUTTON_PRESS];
725
- DEFINE_ACCESSOR(ev, button, time);
726
- DEFINE_ACCESSOR(ev, button, x);
727
- DEFINE_ACCESSOR(ev, button, y);
728
- rbg_define_method(ev, "axes", gdkeventbutton_axes, 0);
729
- rbg_define_method(ev, "set_axes", gdkeventbutton_set_axes, 2);
730
- DEFINE_ACCESSOR(ev, button, state);
731
- DEFINE_ACCESSOR(ev, button, button);
732
- DEFINE_ACCESSOR(ev, button, device);
733
- DEFINE_ACCESSOR(ev, button, x_root);
734
- DEFINE_ACCESSOR(ev, button, y_root);
933
+ /* GdkEventExpose */
934
+ rb_cGdkEventExpose =
935
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_EXPOSE, "EventExpose",
936
+ mGdk, rb_cGdkEvent);
937
+ DEFINE_ACCESSOR(rb_cGdkEventExpose, expose, area);
938
+ DEFINE_ACCESSOR(rb_cGdkEventExpose, expose, region);
939
+ DEFINE_ACCESSOR(rb_cGdkEventExpose, expose, count);
940
+ DEFINE_INIT(rb_cGdkEventExpose, expose);
735
941
 
736
- /* GdkEventScroll */
737
- ev = gdkevents[GDK_SCROLL];
738
- DEFINE_ACCESSOR(ev, scroll, time);
739
- DEFINE_ACCESSOR(ev, scroll, x);
740
- DEFINE_ACCESSOR(ev, scroll, y);
741
- DEFINE_ACCESSOR(ev, scroll, state);
742
- DEFINE_ACCESSOR(ev, scroll, direction);
743
- DEFINE_ACCESSOR(ev, scroll, device);
744
- DEFINE_ACCESSOR(ev, scroll, x_root);
745
- DEFINE_ACCESSOR(ev, scroll, y_root);
746
- DEFINE_INIT(ev, scroll);
942
+ /* GdkEventVisibility */
943
+ rb_cGdkEventVisibility =
944
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_VISIBILITY, "EventVisibility",
945
+ mGdk, rb_cGdkEvent);
946
+ DEFINE_ACCESSOR(rb_cGdkEventVisibility, visibility, state);
947
+ DEFINE_INIT(rb_cGdkEventVisibility, visibility);
747
948
 
748
- /* GdkScrollDirection */
749
- G_DEF_CLASS(GDK_TYPE_SCROLL_DIRECTION, "Direction", ev);
949
+ /* GdkVisibilityState */
950
+ G_DEF_CLASS(GDK_TYPE_VISIBILITY_STATE, "State", rb_cGdkEventVisibility);
951
+ G_DEF_CONSTANTS(rb_cGdkEventVisibility,
952
+ GDK_TYPE_VISIBILITY_STATE, "GDK_VISIBILITY_");
750
953
 
751
954
  /* GdkEventMotion */
752
- ev = gdkevents[GDK_MOTION_NOTIFY];
753
- DEFINE_ACCESSOR(ev, motion, time);
754
- DEFINE_ACCESSOR(ev, motion, x);
755
- DEFINE_ACCESSOR(ev, motion, y);
756
- rbg_define_method(ev, "axes", gdkeventmotion_axes, 0);
757
- rbg_define_method(ev, "set_axes", gdkeventmotion_set_axes, 1);
758
- DEFINE_ACCESSOR(ev, motion, state);
759
- rbg_define_method(ev, "hint?", gdkeventmotion_is_hint, 0);
760
- rbg_define_method(ev, "set_hint", gdkeventmotion_set_is_hint, 1);
761
- DEFINE_ACCESSOR(ev, motion, device);
762
- DEFINE_ACCESSOR(ev, motion, x_root);
763
- DEFINE_ACCESSOR(ev, motion, y_root);
764
- DEFINE_INIT(ev, motion);
765
- rbg_define_method(ev, "request", gdkeventmotion_request_motions, 0);
955
+ rb_cGdkEventMotion =
956
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_MOTION, "EventMotion",
957
+ mGdk, rb_cGdkEvent);
958
+ DEFINE_ACCESSOR(rb_cGdkEventMotion, motion, time);
959
+ DEFINE_ACCESSOR(rb_cGdkEventMotion, motion, x);
960
+ DEFINE_ACCESSOR(rb_cGdkEventMotion, motion, y);
961
+ rbg_define_method(rb_cGdkEventMotion, "axes", gdkeventmotion_axes, 0);
962
+ rbg_define_method(rb_cGdkEventMotion, "set_axes", gdkeventmotion_set_axes, 1);
963
+ DEFINE_ACCESSOR(rb_cGdkEventMotion, motion, state);
964
+ rbg_define_method(rb_cGdkEventMotion, "hint?", gdkeventmotion_is_hint, 0);
965
+ rbg_define_method(rb_cGdkEventMotion, "set_hint", gdkeventmotion_set_is_hint, 1);
966
+ DEFINE_ACCESSOR(rb_cGdkEventMotion, motion, device);
967
+ DEFINE_ACCESSOR(rb_cGdkEventMotion, motion, x_root);
968
+ DEFINE_ACCESSOR(rb_cGdkEventMotion, motion, y_root);
969
+ DEFINE_INIT(rb_cGdkEventMotion, motion);
970
+ rbg_define_method(rb_cGdkEventMotion, "request", gdkeventmotion_request_motions, 0);
766
971
 
767
- /* GdkEventExpose */
768
- /* deprecated
769
- ev = gdkevents[GDK_EXPOSE];
770
- DEFINE_ACCESSOR(ev, expose, area);
771
- DEFINE_ACCESSOR(ev, expose, region);
772
- DEFINE_ACCESSOR(ev, expose, count);
773
- DEFINE_INIT(ev, expose);
774
- rbg_define_singleton_method(ev, "get_graphics_expose",
775
- gdkevent_s_get_graphics_expose, 1);
776
- */
972
+ /* GdkEventButton */
973
+ rb_cGdkEventButton =
974
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_BUTTON, "EventButton",
975
+ mGdk, rb_cGdkEvent);
976
+ DEFINE_ACCESSOR(rb_cGdkEventButton, button, time);
977
+ DEFINE_ACCESSOR(rb_cGdkEventButton, button, x);
978
+ DEFINE_ACCESSOR(rb_cGdkEventButton, button, y);
979
+ rbg_define_method(rb_cGdkEventButton, "axes", gdkeventbutton_axes, 0);
980
+ rbg_define_method(rb_cGdkEventButton, "set_axes", gdkeventbutton_set_axes, 2);
981
+ DEFINE_ACCESSOR(rb_cGdkEventButton, button, state);
982
+ DEFINE_ACCESSOR(rb_cGdkEventButton, button, button);
983
+ DEFINE_ACCESSOR(rb_cGdkEventButton, button, device);
984
+ DEFINE_ACCESSOR(rb_cGdkEventButton, button, x_root);
985
+ DEFINE_ACCESSOR(rb_cGdkEventButton, button, y_root);
986
+
987
+ /* GdkEventTouch */
988
+ rb_cGdkEventTouch =
989
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_TOUCH, "EventTouch",
990
+ mGdk, rb_cGdkEvent);
991
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, window);
992
+ rbg_define_method(rb_cGdkEventTouch, "send_event?", gdkeventtouch_send_event, 0);
993
+ rbg_define_method(rb_cGdkEventTouch, "set_send_event", gdkeventtouch_set_send_event, 1);
994
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, time);
995
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, x);
996
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, y);
997
+ rbg_define_method(rb_cGdkEventTouch, "axes", gdkeventtouch_axes, 0);
998
+ rbg_define_method(rb_cGdkEventTouch, "set_axes", gdkeventtouch_set_axes, 2);
999
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, state);
1000
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, emulating_pointer);
1001
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, device);
1002
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, x_root);
1003
+ DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, y_root);
777
1004
 
778
- /* GdkEventVisibility */
779
- ev = gdkevents[GDK_VISIBILITY_NOTIFY];
780
- DEFINE_ACCESSOR(ev, visibility, state);
781
- DEFINE_INIT(ev, visibility);
1005
+ /* GdkEventScroll */
1006
+ rb_cGdkEventScroll =
1007
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_SCROLL, "EventScroll",
1008
+ mGdk, rb_cGdkEvent);
1009
+ DEFINE_ACCESSOR(rb_cGdkEventScroll, scroll, time);
1010
+ DEFINE_ACCESSOR(rb_cGdkEventScroll, scroll, x);
1011
+ DEFINE_ACCESSOR(rb_cGdkEventScroll, scroll, y);
1012
+ DEFINE_ACCESSOR(rb_cGdkEventScroll, scroll, state);
1013
+ DEFINE_ACCESSOR(rb_cGdkEventScroll, scroll, direction);
1014
+ DEFINE_ACCESSOR(rb_cGdkEventScroll, scroll, device);
1015
+ DEFINE_ACCESSOR(rb_cGdkEventScroll, scroll, x_root);
1016
+ DEFINE_ACCESSOR(rb_cGdkEventScroll, scroll, y_root);
1017
+ DEFINE_INIT(rb_cGdkEventScroll, scroll);
782
1018
 
783
- /* GdkVisibilityState */
784
- G_DEF_CLASS(GDK_TYPE_VISIBILITY_STATE, "State", ev);
1019
+ /* GdkScrollDirection */
1020
+ G_DEF_CLASS(GDK_TYPE_SCROLL_DIRECTION, "Direction", rb_cGdkEventScroll);
1021
+ G_DEF_CONSTANTS(rb_cGdkEventScroll,
1022
+ GDK_TYPE_SCROLL_DIRECTION, "GDK_SCROLL_");
1023
+
1024
+ /* GdkEventKey */
1025
+ rb_cGdkEventKey =
1026
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_KEY, "EventKey",
1027
+ mGdk, rb_cGdkEvent);
1028
+ DEFINE_ACCESSOR(rb_cGdkEventKey, key, time);
1029
+ DEFINE_ACCESSOR(rb_cGdkEventKey, key, state);
1030
+ DEFINE_ACCESSOR(rb_cGdkEventKey, key, keyval);
1031
+ DEFINE_ACCESSOR(rb_cGdkEventKey, key, hardware_keycode);
1032
+ DEFINE_ACCESSOR(rb_cGdkEventKey, key, group);
785
1033
 
786
1034
  /* GdkEventCrossing */
787
- ev = gdkevents[GDK_ENTER_NOTIFY];
788
- DEFINE_ACCESSOR(ev, crossing, subwindow);
789
- DEFINE_ACCESSOR(ev, crossing, time);
790
- DEFINE_ACCESSOR(ev, crossing, x);
791
- DEFINE_ACCESSOR(ev, crossing, y);
792
- DEFINE_ACCESSOR(ev, crossing, x_root);
793
- DEFINE_ACCESSOR(ev, crossing, y_root);
794
- DEFINE_ACCESSOR(ev, crossing, mode);
795
- DEFINE_ACCESSOR(ev, crossing, detail);
796
- rbg_define_method(ev, "focus?", gdkeventcrossing_focus, 0);
797
- rbg_define_method(ev, "set_focus", gdkeventcrossing_set_focus, 1);
798
- DEFINE_ACCESSOR(ev, crossing, state);
1035
+ rb_cGdkEventCrossing =
1036
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_CROSSING, "EventCrossing",
1037
+ mGdk, rb_cGdkEvent);
1038
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, subwindow);
1039
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, time);
1040
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, x);
1041
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, y);
1042
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, x_root);
1043
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, y_root);
1044
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, mode);
1045
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, detail);
1046
+ rbg_define_method(rb_cGdkEventCrossing, "focus?", gdkeventcrossing_focus, 0);
1047
+ rbg_define_method(rb_cGdkEventCrossing, "set_focus", gdkeventcrossing_set_focus, 1);
1048
+ DEFINE_ACCESSOR(rb_cGdkEventCrossing, crossing, state);
799
1049
 
800
1050
  /* GdkCrossingMode */
801
- G_DEF_CLASS(GDK_TYPE_CROSSING_MODE, "Mode", ev);
1051
+ G_DEF_CLASS(GDK_TYPE_CROSSING_MODE, "Mode", rb_cGdkEventCrossing);
1052
+ G_DEF_CONSTANTS(rb_cGdkEventCrossing,
1053
+ GDK_TYPE_CROSSING_MODE, "GDK_CROSSING_");
802
1054
  /* GdkNotifyType */
803
- G_DEF_CLASS(GDK_TYPE_NOTIFY_TYPE, "NotifyType", ev);
1055
+ G_DEF_CLASS(GDK_TYPE_NOTIFY_TYPE, "NotifyType", rb_cGdkEventScroll);
1056
+ G_DEF_CONSTANTS(rb_cGdkEventScroll, GDK_TYPE_NOTIFY_TYPE, "GDK_");
804
1057
 
805
1058
  /* GdkEventFocus */
806
- ev = gdkevents[GDK_FOCUS_CHANGE];
807
- rbg_define_method(ev, "in?", gdkeventfocus_change_in, 0);
808
- rbg_define_method(ev, "set_in", gdkeventfocus_change_set_in, 1);
809
- DEFINE_INIT(ev, focus_change);
1059
+ rb_cGdkEventFocus =
1060
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_FOCUS, "EventFocus",
1061
+ mGdk, rb_cGdkEvent);
1062
+ rbg_define_method(rb_cGdkEventFocus, "in?", gdkeventfocus_change_in, 0);
1063
+ rbg_define_method(rb_cGdkEventFocus, "set_in",
1064
+ gdkeventfocus_change_set_in, 1);
1065
+ DEFINE_INIT(rb_cGdkEventFocus, focus_change);
810
1066
 
811
1067
  /* GdkEventConfigure */
812
- ev = gdkevents[GDK_CONFIGURE];
813
- DEFINE_ACCESSOR(ev, configure, x);
814
- DEFINE_ACCESSOR(ev, configure, y);
815
- DEFINE_ACCESSOR(ev, configure, width);
816
- DEFINE_ACCESSOR(ev, configure, height);
817
- DEFINE_INIT(ev, configure);
1068
+ rb_cGdkEventConfigure =
1069
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_CONFIGURE, "EventConfigure",
1070
+ mGdk, rb_cGdkEvent);
1071
+ DEFINE_ACCESSOR(rb_cGdkEventConfigure, configure, x);
1072
+ DEFINE_ACCESSOR(rb_cGdkEventConfigure, configure, y);
1073
+ DEFINE_ACCESSOR(rb_cGdkEventConfigure, configure, width);
1074
+ DEFINE_ACCESSOR(rb_cGdkEventConfigure, configure, height);
1075
+ DEFINE_INIT(rb_cGdkEventConfigure, configure);
818
1076
 
819
1077
  /* GdkEventProperty */
820
- ev = gdkevents[GDK_PROPERTY_NOTIFY];
821
- DEFINE_ACCESSOR(ev, property, atom);
822
- DEFINE_ACCESSOR(ev, property, time);
823
- DEFINE_ACCESSOR(ev, property, state);
824
- DEFINE_INIT(ev, property);
825
-
826
- /* GdkPropertyState */
827
- G_DEF_CLASS(GDK_TYPE_PROPERTY_STATE, "State", ev);
1078
+ rb_cGdkEventProperty =
1079
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_PROPERTY, "EventProperty",
1080
+ mGdk, rb_cGdkEvent);
1081
+ DEFINE_ACCESSOR(rb_cGdkEventProperty, property, atom);
1082
+ DEFINE_ACCESSOR(rb_cGdkEventProperty, property, time);
1083
+ DEFINE_ACCESSOR(rb_cGdkEventProperty, property, state);
1084
+ DEFINE_INIT(rb_cGdkEventProperty, property);
1085
+
1086
+ /* GdkPropertyState */
1087
+ G_DEF_CLASS(GDK_TYPE_PROPERTY_STATE, "State", rb_cGdkEventProperty);
1088
+ G_DEF_CONSTANTS(rb_cGdkEventProperty, GDK_TYPE_PROPERTY_STATE, "GDK_");
828
1089
 
829
1090
  /* GdkEventSelection */
830
- ev = gdkevents[GDK_SELECTION_CLEAR];
831
- DEFINE_ACCESSOR(ev, selection, selection);
832
- DEFINE_ACCESSOR(ev, selection, target);
833
- DEFINE_ACCESSOR(ev, selection, property);
834
- DEFINE_ACCESSOR(ev, selection, requestor);
835
- DEFINE_ACCESSOR(ev, selection, time);
1091
+ rb_cGdkEventSelection =
1092
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_SELECTION, "EventSelection",
1093
+ mGdk, rb_cGdkEvent);
1094
+ DEFINE_ACCESSOR(rb_cGdkEventSelection, selection, selection);
1095
+ DEFINE_ACCESSOR(rb_cGdkEventSelection, selection, target);
1096
+ DEFINE_ACCESSOR(rb_cGdkEventSelection, selection, property);
1097
+ DEFINE_ACCESSOR(rb_cGdkEventSelection, selection, requestor);
1098
+ DEFINE_ACCESSOR(rb_cGdkEventSelection, selection, time);
836
1099
 
837
- /* GdkEventDND */
838
- ev = gdkevents[GDK_DRAG_ENTER];
839
- DEFINE_ACCESSOR(ev, dnd, context);
840
- DEFINE_ACCESSOR(ev, dnd, time);
841
- DEFINE_ACCESSOR(ev, dnd, x_root);
842
- DEFINE_ACCESSOR(ev, dnd, y_root);
1100
+ /* GdkEventOwnerChange */
1101
+ rb_cGdkEventOwnerChange =
1102
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_OWNER_CHANGE, "EventOwnerChange",
1103
+ mGdk, rb_cGdkEvent);
1104
+ DEFINE_ACCESSOR(rb_cGdkEventOwnerChange, owner_change, owner);
1105
+ DEFINE_ACCESSOR(rb_cGdkEventOwnerChange, owner_change, reason);
1106
+ DEFINE_ACCESSOR(rb_cGdkEventOwnerChange, owner_change, selection);
1107
+ DEFINE_ACCESSOR(rb_cGdkEventOwnerChange, owner_change, time);
1108
+ DEFINE_ACCESSOR(rb_cGdkEventOwnerChange, owner_change, selection_time);
1109
+ DEFINE_INIT(rb_cGdkEventOwnerChange, owner_change);
1110
+
1111
+ /* GdkOwnerChange */
1112
+ G_DEF_CLASS(GDK_TYPE_OWNER_CHANGE, "OwnerChange", rb_cGdkEventScroll);
1113
+ G_DEF_CONSTANTS(rb_cGdkEventScroll,
1114
+ GDK_TYPE_OWNER_CHANGE, "GDK_OWNER_CHANGE_");
843
1115
 
844
1116
  /* GdkEventProximity */
845
- ev = gdkevents[GDK_PROXIMITY_IN];
846
- DEFINE_ACCESSOR(ev, proximity, time);
847
- DEFINE_ACCESSOR(ev, proximity, device);
848
-
849
- /* GdkEventClient */
850
- /* deprecated
851
- ev = gdkevents[GDK_CLIENT_EVENT];
852
- DEFINE_ACCESSOR(ev, client, message_type);
853
- rbg_define_method(ev, "data_format", gdkeventclient_data_format, 0);
854
- rbg_define_method(ev, "data", gdkeventclient_data, 0);
855
- rbg_define_method(ev, "send_client_message",
856
- gdkeventclient_send_client_message, -1);
857
- rbg_define_method(ev, "send_clientmessage_toall",
858
- gdkeventclient_send_clientmessage_toall, 0);
859
- DEFINE_INIT(ev, client);
860
- */
1117
+ rb_cGdkEventProximity =
1118
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_PROXIMITY, "EventProximity",
1119
+ mGdk, rb_cGdkEvent);
1120
+ DEFINE_ACCESSOR(rb_cGdkEventProximity, proximity, time);
1121
+ DEFINE_ACCESSOR(rb_cGdkEventProximity, proximity, device);
861
1122
 
862
- /* GdkEventNoExpose */
863
- /* deprecated
864
- ev = gdkevents[GDK_NO_EXPOSE];
865
- DEFINE_INIT(ev, noexpose);
866
- */
1123
+ /* GdkEventDND */
1124
+ rb_cGdkEventDND =
1125
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_DND, "EventDND",
1126
+ mGdk, rb_cGdkEvent);
1127
+ DEFINE_ACCESSOR(rb_cGdkEventDND, dnd, context);
1128
+ DEFINE_ACCESSOR(rb_cGdkEventDND, dnd, time);
1129
+ DEFINE_ACCESSOR(rb_cGdkEventDND, dnd, x_root);
1130
+ DEFINE_ACCESSOR(rb_cGdkEventDND, dnd, y_root);
867
1131
 
868
1132
  /* GdkEventWindowState */
869
- ev = gdkevents[GDK_WINDOW_STATE];
870
- DEFINE_ACCESSOR(ev, window_state, changed_mask);
871
- DEFINE_ACCESSOR(ev, window_state, new_window_state);
872
- DEFINE_INIT(ev, window_state);
1133
+ rb_cGdkEventWindowState =
1134
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_WINDOW_STATE, "EventWindowState",
1135
+ mGdk, rb_cGdkEvent);
1136
+ DEFINE_ACCESSOR(rb_cGdkEventWindowState, window_state, changed_mask);
1137
+ DEFINE_ACCESSOR(rb_cGdkEventWindowState, window_state, new_window_state);
1138
+ DEFINE_INIT(rb_cGdkEventWindowState, window_state);
873
1139
 
874
1140
  /* GdkWindowState */
875
- G_DEF_CLASS(GDK_TYPE_WINDOW_STATE, "WindowState", ev);
1141
+ G_DEF_CLASS(GDK_TYPE_WINDOW_STATE, "WindowState", rb_cGdkEventScroll);
1142
+ G_DEF_CONSTANTS(rb_cGdkEventWindowState,
1143
+ GDK_TYPE_WINDOW_STATE, "GDK_WINDOW_STATE_");
876
1144
 
877
1145
  /* GdkEventSetting */
878
- ev = gdkevents[GDK_SETTING];
879
- DEFINE_ACCESSOR(ev, setting, action);
880
- DEFINE_ACCESSOR(ev, setting, name);
881
- DEFINE_INIT(ev, setting);
1146
+ rb_cGdkEventSetting =
1147
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_SETTING, "EventSetting",
1148
+ mGdk, rb_cGdkEvent);
1149
+ DEFINE_ACCESSOR(rb_cGdkEventSetting, setting, action);
1150
+ DEFINE_ACCESSOR(rb_cGdkEventSetting, setting, name);
1151
+ DEFINE_INIT(rb_cGdkEventSetting, setting);
882
1152
 
883
1153
  /* GdkSettingAction */
884
- G_DEF_CLASS(GDK_TYPE_SETTING_ACTION, "Action", ev);
885
-
886
- /* GdkEventOwnerChange */
887
- ev = gdkevents[GDK_OWNER_CHANGE];
888
- DEFINE_ACCESSOR(ev, owner_change, owner);
889
- DEFINE_ACCESSOR(ev, owner_change, reason);
890
- DEFINE_ACCESSOR(ev, owner_change, selection);
891
- DEFINE_ACCESSOR(ev, owner_change, time);
892
- DEFINE_ACCESSOR(ev, owner_change, selection_time);
893
- DEFINE_INIT(ev, owner_change);
894
-
895
- /* GdkOwnerChange */
896
- G_DEF_CLASS(GDK_TYPE_OWNER_CHANGE, "OwnerChange", ev);
1154
+ G_DEF_CLASS(GDK_TYPE_SETTING_ACTION, "Action", rb_cGdkEventScroll);
1155
+ G_DEF_CONSTANTS(rb_cGdkEventSetting,
1156
+ GDK_TYPE_SETTING_ACTION, "GDK_SETTING_");
897
1157
 
898
1158
  /* GdkEventGrabBroken */
899
- ev = gdkevents[GDK_GRAB_BROKEN];
900
- rbg_define_method(ev, "keyboard?", gdkeventgrab_broken_keyboard, 0);
901
- rbg_define_method(ev, "set_keyboard", gdkeventgrab_broken_set_keyboard, 1);
902
- rbg_define_method(ev, "implicit?", gdkeventgrab_broken_implicit, 0);
903
- rbg_define_method(ev, "set_implicit", gdkeventgrab_broken_set_implicit, 1);
904
- DEFINE_ACCESSOR(ev, grab_broken, grab_window);
905
- DEFINE_INIT(ev, grab_broken);
1159
+ rb_cGdkEventGrabBroken =
1160
+ G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_GRAB_BROKEN, "EventGrabBroken",
1161
+ mGdk, rb_cGdkEvent);
1162
+ rbg_define_method(rb_cGdkEventGrabBroken,
1163
+ "keyboard?", gdkeventgrab_broken_keyboard, 0);
1164
+ rbg_define_method(rb_cGdkEventGrabBroken,
1165
+ "set_keyboard", gdkeventgrab_broken_set_keyboard, 1);
1166
+ rbg_define_method(rb_cGdkEventGrabBroken,
1167
+ "implicit?", gdkeventgrab_broken_implicit, 0);
1168
+ rbg_define_method(rb_cGdkEventGrabBroken,
1169
+ "set_implicit", gdkeventgrab_broken_set_implicit, 1);
1170
+ DEFINE_ACCESSOR(rb_cGdkEventGrabBroken, grab_broken, grab_window);
1171
+ DEFINE_INIT(rb_cGdkEventGrabBroken, grab_broken);
906
1172
 
907
1173
  rbgobj_register_g2r_func(GDK_TYPE_EVENT, &gdkevent_g2r);
908
-
909
- /*
910
- * GdkEvent's Constants
911
- */
912
- rb_define_const(gdkEvent, "CURRENT_TIME", INT2FIX(GDK_CURRENT_TIME));
913
- rb_define_const(gdkEvent, "PRIORITY_EVENTS", INT2FIX(GDK_PRIORITY_EVENTS));
914
- rb_define_const(gdkEvent, "PRIORITY_REDRAW", INT2FIX(GDK_PRIORITY_REDRAW));
915
-
916
- /* GdkEventType */
917
- /* XXX */
918
- G_RENAME_CONSTANT("2BUTTON_PRESS","BUTTON2_PRESS");
919
- G_RENAME_CONSTANT("3BUTTON_PRESS","BUTTON3_PRESS");
920
- G_DEF_CLASS(GDK_TYPE_EVENT_TYPE, "Type", gdkEvent);
921
- G_RENAME_CONSTANT("2BUTTON_PRESS","BUTTON2_PRESS");
922
- G_RENAME_CONSTANT("3BUTTON_PRESS","BUTTON3_PRESS");
923
-
924
- /* GdkEventMask */
925
- G_DEF_CLASS(GDK_TYPE_EVENT_MASK, "Mask", gdkEvent);
926
1174
  }