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