}}
static GdkDevice *
-create_core_pointer (GdkDisplay *display)
+create_core_pointer (GdkDisplay *display)
{
return g_object_new (GDK_TYPE_BROADWAY_DEVICE,
"name", "Core Pointer",
}
static GdkDevice *
-create_core_keyboard (GdkDisplay *display)
+create_core_keyboard (GdkDisplay *display)
{
return g_object_new (GDK_TYPE_BROADWAY_DEVICE,
"name", "Core Keyboard",
}
static GdkDevice *
-create_touchscreen (GdkDisplay *display)
+create_pointer (GdkDisplay *display)
+{
+ return g_object_new (GDK_TYPE_BROADWAY_DEVICE,
+ "name", "Pointer",
+ "type", GDK_DEVICE_TYPE_SLAVE,
+ "source", GDK_SOURCE_MOUSE,
+ "has-cursor", TRUE,
+ "display", display,
+ NULL);
+}
+
+static GdkDevice *
+create_keyboard (GdkDisplay *display)
+{
+ return g_object_new (GDK_TYPE_BROADWAY_DEVICE,
+ "name", "Keyboard",
+ "type", GDK_DEVICE_TYPE_SLAVE,
+ "source", GDK_SOURCE_KEYBOARD,
+ "has-cursor", FALSE,
+ "display", display,
+ NULL);
+}
+
+static GdkDevice *
+create_touchscreen (GdkDisplay *display)
{
return g_object_new (GDK_TYPE_BROADWAY_DEVICE,
"name", "Touchscreen",
broadway_display->core_pointer = create_core_pointer (display);
broadway_display->core_keyboard = create_core_keyboard (display);
+ broadway_display->pointer = create_pointer (display);
+ broadway_display->keyboard = create_keyboard (display);
broadway_display->touchscreen = create_touchscreen (display);
_gdk_device_set_associated_device (broadway_display->core_pointer, broadway_display->core_keyboard);
_gdk_device_set_associated_device (broadway_display->core_keyboard, broadway_display->core_pointer);
+ _gdk_device_set_associated_device (broadway_display->pointer, broadway_display->core_pointer);
+ _gdk_device_set_associated_device (broadway_display->keyboard, broadway_display->core_keyboard);
_gdk_device_set_associated_device (broadway_display->touchscreen, broadway_display->core_pointer);
_gdk_device_add_slave (broadway_display->core_pointer, broadway_display->touchscreen);
seat = gdk_seat_default_new_for_master_pair (broadway_display->core_pointer,
broadway_display->core_keyboard);
+
gdk_display_add_seat (display, seat);
+ gdk_seat_default_add_slave (GDK_SEAT_DEFAULT (seat), broadway_display->pointer);
+ gdk_seat_default_add_slave (GDK_SEAT_DEFAULT (seat), broadway_display->keyboard);
gdk_seat_default_add_slave (GDK_SEAT_DEFAULT (seat), broadway_display->touchscreen);
g_object_unref (seat);
#include "config.h"
#include "gdkeventsource.h"
-#include "gdkseat.h"
#include "gdksurfaceprivate.h"
#include "gdkframeclockprivate.h"
BroadwayInputMsg *message)
{
GdkBroadwayDisplay *display_broadway;
- GdkSeat *seat;
GdkSurface *surface;
GdkEvent *event = NULL;
GList *node;
display_broadway = GDK_BROADWAY_DISPLAY (display);
- seat = gdk_display_get_default_seat (display);
switch (message->base.type) {
case BROADWAY_EVENT_ENTER:
{
event = gdk_crossing_event_new (GDK_ENTER_NOTIFY,
surface,
- gdk_seat_get_pointer (seat),
- gdk_seat_get_pointer (seat),
+ display_broadway->core_pointer,
+ display_broadway->pointer,
message->base.time,
message->pointer.state,
message->pointer.win_x,
{
event = gdk_crossing_event_new (GDK_LEAVE_NOTIFY,
surface,
- gdk_seat_get_pointer (seat),
- gdk_seat_get_pointer (seat),
+ display_broadway->core_pointer,
+ display_broadway->pointer,
message->base.time,
message->pointer.state,
message->pointer.win_x,
if (surface)
{
event = gdk_motion_event_new (surface,
- gdk_seat_get_pointer (seat),
- gdk_seat_get_pointer (seat),
+ display_broadway->core_pointer,
+ display_broadway->pointer,
NULL,
message->base.time,
message->pointer.state,
? GDK_BUTTON_PRESS
: GDK_BUTTON_RELEASE,
surface,
- gdk_seat_get_pointer (seat),
- gdk_seat_get_pointer (seat),
+ display_broadway->core_pointer,
+ display_broadway->pointer,
NULL,
message->base.time,
message->pointer.state,
if (surface)
{
event = gdk_scroll_event_new_discrete (surface,
- gdk_seat_get_pointer (seat),
- gdk_seat_get_pointer (seat),
+ display_broadway->core_pointer,
+ display_broadway->pointer,
NULL,
message->base.time,
0,
? GDK_SCROLL_UP
: GDK_SCROLL_DOWN,
FALSE);
-
+
node = _gdk_event_queue_append (display, event);
_gdk_windowing_got_event (display, node, event, message->base.serial);
}
{
GdkEventType event_type = 0;
GdkModifierType state;
- GdkDevice *source_device;
switch (message->touch.touch_type) {
case 0:
message->touch.is_emulated && _gdk_broadway_moveresize_handle_event (display, message))
break;
- source_device = gdk_seat_get_pointer (seat);
- {
- GList *devices;
- devices = gdk_seat_get_slaves (seat, GDK_SEAT_CAPABILITY_TOUCH);
- if (devices)
- source_device = GDK_DEVICE (devices->data);
- g_list_free (devices);
- }
-
state = message->touch.state;
if (event_type == GDK_TOUCH_BEGIN || event_type == GDK_TOUCH_UPDATE)
state |= GDK_BUTTON1_MASK;
event = gdk_touch_event_new (event_type,
GUINT_TO_POINTER (message->touch.sequence_id),
surface,
- gdk_seat_get_pointer (seat),
- source_device,
+ display_broadway->core_pointer,
+ display_broadway->touchscreen,
message->base.time,
state,
message->touch.win_x,
? GDK_KEY_PRESS
: GDK_KEY_RELEASE,
surface,
- gdk_seat_get_keyboard (seat),
- gdk_seat_get_keyboard (seat),
+ display_broadway->core_keyboard,
+ display_broadway->keyboard,
message->base.time,
message->key.key,
message->key.state,
break;
case BROADWAY_EVENT_GRAB_NOTIFY:
case BROADWAY_EVENT_UNGRAB_NOTIFY:
- _gdk_display_device_grab_update (display, gdk_seat_get_pointer (seat), gdk_seat_get_pointer (seat), message->base.serial);
+ _gdk_display_device_grab_update (display,
+ display_broadway->core_pointer,
+ display_broadway->pointer,
+ message->base.serial);
break;
case BROADWAY_EVENT_CONFIGURE_NOTIFY:
if (surface)
{
event = gdk_focus_event_new (surface,
- gdk_seat_get_keyboard (seat),
- gdk_seat_get_keyboard (seat),
+ display_broadway->core_keyboard,
+ display_broadway->keyboard,
FALSE);
node = _gdk_event_queue_append (display, event);
if (surface)
{
event = gdk_focus_event_new (surface,
- gdk_seat_get_keyboard (seat),
- gdk_seat_get_keyboard (seat),
+ display_broadway->core_keyboard,
+ display_broadway->keyboard,
TRUE);
node = _gdk_event_queue_append (display, event);