mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-26 13:41:07 +00:00
gdk: Add GdkSeat::tool-added/removed signals
And a helper function to lookup a tool from the seat. Those are tracker per-seat, and may be shared across devices.
This commit is contained in:
parent
d5f141a9b7
commit
6824dd7b8a
@ -46,6 +46,8 @@ struct _GdkSeatPrivate
|
|||||||
enum {
|
enum {
|
||||||
DEVICE_ADDED,
|
DEVICE_ADDED,
|
||||||
DEVICE_REMOVED,
|
DEVICE_REMOVED,
|
||||||
|
TOOL_ADDED,
|
||||||
|
TOOL_REMOVED,
|
||||||
N_SIGNALS
|
N_SIGNALS
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -146,6 +148,48 @@ gdk_seat_class_init (GdkSeatClass *klass)
|
|||||||
G_TYPE_NONE, 1,
|
G_TYPE_NONE, 1,
|
||||||
GDK_TYPE_DEVICE);
|
GDK_TYPE_DEVICE);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GdkSeat::tool-added:
|
||||||
|
* @seat: the object on which the signal is emitted
|
||||||
|
* @tool: the new #GdkDeviceTool known to the seat
|
||||||
|
*
|
||||||
|
* The ::tool-added signal is emitted whenever a new tool
|
||||||
|
* is made known to the seat. The tool may later be assigned
|
||||||
|
* to a device (i.e. on proximity with a tablet). The device
|
||||||
|
* will emit the #GdkDevice::tool-changed signal accordingly.
|
||||||
|
*
|
||||||
|
* A same tool may be used by several devices.
|
||||||
|
*
|
||||||
|
* Since: 3.22
|
||||||
|
*/
|
||||||
|
signals [TOOL_ADDED] =
|
||||||
|
g_signal_new (g_intern_static_string ("tool-added"),
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0, NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__BOXED,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
GDK_TYPE_DEVICE_TOOL);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GdkSeat::tool-removed:
|
||||||
|
* @seat: the object on which the signal is emitted
|
||||||
|
* @tool: the just removed #GdkDeviceTool
|
||||||
|
*
|
||||||
|
* This signal is emitted whenever a tool is no longer known
|
||||||
|
* to this @seat.
|
||||||
|
*
|
||||||
|
* Since: 3.22
|
||||||
|
*/
|
||||||
|
signals [TOOL_REMOVED] =
|
||||||
|
g_signal_new (g_intern_static_string ("tool-removed"),
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0, NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__BOXED,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
GDK_TYPE_DEVICE_TOOL);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GdkSeat:display:
|
* GdkSeat:display:
|
||||||
*
|
*
|
||||||
@ -388,3 +432,29 @@ gdk_seat_get_display (GdkSeat *seat)
|
|||||||
|
|
||||||
return priv->display;
|
return priv->display;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gdk_seat_tool_added (GdkSeat *seat,
|
||||||
|
GdkDeviceTool *tool)
|
||||||
|
{
|
||||||
|
g_signal_emit (seat, signals[TOOL_ADDED], 0, tool);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gdk_seat_tool_removed (GdkSeat *seat,
|
||||||
|
GdkDeviceTool *tool)
|
||||||
|
{
|
||||||
|
g_signal_emit (seat, signals[TOOL_REMOVED], 0, tool);
|
||||||
|
}
|
||||||
|
|
||||||
|
GdkDeviceTool *
|
||||||
|
gdk_seat_get_tool (GdkSeat *seat,
|
||||||
|
guint64 serial)
|
||||||
|
{
|
||||||
|
GdkSeatClass *seat_class;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GDK_IS_SEAT (seat), NULL);
|
||||||
|
|
||||||
|
seat_class = GDK_SEAT_GET_CLASS (seat);
|
||||||
|
return seat_class->get_tool (seat, serial);
|
||||||
|
}
|
||||||
|
@ -55,6 +55,9 @@ struct _GdkSeatClass
|
|||||||
GdkSeatCapabilities capability);
|
GdkSeatCapabilities capability);
|
||||||
GList * (* get_slaves) (GdkSeat *seat,
|
GList * (* get_slaves) (GdkSeat *seat,
|
||||||
GdkSeatCapabilities capabilities);
|
GdkSeatCapabilities capabilities);
|
||||||
|
|
||||||
|
GdkDeviceTool * (* get_tool) (GdkSeat *seat,
|
||||||
|
guint64 serial);
|
||||||
};
|
};
|
||||||
|
|
||||||
void gdk_seat_device_added (GdkSeat *seat,
|
void gdk_seat_device_added (GdkSeat *seat,
|
||||||
@ -62,4 +65,13 @@ void gdk_seat_device_added (GdkSeat *seat,
|
|||||||
void gdk_seat_device_removed (GdkSeat *seat,
|
void gdk_seat_device_removed (GdkSeat *seat,
|
||||||
GdkDevice *device);
|
GdkDevice *device);
|
||||||
|
|
||||||
|
void gdk_seat_tool_added (GdkSeat *seat,
|
||||||
|
GdkDeviceTool *tool);
|
||||||
|
void gdk_seat_tool_removed (GdkSeat *seat,
|
||||||
|
GdkDeviceTool *tool);
|
||||||
|
|
||||||
|
GdkDeviceTool *
|
||||||
|
gdk_seat_get_tool (GdkSeat *seat,
|
||||||
|
guint64 serial);
|
||||||
|
|
||||||
#endif /* __GDK_SEAT_PRIVATE_H__ */
|
#endif /* __GDK_SEAT_PRIVATE_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user