return p;
}
+static void
+update_future_pointer_info (GdkBroadwayDisplay *broadway_display, BroadwayInputPointerMsg *data)
+{
+ broadway_display->future_root_x = data->root_x;
+ broadway_display->future_root_y = data->root_y;
+ broadway_display->future_mouse_in_toplevel = data->mouse_window_id;
+}
+
static void
parse_input_message (BroadwayInput *input, const char *message)
{
case 'e': /* Enter */
case 'l': /* Leave */
p = parse_pointer_data (p, &msg.pointer);
+ update_future_pointer_info (broadway_display, &msg.pointer);
p++; /* Skip , */
msg.crossing.mode = strtol(p, &p, 10);
break;
case 'm': /* Mouse move */
p = parse_pointer_data (p, &msg.pointer);
+ update_future_pointer_info (broadway_display, &msg.pointer);
break;
case 'b':
case 'B':
p = parse_pointer_data (p, &msg.pointer);
+ update_future_pointer_info (broadway_display, &msg.pointer);
p++; /* Skip , */
msg.button.button = strtol(p, &p, 10);
break;
case 's':
p = parse_pointer_data (p, &msg.pointer);
+ update_future_pointer_info (broadway_display, &msg.pointer);
p++; /* Skip , */
msg.scroll.dir = strtol(p, &p, 10);
break;
GdkWindow *pointer_grab_window;
guint32 pointer_grab_time;
gboolean pointer_grab_owner_events;
+
+ /* Future data, from the currently queued events */
+ int future_root_x;
+ int future_root_y;
+ int future_mouse_in_toplevel;
};
struct _GdkBroadwayDisplayClass