[gtk+/wip/mir] Let GDK decide if it wants events, ignore the event mask
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/mir] Let GDK decide if it wants events, ignore the event mask
- Date: Tue, 27 May 2014 15:20:29 +0000 (UTC)
commit 24da6c725b8beb3bcfe96bc4b49a130cdb1c766a
Author: Robert Ancell <robert ancell canonical com>
Date: Tue May 27 17:20:13 2014 +0200
Let GDK decide if it wants events, ignore the event mask
gdk/mir/gdkmirdisplay.c | 2 +-
gdk/mir/gdkmirwindowimpl.c | 37 ++++++++++++++-----------------------
2 files changed, 15 insertions(+), 24 deletions(-)
---
diff --git a/gdk/mir/gdkmirdisplay.c b/gdk/mir/gdkmirdisplay.c
index e257cf2..dc6ed1f 100644
--- a/gdk/mir/gdkmirdisplay.c
+++ b/gdk/mir/gdkmirdisplay.c
@@ -394,7 +394,7 @@ gdk_mir_display_create_window_impl (GdkDisplay *display,
GdkWindowAttr *attributes,
gint attributes_mask)
{
- g_printerr ("gdk_mir_display_create_window_impl (%d, %d, %d, %d)\n", window->x, window->y, window->width,
window->height);
+ g_printerr ("gdk_mir_display_create_window_impl (%d, %d, %d, %d), events=0x%X\n", window->x, window->y,
window->width, window->height, event_mask);
window->impl = _gdk_mir_window_impl_new ();
}
diff --git a/gdk/mir/gdkmirwindowimpl.c b/gdk/mir/gdkmirwindowimpl.c
index 213b2e5..e1c5974 100644
--- a/gdk/mir/gdkmirwindowimpl.c
+++ b/gdk/mir/gdkmirwindowimpl.c
@@ -50,6 +50,8 @@ struct _GdkMirWindowImpl
cairo_pattern_t *background;
/* Current button state for checking which buttons are being pressed / released */
+ gdouble x;
+ gdouble y;
MirMotionButton button_state;
/* Surface being rendered to (only exists when window visible) */
@@ -527,50 +529,39 @@ static void
handle_motion_event (GdkWindow *window, MirMotionEvent *event)
{
GdkMirWindowImpl *impl = GDK_MIR_WINDOW_IMPL (window->impl);
- gdouble x, y;
guint modifier_state;
GdkEventType event_type;
MirMotionButton changed_button_state;
- if (event->pointer_count < 1)
- return;
-
- x = event->pointer_coordinates[0].x;
- y = event->pointer_coordinates[0].y;
+ if (event->pointer_count > 0)
+ {
+ impl->x = event->pointer_coordinates[0].x;
+ impl->y = event->pointer_coordinates[0].y;
+ }
modifier_state = get_modifier_state (event->modifiers, event->button_state);
/* Update which window has focus */
- _gdk_mir_pointer_set_location (get_pointer (window), x, y, window, modifier_state);
-
+ _gdk_mir_pointer_set_location (get_pointer (window), impl->x, impl->y, window, modifier_state);
switch (event->action)
{
case mir_motion_action_down:
case mir_motion_action_up:
event_type = event->action == mir_motion_action_down ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE;
changed_button_state = impl->button_state ^ event->button_state;
- if ((event_type == GDK_BUTTON_PRESS && (window->event_mask & GDK_BUTTON_PRESS_MASK) != 0) ||
- (event_type == GDK_BUTTON_RELEASE && (window->event_mask & GDK_BUTTON_RELEASE_MASK) != 0))
- {
if ((changed_button_state & mir_motion_button_primary) != 0)
- generate_button_event (window, event_type, x, y, GDK_BUTTON_PRIMARY, modifier_state);
+ generate_button_event (window, event_type, impl->x, impl->y, GDK_BUTTON_PRIMARY, modifier_state);
if ((changed_button_state & mir_motion_button_secondary) != 0)
- generate_button_event (window, event_type, x, y, GDK_BUTTON_SECONDARY, modifier_state);
+ generate_button_event (window, event_type, impl->x, impl->y, GDK_BUTTON_SECONDARY,
modifier_state);
if ((changed_button_state & mir_motion_button_tertiary) != 0)
- generate_button_event (window, event_type, x, y, GDK_BUTTON_MIDDLE, modifier_state);
- }
+ generate_button_event (window, event_type, impl->x, impl->y, GDK_BUTTON_MIDDLE, modifier_state);
impl->button_state = event->button_state;
break;
case mir_motion_action_scroll:
- if ((window->event_mask & GDK_SMOOTH_SCROLL_MASK) != 0)
- generate_scroll_event (window, x, y, event->pointer_coordinates[0].hscroll,
event->pointer_coordinates[0].vscroll, modifier_state);
+ generate_scroll_event (window, impl->x, impl->y, event->pointer_coordinates[0].hscroll,
event->pointer_coordinates[0].vscroll, modifier_state);
break;
case mir_motion_action_move: // move with button
case mir_motion_action_hover_move: // move without button
- if ((window->event_mask & GDK_POINTER_MOTION_MASK) != 0 ||
- ((window->event_mask & (GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK)) != 0 && (modifier_state
& GDK_BUTTON1_MASK)) != 0 ||
- ((window->event_mask & (GDK_BUTTON_MOTION_MASK | GDK_BUTTON2_MOTION_MASK)) != 0 && (modifier_state
& GDK_BUTTON2_MASK)) != 0 ||
- ((window->event_mask & (GDK_BUTTON_MOTION_MASK | GDK_BUTTON3_MOTION_MASK)) != 0 && (modifier_state
& GDK_BUTTON3_MASK)) != 0)
- generate_motion_event (window, x, y, modifier_state);
+ generate_motion_event (window, impl->x, impl->y, modifier_state);
break;
}
}
@@ -907,7 +898,7 @@ gdk_mir_window_impl_set_events (GdkWindow *window,
GdkEventMask event_mask)
{
//g_printerr ("gdk_mir_window_impl_set_events\n");
- /* We just use the event mask from the GdkWindow class */
+ /* We send all events and let GTK+ decide */
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]