[mousetweaks/wayland] Misc atspi improvements
- From: Gerd Kohlberger <gerdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mousetweaks/wayland] Misc atspi improvements
- Date: Tue, 29 Oct 2013 20:41:40 +0000 (UTC)
commit dd57df064a36d500af2f93227e2fffea6030479d
Author: Gerd Kohlberger <gerdk src gnome org>
Date: Tue Oct 29 21:27:33 2013 +0100
Misc atspi improvements
- Check for atspi_init() errors
- Don't use GError, libatspi doesn't set them
- Remove atspi_generate_mouse_event check, it always returns TRUE
- Add double click support
- Don't use atspi namespace for our callbacks
- Only include atspi headers we need (-> less prototype warnings)
src/mt_hover_click.c | 3 +-
src/mt_listener.h | 1 +
src/mt_listener_atspi.c | 61 ++++++++++++++++++++++++-----------------------
3 files changed, 33 insertions(+), 32 deletions(-)
---
diff --git a/src/mt_hover_click.c b/src/mt_hover_click.c
index 3619328..9e17a46 100644
--- a/src/mt_hover_click.c
+++ b/src/mt_hover_click.c
@@ -86,8 +86,7 @@ mt_hover_click_timer_finished (MtClick *click,
break;
case MT_CLICK_TYPE_DOUBLE:
- mt_listener_send_event (listener, 1, MT_SEND_CLICK);
- mt_listener_send_event (listener, 1, MT_SEND_CLICK);
+ mt_listener_send_event (listener, 1, MT_SEND_DOUBLE_CLICK);
g_object_set (click, "click-type", MT_CLICK_TYPE_PRIMARY, NULL);
break;
diff --git a/src/mt_listener.h b/src/mt_listener.h
index 94e0fd8..48de56d 100644
--- a/src/mt_listener.h
+++ b/src/mt_listener.h
@@ -37,6 +37,7 @@ typedef GObject MtListener;
typedef enum
{
MT_SEND_CLICK,
+ MT_SEND_DOUBLE_CLICK,
MT_SEND_BUTTON_PRESS,
MT_SEND_BUTTON_RELEASE
} MtSendType;
diff --git a/src/mt_listener_atspi.c b/src/mt_listener_atspi.c
index c7a8526..0a6c868 100644
--- a/src/mt_listener_atspi.c
+++ b/src/mt_listener_atspi.c
@@ -18,7 +18,9 @@
*/
#include <string.h>
-#include <atspi/atspi.h>
+#include <atspi/atspi-event-listener.h>
+#include <atspi/atspi-registry.h>
+#include <atspi/atspi-misc.h>
#include "mt_listener_atspi.h"
@@ -39,8 +41,8 @@ struct _MtListenerAtspi
G_DEFINE_TYPE_WITH_PRIVATE (MtListenerAtspi, mt_listener_atspi, MT_TYPE_LISTENER)
static void
-atspi_motion_event (const AtspiEvent *event,
- MtListenerAtspi *listener)
+handle_motion_event (AtspiEvent *event,
+ MtListenerAtspi *listener)
{
listener->priv->x = event->detail1;
listener->priv->y = event->detail2;
@@ -51,8 +53,8 @@ atspi_motion_event (const AtspiEvent *event,
}
static void
-atspi_button_event (const AtspiEvent *event,
- MtListenerAtspi *listener)
+handle_button_event (AtspiEvent *event,
+ MtListenerAtspi *listener)
{
if (strlen (event->type) != 15)
return;
@@ -71,30 +73,32 @@ atspi_button_event (const AtspiEvent *event,
static void
mt_listener_atspi_init (MtListenerAtspi *listener)
{
- GError *error = NULL;
-
listener->priv = mt_listener_atspi_get_instance_private (listener);
- atspi_init ();
+ if (atspi_init () != 0)
+ {
+ g_warning ("Failed to initialize AT-SPI2.");
+ return;
+ }
listener->priv->motion = atspi_event_listener_new
- ((AtspiEventListenerCB) atspi_motion_event, listener, NULL);
+ ((AtspiEventListenerCB) handle_motion_event, listener, NULL);
- atspi_event_listener_register (listener->priv->motion, "mouse:abs", &error);
- if (error)
+ if (!atspi_event_listener_register (listener->priv->motion,
+ "mouse:abs", NULL))
{
- g_warning ("%s", error->message);
- g_clear_error (&error);
+ g_warning ("Failed to register mouse:abs events.");
+ return;
}
listener->priv->button = atspi_event_listener_new
- ((AtspiEventListenerCB) atspi_button_event, listener, NULL);
+ ((AtspiEventListenerCB) handle_button_event, listener, NULL);
- atspi_event_listener_register (listener->priv->button, "mouse:button", &error);
- if (error)
+ if (!atspi_event_listener_register (listener->priv->button,
+ "mouse:button", NULL))
{
- g_warning ("%s", error->message);
- g_error_free (error);
+ g_warning ("Failed to register mouse:button events.");
+ return;
}
}
@@ -149,16 +153,22 @@ mt_listener_atspi_send_event (MtListener *listener,
MtSendType type)
{
MtListenerAtspiPrivate *priv = MT_LISTENER_ATSPI (listener)->priv;
- GError *error = NULL;
- gchar name[4] = { 'b', '1', 'c', '\0' };
+ gchar name[4];
g_return_if_fail (button >= 1 && button <= 3);
+ name[0] = 'b';
+ name[1] = (gchar) button + 0x30;
+ name[3] = '\0';
+
switch (type)
{
case MT_SEND_CLICK:
name[2] = 'c';
break;
+ case MT_SEND_DOUBLE_CLICK:
+ name[2] = 'd';
+ break;
case MT_SEND_BUTTON_PRESS:
name[2] = 'p';
break;
@@ -169,16 +179,7 @@ mt_listener_atspi_send_event (MtListener *listener,
g_warning ("Unknown SendType.");
return;
}
-
- name[1] = (gchar) button + 0x30;
-
- atspi_generate_mouse_event (priv->x, priv->y, name, &error);
-
- if (error)
- {
- g_warning ("%s", error->message);
- g_error_free (error);
- }
+ atspi_generate_mouse_event (priv->x, priv->y, name, NULL);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]