+2008-02-12 Tomas Frydrych <tf@openedhand.com>
+
+ * clutter/x11/clutter-event-x11.c (event_translate):
+ Ignore events directed at the stage window once they have been
+ passed to the filter functions.
+
2008-02-11 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-actor.c:
Minor documentation tweak to class description.
* clutter/clutter-behaviour-scale.c:
- 'Force' start + end vals of scale behaviour
+ 'Force' start + end vals of scale behaviour
(#779, Havoc Pennington)
2008-02-11 Emmanuele Bassi <ebassi@openedhand.com>
Window window,
long message,
long detail,
- long data1,
+ long data1,
long data2)
{
XEvent ev;
GSource *source;
ClutterEventSource *event_source;
int connection_number;
-
+
connection_number = ConnectionNumber (backend_x11->xdpy);
CLUTTER_NOTE (EVENT, "Connection number: %d", connection_number);
g_source_attach (source, NULL);
xembed_set_info (backend_x11,
- clutter_x11_get_stage_window (stage),
+ clutter_x11_get_stage_window (stage),
0);
}
event->key.hardware_keycode = xevent->xkey.keycode;
/* FIXME: We need to handle other modifiers rather than just shift */
- event->key.keyval =
- XKeycodeToKeysym (xevent->xkey.display,
+ event->key.keyval =
+ XKeycodeToKeysym (xevent->xkey.display,
xevent->xkey.keycode,
(event->key.modifier_state & CLUTTER_SHIFT_MASK) ? 1
: 0);
stage_xwindow = clutter_x11_get_stage_window (stage);
xwindow = xevent->xany.window;
- if (xwindow == None)
- xwindow = stage_xwindow;
if (backend_x11->event_filters)
{
node = node->next;
}
}
-
+
+ /*
+ * Do further processing only on events for the stage window
+ * (the x11 filters might be getting events for other windows, so do not
+ * mess them about.
+ */
+ if (xwindow != stage_xwindow)
+ return FALSE;
+
res = TRUE;
switch (xevent->type)
clutter_x11_trap_x_errors ();
XGetWindowProperty (backend_x11->xdpy, stage_xwindow,
backend_x11->atom_NET_WM_STATE,
- 0, G_MAXLONG,
+ 0, G_MAXLONG,
False, XA_ATOM,
&type, &format, &n_items,
&bytes_after, &data);
}
else
res = FALSE;
-
+
XFree (data);
}
else
XEvent foo_xev;
/* Cheap compress */
- while (XCheckTypedWindowEvent (backend_x11->xdpy,
+ while (XCheckTypedWindowEvent (backend_x11->xdpy,
xevent->xexpose.window,
- Expose,
+ Expose,
&foo_xev));
/* FIXME: need to make stage an 'actor' so can que
event->scroll.direction = CLUTTER_SCROLL_LEFT;
else
event->scroll.direction = CLUTTER_SCROLL_RIGHT;
-
+
event->scroll.time = xevent->xbutton.time;
event->scroll.x = xevent->xbutton.x;
event->scroll.y = xevent->xbutton.y;
case ClientMessage:
CLUTTER_NOTE (EVENT, "client message");
-
+
event->type = event->any.type = CLUTTER_CLIENT_MESSAGE;
-
+
if (xevent->xclient.message_type == backend_x11->atom_XEMBED)
res = handle_xembed_event (backend_x11, xevent);
else if (xevent->xclient.message_type == backend_x11->atom_WM_PROTOCOLS)
clutter_threads_enter ();
- /* Grab the event(s), translate and figure out double click.
+ /* Grab the event(s), translate and figure out double click.
* The push onto queue (stack) if valid.
*/
events_queue (backend);