[mousetweaks/wayland] Misc atspi improvements



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]