From 0ed9577c7edc9b227d86d3110bb8294940507f19 Mon Sep 17 00:00:00 2001 From: Kouhei Sutou 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 c5e908ecc5..46f33f541c 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 @@ ATTR_FLOAT(button, x_root); 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 @@ Init_gdk_event(VALUE mGdk) 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 @@ Init_gdk_event(VALUE mGdk) 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 @@ Init_gdk_event(VALUE mGdk) 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 5117a53a25..a011f25af7 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