mirror of
https://github.com/brl/mutter.git
synced 2025-06-14 01:09:30 +00:00
clutter: Move keyboard a11y from ClutterDeviceManager to ClutterSeat
A11y in general may be considered a per-seat feature. https://gitlab.gnome.org/GNOME/mutter/merge_requests/852
This commit is contained in:
@ -31,7 +31,6 @@
|
||||
#include "backends/x11/meta-seat-x11.h"
|
||||
#include "backends/x11/meta-stage-x11.h"
|
||||
#include "backends/x11/meta-virtual-input-device-x11.h"
|
||||
#include "backends/x11/meta-xkb-a11y-x11.h"
|
||||
#include "clutter/clutter-mutter.h"
|
||||
#include "clutter/x11/clutter-x11.h"
|
||||
#include "core/display-private.h"
|
||||
@ -196,7 +195,6 @@ on_tool_changed (ClutterSeat *seat,
|
||||
static void
|
||||
meta_device_manager_x11_constructed (GObject *object)
|
||||
{
|
||||
ClutterDeviceManager *manager = CLUTTER_DEVICE_MANAGER (object);
|
||||
MetaDeviceManagerX11 *manager_xi2 = META_DEVICE_MANAGER_X11 (object);
|
||||
|
||||
g_signal_connect (manager_xi2->seat, "device-added",
|
||||
@ -206,8 +204,6 @@ meta_device_manager_x11_constructed (GObject *object)
|
||||
g_signal_connect (manager_xi2->seat, "tool-changed",
|
||||
G_CALLBACK (on_tool_changed), manager_xi2);
|
||||
|
||||
meta_device_manager_x11_a11y_init (manager);
|
||||
|
||||
if (G_OBJECT_CLASS (meta_device_manager_x11_parent_class)->constructed)
|
||||
G_OBJECT_CLASS (meta_device_manager_x11_parent_class)->constructed (object);
|
||||
}
|
||||
@ -277,7 +273,6 @@ meta_device_manager_x11_class_init (MetaDeviceManagerX11Class *klass)
|
||||
manager_class->select_stage_events = meta_device_manager_x11_select_stage_events;
|
||||
manager_class->create_virtual_device = meta_device_manager_x11_create_virtual_device;
|
||||
manager_class->get_supported_virtual_device_types = meta_device_manager_x11_get_supported_virtual_device_types;
|
||||
manager_class->apply_kbd_a11y_settings = meta_device_manager_x11_apply_kbd_a11y_settings;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "backends/x11/meta-input-device-x11.h"
|
||||
#include "backends/x11/meta-keymap-x11.h"
|
||||
#include "backends/x11/meta-stage-x11.h"
|
||||
#include "backends/x11/meta-xkb-a11y-x11.h"
|
||||
#include "clutter/clutter-mutter.h"
|
||||
#include "clutter/x11/clutter-x11.h"
|
||||
#include "core/bell.h"
|
||||
@ -1394,6 +1395,8 @@ meta_seat_x11_constructed (GObject *object)
|
||||
G_CALLBACK (on_keymap_state_change),
|
||||
seat_x11);
|
||||
|
||||
meta_seat_x11_a11y_init (CLUTTER_SEAT (seat_x11));
|
||||
|
||||
if (G_OBJECT_CLASS (meta_seat_x11_parent_class)->constructed)
|
||||
G_OBJECT_CLASS (meta_seat_x11_parent_class)->constructed (object);
|
||||
}
|
||||
@ -1497,6 +1500,7 @@ meta_seat_x11_class_init (MetaSeatX11Class *klass)
|
||||
seat_class->get_keymap = meta_seat_x11_get_keymap;
|
||||
seat_class->copy_event_data = meta_seat_x11_copy_event_data;
|
||||
seat_class->free_event_data = meta_seat_x11_free_event_data;
|
||||
seat_class->apply_kbd_a11y_settings = meta_seat_x11_apply_kbd_a11y_settings;
|
||||
|
||||
props[PROP_OPCODE] =
|
||||
g_param_spec_int ("opcode",
|
||||
|
@ -75,7 +75,7 @@ set_xkb_desc_rec (Display *xdisplay,
|
||||
}
|
||||
|
||||
static void
|
||||
check_settings_changed (ClutterDeviceManager *device_manager)
|
||||
check_settings_changed (ClutterSeat *seat)
|
||||
{
|
||||
Display *xdisplay = clutter_x11_get_default_display ();
|
||||
ClutterKbdA11ySettings kbd_a11y_settings;
|
||||
@ -86,7 +86,7 @@ check_settings_changed (ClutterDeviceManager *device_manager)
|
||||
if (!desc)
|
||||
return;
|
||||
|
||||
clutter_device_manager_get_kbd_a11y_settings (device_manager, &kbd_a11y_settings);
|
||||
clutter_seat_get_kbd_a11y_settings (seat, &kbd_a11y_settings);
|
||||
|
||||
if (desc->ctrls->enabled_ctrls & XkbSlowKeysMask &&
|
||||
!(kbd_a11y_settings.controls & CLUTTER_A11Y_SLOW_KEYS_ENABLED))
|
||||
@ -115,7 +115,7 @@ check_settings_changed (ClutterDeviceManager *device_manager)
|
||||
}
|
||||
|
||||
if (what_changed)
|
||||
g_signal_emit_by_name (device_manager,
|
||||
g_signal_emit_by_name (seat,
|
||||
"kbd-a11y-flags-changed",
|
||||
kbd_a11y_settings.controls,
|
||||
what_changed);
|
||||
@ -128,7 +128,7 @@ xkb_a11y_event_filter (XEvent *xevent,
|
||||
ClutterEvent *clutter_event,
|
||||
gpointer data)
|
||||
{
|
||||
ClutterDeviceManager *device_manager = CLUTTER_DEVICE_MANAGER (data);
|
||||
ClutterSeat *seat = CLUTTER_SEAT (data);
|
||||
XkbEvent *xkbev = (XkbEvent *) xevent;
|
||||
|
||||
/* 'event_type' is set to zero on notifying us of updates in
|
||||
@ -141,9 +141,9 @@ xkb_a11y_event_filter (XEvent *xevent,
|
||||
*/
|
||||
if (xevent->xany.type == (_xkb_event_base + XkbEventCode) &&
|
||||
xkbev->any.xkb_type == XkbControlsNotify && xkbev->ctrls.event_type != 0)
|
||||
check_settings_changed (device_manager);
|
||||
check_settings_changed (seat);
|
||||
|
||||
return CLUTTER_X11_FILTER_CONTINUE;
|
||||
return CLUTTER_X11_FILTER_CONTINUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -194,11 +194,9 @@ set_xkb_ctrl (XkbDescRec *desc,
|
||||
}
|
||||
|
||||
void
|
||||
meta_device_manager_x11_apply_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *kbd_a11y_settings)
|
||||
meta_seat_x11_apply_kbd_a11y_settings (ClutterSeat *seat,
|
||||
ClutterKbdA11ySettings *kbd_a11y_settings)
|
||||
{
|
||||
ClutterBackend *backend;
|
||||
ClutterSeat *seat;
|
||||
Display *xdisplay = clutter_x11_get_default_display ();
|
||||
XkbDescRec *desc;
|
||||
gboolean enable_accessX;
|
||||
@ -207,9 +205,6 @@ meta_device_manager_x11_apply_kbd_a11y_settings (ClutterDeviceManager *device_
|
||||
if (!desc)
|
||||
return;
|
||||
|
||||
backend = clutter_get_default_backend ();
|
||||
seat = clutter_backend_get_default_seat (backend);
|
||||
|
||||
/* general */
|
||||
enable_accessX = kbd_a11y_settings->controls & CLUTTER_A11Y_KEYBOARD_ENABLED;
|
||||
|
||||
@ -318,7 +313,7 @@ meta_device_manager_x11_apply_kbd_a11y_settings (ClutterDeviceManager *device_
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_device_manager_x11_a11y_init (ClutterDeviceManager *device_manager)
|
||||
meta_seat_x11_a11y_init (ClutterSeat *seat)
|
||||
{
|
||||
Display *xdisplay = clutter_x11_get_default_display ();
|
||||
guint event_mask;
|
||||
@ -330,7 +325,7 @@ meta_device_manager_x11_a11y_init (ClutterDeviceManager *device_manager)
|
||||
|
||||
XkbSelectEvents (xdisplay, XkbUseCoreKbd, event_mask, event_mask);
|
||||
|
||||
clutter_x11_add_filter (xkb_a11y_event_filter, device_manager);
|
||||
clutter_x11_add_filter (xkb_a11y_event_filter, seat);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -29,10 +29,10 @@
|
||||
#include "clutter/clutter.h"
|
||||
|
||||
void
|
||||
meta_device_manager_x11_apply_kbd_a11y_settings (ClutterDeviceManager *device_manager,
|
||||
ClutterKbdA11ySettings *kbd_a11y_settings);
|
||||
meta_seat_x11_apply_kbd_a11y_settings (ClutterSeat *seat,
|
||||
ClutterKbdA11ySettings *kbd_a11y_settings);
|
||||
|
||||
gboolean
|
||||
meta_device_manager_x11_a11y_init (ClutterDeviceManager *device_manager);
|
||||
meta_seat_x11_a11y_init (ClutterSeat *seat);
|
||||
|
||||
#endif /* META_XKB_A11Y_X11_H */
|
||||
|
Reference in New Issue
Block a user