>From 672e14a932a337f33bd7e3e03ad95ac416315080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20Sch=C3=B6nfeld?= Date: Mon, 1 May 2017 15:11:37 +0200 Subject: [PATCH] Add overrides for Gtk3::Widget::add_events, set_events, get_events FIXME: Backwards compatibility for get_events. --- lib/Gtk3.pm | 28 ++++++++++++++++++++++++++++ t/overrides.t | 24 +++++++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/lib/Gtk3.pm b/lib/Gtk3.pm index 7471c05..fef0a0a 100644 --- a/lib/Gtk3.pm +++ b/lib/Gtk3.pm @@ -1892,6 +1892,34 @@ sub Gtk3::VBox::new { $_GTK_BASENAME, 'VBox', 'new', $class, $homogeneous, $spacing); } +sub Gtk3::Widget::add_events { + my ($widget, $events) = @_; + eval { + $events = Glib::Object::Introspection->convert_sv_to_flags ( + 'Gtk3::Gdk::EventMask', $events); + }; + return Glib::Object::Introspection->invoke ( + $_GTK_BASENAME, 'Widget', 'add_events', $widget, $events); +} + +sub Gtk3::Widget::set_events { + my ($widget, $events) = @_; + eval { + $events = Glib::Object::Introspection->convert_sv_to_flags ( + 'Gtk3::Gdk::EventMask', $events); + }; + return Glib::Object::Introspection->invoke ( + $_GTK_BASENAME, 'Widget', 'set_events', $widget, $events); +} + +sub Gtk3::Widget::get_events { + my ($widget) = @_; + my $events = Glib::Object::Introspection->invoke ( + $_GTK_BASENAME, 'Widget', 'get_events', $widget); + return Glib::Object::Introspection->convert_flags_to_sv ( + 'Gtk3::Gdk::EventMask', $events); +} + sub Gtk3::Widget::render_icon { my ($widget, $stock_id, $size, $detail) = @_; Glib::Object::Introspection->invoke ( diff --git a/t/overrides.t b/t/overrides.t index 0d136c2..7339d4c 100644 --- a/t/overrides.t +++ b/t/overrides.t @@ -7,7 +7,7 @@ use warnings; use utf8; use Encode; -plan tests => 224; +plan tests => 229; note('Gtk3::CHECK_VERSION and check_version'); { @@ -600,6 +600,28 @@ SKIP: { isa_ok (Gtk3::Label->find_style_property('interior-focus'), 'Glib::ParamSpec'); } +{ + my $widget = Gtk3::Label->new ("Test"); + + $widget->set_events ([qw/enter-notify-mask leave-notify-mask/]); + ok ($widget->get_events >= [qw/enter-notify-mask leave-notify-mask/], + '$widget->set_events|get_events'); + + $widget->add_events ([qw/button-press-mask/]); + ok ($widget->get_events >= [qw/button-press-mask enter-notify-mask leave-notify-mask/], + '$widget->add_events|get_events'); + + $widget->set_events (0); + ok ($widget->get_events == 0, '$widget->set_events|get_events with numeric 0'); + + $widget->add_events (24); + ok ($widget->get_events == 24, '$widget->add_events|get_events with numeric 24'); + ok ($widget->get_events == [qw/pointer-motion-hint-mask button-motion-mask/], + '$widget->add_events|get_events with numeric 24'); +} + +exit; + SKIP: { skip 'atom stuff; missing annotations', 2 unless Gtk3::CHECK_VERSION(3, 2, 0); -- 2.11.0