From 0ed9577c7edc9b227d86d3110bb8294940507f19 Mon Sep 17 00:00:00 2001
From: Kouhei Sutou <kou@clear-code.com>
Date: Tue, 11 Feb 2014 16:28:26 +0900
Subject: [PATCH] gdk3: add missing methods derived from GdkEventAny to all
event classes
GitHub: #222
Reported by mtasaka. Thanks!!!
---
gdk3/ext/gdk3/rbgdkevent.c | 15 ++---
gdk3/test/test-gdk-event.rb | 134 +++++++++++++++++++++++++++++++++++++-------
2 files changed, 121 insertions(+), 28 deletions(-)
diff --git a/gdk3/ext/gdk3/rbgdkevent.c b/gdk3/ext/gdk3/rbgdkevent.c
index c5e908e..46f33f5 100644
--- a/gdk3/ext/gdk3/rbgdkevent.c
+++ b/gdk3/ext/gdk3/rbgdkevent.c
@@ -1,6 +1,6 @@
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
/*
- * Copyright (C) 2002-2013 Ruby-GNOME2 Project Team
+ * Copyright (C) 2002-2014 Ruby-GNOME2 Project Team
* Copyright (C) 1998-2000 Yukihiro Matsumoto,
* Daisuke Kanda,
* Hiroshi Igarashi
@@ -721,8 +721,6 @@ gboolean gdk_event_get_state (GdkEvent *event,
ATTR_FLOAT(button, y_root);
/* GdkEventTouch */
-ATTR_GOBJ(touch, window);
-ATTR_BOOL(touch, send_event);
ATTR_UINT(touch, time);
ATTR_FLOAT(touch, x);
ATTR_FLOAT(touch, y);
@@ -902,6 +900,11 @@ gboolean gdk_event_get_state (GdkEvent *event,
rbg_define_method(rb_cGdkEvent, "screen", gdkevent_screen, 0);
rbg_define_method(rb_cGdkEvent, "set_screen", gdkevent_set_screen, 1);
+ /* GdkEventAny's fields */
+ DEFINE_ACCESSOR(rb_cGdkEvent, any, window);
+ rbg_define_method(rb_cGdkEvent, "send_event?", gdkeventany_send_event, 0);
+ rbg_define_method(rb_cGdkEvent, "set_send_event", gdkeventany_set_send_event, 1);
+
/*
* GdkEvent's Constants
*/
@@ -926,9 +929,6 @@ gboolean gdk_event_get_state (GdkEvent *event,
rb_cGdkEventAny =
G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_ANY, "EventAny",
mGdk, rb_cGdkEvent);
- DEFINE_ACCESSOR(rb_cGdkEventAny, any, window);
- rbg_define_method(rb_cGdkEventAny, "send_event?", gdkeventany_send_event, 0);
- rbg_define_method(rb_cGdkEventAny, "set_send_event", gdkeventany_set_send_event, 1);
/* GdkEventExpose */
rb_cGdkEventExpose =
@@ -988,9 +988,6 @@ gboolean gdk_event_get_state (GdkEvent *event,
rb_cGdkEventTouch =
G_DEF_CLASS_WITH_PARENT(GDK_TYPE_EVENT_TOUCH, "EventTouch",
mGdk, rb_cGdkEvent);
- DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, window);
- rbg_define_method(rb_cGdkEventTouch, "send_event?", gdkeventtouch_send_event, 0);
- rbg_define_method(rb_cGdkEventTouch, "set_send_event", gdkeventtouch_set_send_event, 1);
DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, time);
DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, x);
DEFINE_ACCESSOR(rb_cGdkEventTouch, touch, y);
diff --git a/gdk3/test/test-gdk-event.rb b/gdk3/test/test-gdk-event.rb
index 5117a53..a011f25 100644
--- a/gdk3/test/test-gdk-event.rb
+++ b/gdk3/test/test-gdk-event.rb
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
#
-# Copyright (C) 2013 Ruby-GNOME2 Project Team
+# Copyright (C) 2013-2014 Ruby-GNOME2 Project Team
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -17,11 +17,27 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
class TestGdkEvent < Test::Unit::TestCase
+ module TestAnyMethods
+ def test_window
+ assert_nil(event.window)
+ end
+
+ def test_send_event
+ assert_false(event.send_event?)
+ end
+ end
+
class TestAny < self
+ include TestAnyMethods
+
def setup
@event = Gdk::EventAny.new(:delete)
end
+ def event
+ @event
+ end
+
def test_delete
assert_equal("GDK_DELETE",
Gdk::EventAny.new(:delete).event_type.name)
@@ -31,23 +47,19 @@ def test_destroy
assert_equal("GDK_DESTROY",
Gdk::EventAny.new(:destroy).event_type.name)
end
-
- def test_window
- assert_nothing_raised do
- @event.window
- end
- end
-
- def test_send_event
- assert_false(@event.send_event?)
- end
end
class TestKey < self
+ include TestAnyMethods
+
def setup
@key = Gdk::EventKey.new(:key_press)
end
+ def event
+ @key
+ end
+
def test_key_press
assert_equal("GDK_KEY_PRESS",
Gdk::EventKey.new(:key_press).event_type.name)
@@ -72,10 +84,16 @@ def test_keyval
end
class TestButton < self
+ include TestAnyMethods
+
def setup
@button = Gdk::EventButton.new(:button_press)
end
+ def event
+ @button
+ end
+
def test_button_press
assert_equal("GDK_BUTTON_PRESS",
Gdk::EventButton.new(:button_press).event_type.name)
@@ -126,18 +144,14 @@ def test_y_root
end
class TestTouch < self
+ include TestAnyMethods
+
def setup
@touch = Gdk::EventTouch.new(:touch_begin)
end
- def test_window
- assert_nothing_raised do
- @touch.window
- end
- end
-
- def test_send_event
- assert_false(@touch.send_event?)
+ def event
+ @touch
end
def test_time
@@ -204,10 +218,16 @@ def test_y_root
end
class TestScroll < self
+ include TestAnyMethods
+
def setup
@scroll = Gdk::EventScroll.new
end
+ def event
+ @scroll
+ end
+
def test_time
assert_kind_of(Integer, @scroll.time)
end
@@ -238,10 +258,16 @@ def test_y_root
end
class TestMotion < self
+ include TestAnyMethods
+
def setup
@motion = Gdk::EventMotion.new
end
+ def event
+ @motion
+ end
+
def test_time
assert_kind_of(Integer, @motion.time)
end
@@ -274,20 +300,32 @@ def test_request
end
class TestVisibility < self
+ include TestAnyMethods
+
def setup
@visibility = Gdk::EventVisibility.new(:visibility_notify)
end
+ def event
+ @visibility
+ end
+
def test_state
assert_kind_of(Gdk::EventVisibility::State, @visibility.state)
end
end
class TestCrossing < self
+ include TestAnyMethods
+
def setup
@crossing = Gdk::EventCrossing.new(:enter_notify)
end
+ def event
+ @crossing
+ end
+
def test_enter_notify
assert_equal("GDK_ENTER_NOTIFY",
Gdk::EventCrossing.new(:enter_notify).event_type.name)
@@ -334,20 +372,32 @@ def test_state
end
class TestFocus < self
+ include TestAnyMethods
+
def setup
@focus = Gdk::EventFocus.new
end
+ def event
+ @focus
+ end
+
def test_in
assert_false(@focus.in?)
end
end
class TestConfigure < self
+ include TestAnyMethods
+
def setup
@configure = Gdk::EventConfigure.new
end
+ def event
+ @configure
+ end
+
def test_x
assert_kind_of(Integer, @configure.x)
end
@@ -366,10 +416,16 @@ def test_height
end
class TestProperty < self
+ include TestAnyMethods
+
def setup
@property = Gdk::EventProperty.new
end
+ def event
+ @property
+ end
+
def test_atom
assert_nothing_raised do
@property.atom
@@ -386,10 +442,16 @@ def test_state
end
class TestSelection < self
+ include TestAnyMethods
+
def setup
@selection = Gdk::EventSelection.new(:selection_clear)
end
+ def event
+ @selection
+ end
+
def test_selection_clear
assert_equal("GDK_SELECTION_CLEAR",
Gdk::EventSelection.new(:selection_clear).event_type.name)
@@ -429,10 +491,16 @@ def test_time
end
class TestDND < self
+ include TestAnyMethods
+
def setup
@dnd = Gdk::EventDND.new(:drag_enter)
end
+ def event
+ @dnd
+ end
+
def test_drag_enter
assert_equal("GDK_DRAG_ENTER",
Gdk::EventDND.new(:drag_enter).event_type.name)
@@ -483,10 +551,16 @@ def test_y_root
end
class TestProximity < self
+ include TestAnyMethods
+
def setup
@proximity = Gdk::EventProximity.new(:proximity_in)
end
+ def event
+ @proximity
+ end
+
def test_proximity_in
assert_equal("GDK_PROXIMITY_IN",
Gdk::EventProximity.new(:proximity_in).event_type.name)
@@ -509,10 +583,16 @@ def test_device
end
class TestWindowState < self
+ include TestAnyMethods
+
def setup
@window_state = Gdk::EventWindowState.new
end
+ def event
+ @window_state
+ end
+
def test_changed_mask
assert_nothing_raised do
@window_state.changed_mask
@@ -527,10 +607,16 @@ def test_new_window_state
end
class TestSetting < self
+ include TestAnyMethods
+
def setup
@setting = Gdk::EventSetting.new
end
+ def event
+ @setting
+ end
+
def test_action
assert_nothing_raised do
@setting.action
@@ -549,6 +635,10 @@ def setup
@owner_change = Gdk::EventOwnerChange.new
end
+ def event
+ @owner_change
+ end
+
def test_owner
assert_nothing_raised do
@owner_change.owner
@@ -577,10 +667,16 @@ def test_selection_time
end
class TestGrabBroken < self
+ include TestAnyMethods
+
def setup
@grab_broken = Gdk::EventGrabBroken.new
end
+ def event
+ @grab_broken
+ end
+
def test_keyboard
assert_boolean(@grab_broken.keyboard?)
end
--
1.8.5.1