Skip to content

Commit

Permalink
Gdk::Event: GdkEvent and subclasses are opaque structs
Browse files Browse the repository at this point in the history
GdkEvent and subclasses are now opaque structs. They can only be accessed
via gdk_event_get_*() and gdk_event_set_*() functions. It means e.g. that
the _MEMBER_GET() macro can't be used in gdk/src/events.hg.
  • Loading branch information
kjellahl committed Oct 6, 2017
1 parent 05eda75 commit ea22549
Show file tree
Hide file tree
Showing 5 changed files with 843 additions and 484 deletions.
7 changes: 6 additions & 1 deletion demos/gtk-demo/example_drawingarea.cc
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,12 @@ bool Example_DrawingArea::on_drawingarea_scribble_button_press_event(Gdk::EventB
return false; // paranoia check, in case we haven't gotten a configure event

if(button_event.get_button() == 1)
scribble_draw_brush(int(button_event.get_x()), int(button_event.get_y()));
{
double x = 0.0;
double y = 0.0;
button_event.get_coords(x, y);
scribble_draw_brush(int(x), int(y));
}

// We've handled the event, stop processing.
return true;
Expand Down
5 changes: 0 additions & 5 deletions gdk/src/event.ccg
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,4 @@ Event::operator bool() const noexcept
return gobj() != nullptr;
}

bool Event::is_send_event() const
{
return gobj()->any.send_event;
}

} //namespace Gdk
42 changes: 21 additions & 21 deletions gdk/src/event.hg
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,7 @@ class Event
_IGNORE(gdk_event_new, gdk_event_copy, gdk_event_free)
public:

_WRAP_ENUM(Type, GdkEventType,
s#^DOUBLE_BUTTON_PRESS$##,
s#^2BUTTON_PRESS#DOUBLE_BUTTON_PRESS#,
s#^TRIPLE_BUTTON_PRESS$##,
s#^3BUTTON_PRESS#TRIPLE_BUTTON_PRESS#
)
_WRAP_ENUM(Type, GdkEventType)

/** Discover whether the event is valid.
* For instance,
Expand All @@ -70,20 +65,17 @@ public:

_WRAP_METHOD(Event::Type get_event_type() const, gdk_event_get_event_type)

/**
* Returns the window which received the event
*/
_MEMBER_GET_GOBJECT(window, any.window, Gdk::Window, GdkWindow*)
_IGNORE(gdk_event_get_window)
_WRAP_METHOD(Glib::RefPtr<Gdk::Window> get_window(), gdk_event_get_window, refreturn)
_WRAP_METHOD(Glib::RefPtr<const Gdk::Window> get_window() const, gdk_event_get_window, refreturn, constversion)

/**
* Returns @c true if the event was sent explicitly (e.g. using @c XSendEvent)
*/
bool is_send_event() const;
_WRAP_METHOD(bool is_sent() const, gdk_event_is_sent)

//_WRAP_METHOD(void gdk_event_handler_set(GdkEventFunc func, gpointer data, GDestroyNotify notify), gdk_event_handler_set)

_WRAP_METHOD(static void set_show_events(bool show_events), gdk_set_show_events)
_WRAP_METHOD(static void set_show_events(bool show_events = true), gdk_set_show_events)
_WRAP_METHOD(static bool get_show_events(), gdk_get_show_events)

_IGNORE(gdk_event_set_screen) //deprecated
Expand All @@ -95,20 +87,28 @@ public:

_WRAP_METHOD(static Event get(), gdk_event_get)
_WRAP_METHOD(static Event peek(), gdk_event_peek)
_WRAP_METHOD(void put(), gdk_event_put)
_WRAP_METHOD(void put() const, gdk_event_put)
_WRAP_METHOD(static bool events_pending(), gdk_events_pending)

//TODO: If GdkDeviceTool is wrapped in gtkmm, wrap gdk_event_get_device_tool().
_IGNORE(gdk_event_set_device_tool) // "Should be rarely used"
_IGNORE(gdk_event_set_device_tool) dnl// "Should be rarely used"

// Belong to subclasses:
_IGNORE(gdk_event_get_time, gdk_event_get_state, gdk_event_get_keyval,
gdk_event_get_keycode, gdk_event_get_scancode, gdk_event_get_coords,
gdk_event_get_root_coords, gdk_event_get_button, gdk_event_get_device,
gdk_event_get_click_count, gdk_event_get_scroll_deltas,
gdk_event_get_scroll_direction, gdk_event_get_event_sequence,
gdk_event_get_pointer_emulated, gdk_event_get_axis, gdk_event_triggers_context_menu,
gdk_event_is_scroll_stop_event, gdk_event_request_motions)
gdk_event_get_keycode, gdk_event_get_scancode, gdk_event_get_key_group,
gdk_event_get_key_is_modifier, gdk_event_get_string, gdk_event_get_button,
gdk_event_get_device, gdk_event_get_click_count, gdk_event_triggers_context_menu,
gdk_event_get_coords, gdk_event_get_root_coords, gdk_event_get_scroll_deltas,
gdk_event_get_scroll_direction, gdk_event_is_scroll_stop_event, gdk_event_get_axis,
gdk_event_get_event_sequence, gdk_event_get_touch_emulating_pointer,
gdk_event_get_pointer_emulated, gdk_event_get_crossing_mode,
gdk_event_get_crossing_detail, gdk_event_get_focus_in, gdk_event_get_property,
gdk_event_get_selection, gdk_event_get_selection_property,
gdk_event_get_drag_context, gdk_event_get_window_state, gdk_event_get_setting,
gdk_event_get_grab_window, gdk_event_get_touchpad_gesture_phase,
gdk_event_get_touchpad_gesture_n_fingers, gdk_event_get_touchpad_deltas,
gdk_event_get_touchpad_angle_delta, gdk_event_get_touchpad_scale,
gdk_event_get_pad_group_mode, gdk_event_get_pad_button, gdk_event_get_pad_axis_value)
};

} // namespace Gdk
Loading

0 comments on commit ea22549

Please sign in to comment.