gdk3 2.0.2 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
  }