[rubygem-gdk3] Apply upstream patch to make GdkEventButton inherit GdkEventAny

Mamoru TASAKA mtasaka at fedoraproject.org
Wed Feb 12 04:11:34 UTC 2014


commit fe0097174f02c311bc3ee48899514fca9e36b19a
Author: Mamoru TASAKA <mtasaka at fedoraproject.org>
Date:   Wed Feb 12 13:12:05 2014 +0900

    Apply upstream patch to make GdkEventButton inherit GdkEventAny

 rubygem-gdk3-2.1.0-GdkEventAny-inheritance.patch |  410 ++++++++++++++++++++++
 rubygem-gdk3.spec                                |   10 +-
 2 files changed, 419 insertions(+), 1 deletions(-)
---
diff --git a/rubygem-gdk3-2.1.0-GdkEventAny-inheritance.patch b/rubygem-gdk3-2.1.0-GdkEventAny-inheritance.patch
new file mode 100644
index 0000000..72d77a4
--- /dev/null
+++ b/rubygem-gdk3-2.1.0-GdkEventAny-inheritance.patch
@@ -0,0 +1,410 @@
+From 0ed9577c7edc9b227d86d3110bb8294940507f19 Mon Sep 17 00:00:00 2001
+From: Kouhei Sutou <kou at 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
+
diff --git a/rubygem-gdk3.spec b/rubygem-gdk3.spec
index e82996a..ef18443 100644
--- a/rubygem-gdk3.spec
+++ b/rubygem-gdk3.spec
@@ -6,7 +6,7 @@
 Summary:	Ruby binding of GDK-3.x
 Name:		rubygem-%{gem_name}
 Version:	2.1.0
-Release:	1%{?dist}
+Release:	2%{?dist}
 
 Group:		Development/Languages
 # Various files in gem
@@ -16,6 +16,9 @@ Source0:	http://rubygems.org/gems/%{gem_name}-%{version}.gem
 # https://raw.github.com/ruby-gnome2/ruby-gnome2/master/gdk3/COPYING.LIB
 # Renamed to avoid overwrite on SOURCE dir
 Source1:	COPYING.LIB.gdk3
+# https://github.com/ruby-gnome2/ruby-gnome2/issues/222
+# https://github.com/ruby-gnome2/ruby-gnome2/commit/0ed9577c7edc9b227d86d3110bb8294940507f19.patch
+Patch0:	rubygem-gdk3-2.1.0-GdkEventAny-inheritance.patch
 
 # MRI only
 Requires:	ruby
@@ -70,6 +73,8 @@ pushd tmpunpackdir
 gem unpack %{SOURCE0}
 cd %{gem_name}-%{version}
 
+%patch0 -p2 -b .gdkevent_inherit
+
 # Permission
 find . -name \*.rb -print0 | xargs --null chmod 0644
 
@@ -164,6 +169,9 @@ popd
 %exclude	%{gem_instdir}/test/
 
 %changelog
+* Wed Feb 12 2014 Mamoru TASAKA <mtasaka at fedoraproject.org> - 2.1.0-2
+- Apply upstream patch to make GdkEventButton inherit GdkEventAny
+
 * Thu Jan 16 2014 Mamoru TASAKA <mtasaka at fedoraproject.org> - 2.1.0-1
 - 2.1.0
 


More information about the scm-commits mailing list