mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-09-20 05:50:11 +00:00
[broadway] Track future pointer events locations during parsing
We want this info so that we can avoid roundtrips and still get a somewhat better querying for pointer locations.
This commit is contained in:
parent
1fa952fb04
commit
fdc2059edb
@ -185,6 +185,14 @@ parse_pointer_data (char *p, BroadwayInputPointerMsg *data)
|
||||
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)
|
||||
{
|
||||
@ -205,23 +213,27 @@ 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;
|
||||
|
@ -155,6 +155,11 @@ struct _GdkBroadwayDisplay
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user