summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clutter/clutter/clutter-input-pointer-a11y-private.h3
-rw-r--r--clutter/clutter/clutter-input-pointer-a11y.c38
-rw-r--r--clutter/clutter/clutter-main.c29
3 files changed, 42 insertions, 28 deletions
diff --git a/clutter/clutter/clutter-input-pointer-a11y-private.h b/clutter/clutter/clutter-input-pointer-a11y-private.h
index fbbe04101..a66ddeac9 100644
--- a/clutter/clutter/clutter-input-pointer-a11y-private.h
+++ b/clutter/clutter/clutter-input-pointer-a11y-private.h
@@ -42,6 +42,9 @@ void _clutter_input_pointer_a11y_on_button_event (ClutterInputDevice *device,
CLUTTER_EXPORT
gboolean _clutter_is_input_pointer_a11y_enabled (ClutterInputDevice *device);
+CLUTTER_EXPORT
+void _clutter_input_pointer_a11y_maybe_handle_event (ClutterEvent *event);
+
G_END_DECLS
#endif /* __CLUTTER_INPUT_POINTER_A11Y_H__ */
diff --git a/clutter/clutter/clutter-input-pointer-a11y.c b/clutter/clutter/clutter-input-pointer-a11y.c
index 365b85fd6..cfee58e55 100644
--- a/clutter/clutter/clutter-input-pointer-a11y.c
+++ b/clutter/clutter/clutter-input-pointer-a11y.c
@@ -25,11 +25,13 @@
#include "clutter-build-config.h"
+#include "clutter-backend-private.h"
#include "clutter-enum-types.h"
#include "clutter-input-device.h"
#include "clutter-input-device-private.h"
#include "clutter-input-pointer-a11y-private.h"
#include "clutter-main.h"
+#include "clutter-private.h"
#include "clutter-virtual-input-device.h"
static gboolean
@@ -726,3 +728,39 @@ _clutter_is_input_pointer_a11y_enabled (ClutterInputDevice *device)
return (is_secondary_click_enabled (device) || is_dwell_click_enabled (device));
}
+
+void
+_clutter_input_pointer_a11y_maybe_handle_event (ClutterEvent *event)
+{
+
+ ClutterInputDevice *device = clutter_event_get_device (event);
+ ClutterMainContext *clutter_context;
+ ClutterBackend *backend;
+
+ if (!_clutter_is_input_pointer_a11y_enabled (device))
+ return;
+
+ if ((event->any.flags & CLUTTER_EVENT_FLAG_SYNTHETIC) != 0)
+ return;
+
+ clutter_context = _clutter_context_get_default ();
+ backend = clutter_context->backend;
+
+ if (!clutter_backend_is_display_server (backend))
+ return;
+
+ if (event->type == CLUTTER_MOTION)
+ {
+ float x, y;
+
+ clutter_event_get_coords (event, &x, &y);
+ _clutter_input_pointer_a11y_on_motion_event (device, x, y);
+ }
+ else if (event->type == CLUTTER_BUTTON_PRESS ||
+ event->type == CLUTTER_BUTTON_RELEASE)
+ {
+ _clutter_input_pointer_a11y_on_button_event (device,
+ event->button.button,
+ event->type == CLUTTER_BUTTON_PRESS);
+ }
+}
diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c
index df872bd42..239d36838 100644
--- a/clutter/clutter/clutter-main.c
+++ b/clutter/clutter/clutter-main.c
@@ -778,6 +778,7 @@ clutter_do_event (ClutterEvent *event)
context->current_event = g_slist_prepend (context->current_event, event);
+ _clutter_input_pointer_a11y_maybe_handle_event (event);
if (_clutter_event_process_filters (event, event_actor))
{
context->current_event =
@@ -830,13 +831,8 @@ _clutter_process_event_details (ClutterActor *stage,
{
ClutterInputDevice *device = clutter_event_get_device (event);
ClutterEventSequence *sequence = clutter_event_get_event_sequence (event);
- ClutterMainContext *clutter_context;
- ClutterBackend *backend;
ClutterActor *target;
- clutter_context = _clutter_context_get_default ();
- backend = clutter_context->backend;
-
switch (event->type)
{
case CLUTTER_NOTHING:
@@ -878,31 +874,8 @@ _clutter_process_event_details (ClutterActor *stage,
break;
case CLUTTER_MOTION:
- if (clutter_backend_is_display_server (backend) &&
- !(event->any.flags & CLUTTER_EVENT_FLAG_SYNTHETIC))
- {
- if (_clutter_is_input_pointer_a11y_enabled (device))
- {
- gfloat x, y;
-
- clutter_event_get_coords (event, &x, &y);
- _clutter_input_pointer_a11y_on_motion_event (device, x, y);
- }
- }
- G_GNUC_FALLTHROUGH;
case CLUTTER_BUTTON_PRESS:
case CLUTTER_BUTTON_RELEASE:
- if (clutter_backend_is_display_server (backend))
- {
- if (_clutter_is_input_pointer_a11y_enabled (device) && (event->type != CLUTTER_MOTION))
- {
- _clutter_input_pointer_a11y_on_button_event (device,
- event->button.button,
- event->type == CLUTTER_BUTTON_PRESS);
- }
- }
-
- G_GNUC_FALLTHROUGH;
case CLUTTER_SCROLL:
case CLUTTER_TOUCHPAD_PINCH:
case CLUTTER_TOUCHPAD_SWIPE: