More fixes, code cleaning
authorMateusz Żakowski <m.zakowski@samsung.com>
Fri, 24 Oct 2014 08:54:15 +0000 (10:54 +0200)
committerMateusz Żakowski <m.zakowski@samsung.com>
Fri, 24 Oct 2014 08:54:15 +0000 (10:54 +0200)
include/gesture_tracker.h
src/border.c
src/navigator.c
src/window_tracker.c

index d188c62..528f973 100644 (file)
@@ -27,12 +27,6 @@ typedef struct {
      int y_begin, y_end;     // (x,y) coordinates when gesture ends
 } Gesture_Info;
 
-typedef struct {
-     AtspiAccessible* scroll_target;
-     int x_begin, x_end;
-     int y_begin, y_end;
-} Prev_Scroll_Info;
-
 typedef void (*Gesture_Tracker_Cb) (void *data, Gesture_Info *g);
 void gesture_tracker_init(Eldbus_Connection *conn);
 void gesture_tracker_register(Gesture_Tracker_Cb cb, void *data);
index 943420f..933b89d 100644 (file)
@@ -1,4 +1,5 @@
 #include <string.h>
+#include <Ecore_X.h>
 #include "border.h"
 #include "logger.h"
 
@@ -17,6 +18,48 @@ static AtspiEventListener *listener2 = NULL;
 static char *registered_event = NULL;
 static Eina_Bool initialized = EINA_FALSE;
 
+Ecore_X_Window _get_win_below(int x, int y)
+{
+   int num;
+   Ecore_X_Window win = ecore_x_window_at_xy_get(x, y);
+   ecore_x_window_ignore_set(win, 1);
+   Ecore_X_Window *skip = ecore_x_window_ignore_list(&num);
+   //fprintf(stderr, "win_below:%d\n", ecore_x_window_at_xy_with_skip_get(x, y, skip, num));
+   //fprintf(stderr, "win_top:%d\n", win);
+   return ecore_x_window_at_xy_with_skip_get(x, y, skip, num);
+}
+
+Eina_Bool _mouse_up(void    *data,
+             int      type,
+             void    *event)
+{
+   Ecore_Event_Mouse_Button *ev = event;
+   ecore_x_mouse_up_send(_get_win_below(ev->x, ev->y), ev->x, ev->y, 1);
+   fprintf(stderr, "mouse_up\n");
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool _mouse_down(void    *data,
+             int      type,
+             void    *event)
+{
+   Ecore_Event_Mouse_Button *ev = event;
+   ecore_x_mouse_down_send(_get_win_below(ev->x, ev->y), ev->x, ev->y, 1);
+   fprintf(stderr, "mouse_down\n");
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool _mouse_move(void    *data,
+             int      type,
+             void    *event)
+{
+   Ecore_Event_Mouse_Button *ev = event;
+   ecore_x_mouse_move_send(_get_win_below(ev->x, ev->y), ev->x, ev->y);
+   //fprintf(stderr, "mouse_move\n");
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+
 static Eina_Bool draw_border(AtspiAccessible *w)
 {
    if(!w)
@@ -73,6 +116,11 @@ Eina_Bool border_init(void)
    evas_object_show(r4);
    evas_object_show(win);
 
+   ecore_event_init();
+   ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, _mouse_down, NULL);
+   ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, _mouse_up, NULL);
+   ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, _mouse_move, NULL);
+
    listener = atspi_event_listener_new (_bounds_changed, NULL, NULL);
    atspi_event_listener_register (listener, BOUNDS_CHANGED, &error);
 
index e9a4772..00e95ee 100644 (file)
@@ -7,15 +7,6 @@
 static AtspiAccessible *current_obj;
 static AtspiAccessible *top_window;
 
-static Eina_List *focusable_obj_list;
-static Eina_Bool is_first = EINA_FALSE;
-static void _get_focusable_fillers_list(AtspiAccessible* obj);
-
-static void _scroll_action(void) // NOT YET IMPLEMENTED
-{
-    
-}
-
 static void _focus_widget(Gesture_Info *info)
 {
     AtspiAccessible *target_widget = NULL;
@@ -51,6 +42,7 @@ static AtspiAccessible *_focused_next_widget(void)
     GArray *relations = NULL;
     AtspiRelation *relation = NULL;
     AtspiRelationType type;
+    gchar *roleName;
     int i;
 
     if(current_obj)
@@ -78,9 +70,11 @@ static AtspiAccessible *_focused_next_widget(void)
 
     if (focus_component != NULL)
     {
-        ERROR("Focus component is not null\n");
-        if (atspi_component_grab_focus(focus_component, NULL) == TRUE)
-            ERROR("Focus was changed\n");
+        roleName = atspi_accessible_get_role_name(current_widget, NULL);
+        ERROR("Focused widget role: %s\n", roleName);
+
+            if (atspi_component_grab_focus(focus_component, NULL) == TRUE)
+                ERROR("Focus was changed\n");
     }
     return current_widget;
 }
@@ -92,6 +86,7 @@ static AtspiAccessible *_focused_prev_widget(void)
     GArray *relations = NULL;
     AtspiRelation *relation = NULL;
     AtspiRelationType type;
+    gchar *roleName;
     int i;
 
     if(current_obj)
@@ -119,8 +114,11 @@ static AtspiAccessible *_focused_prev_widget(void)
 
     if (focus_component != NULL)
     {
-        if (atspi_component_grab_focus(focus_component, NULL) == TRUE)
-            ERROR("Focus was changed\n");
+        roleName = atspi_accessible_get_role_name(current_widget, NULL);
+        ERROR("Focused widget role: %s\n", roleName);
+
+            if (atspi_component_grab_focus(focus_component, NULL) == TRUE)
+                ERROR("Focus was changed\n");
 
     }
 
@@ -129,8 +127,6 @@ static AtspiAccessible *_focused_prev_widget(void)
 
 static void _focus_next(void)
 {
-    AtspiAccessible *current_widget = NULL;
-
     current_obj = _focused_next_widget();
     if(current_obj)
         border_set(current_obj);
@@ -138,8 +134,6 @@ static void _focus_next(void)
 
 static void _focus_prev(void)
 {
-    AtspiAccessible *current_widget = NULL;
-
     current_obj = _focused_prev_widget();
     if(current_obj)
         border_set(current_obj);
@@ -148,35 +142,93 @@ static void _focus_prev(void)
 static void _value_inc_widget(void)
 {
     AtspiAccessible* current_widget = NULL;
+    AtspiText *text_interface = NULL;
+    gint current_offset;
+    gboolean ret;
     if(current_obj)
         current_widget = current_obj;
     else
         return;
 
+    if(!strcmp(atspi_accessible_get_role_name(current_widget, NULL), "entry"))
+    {
+        text_interface = atspi_accessible_get_text(current_widget);
+        if(text_interface)
+        {
+            current_offset = atspi_text_get_caret_offset(text_interface, NULL);
+            ret = atspi_text_set_caret_offset(text_interface, current_offset + 1, NULL);
+            if(ret)
+            {
+                ERROR("Caret position increment done");
+            }
+            else
+            {
+                ERROR("Caret position increment error");
+            }
+        }
+        else
+            ERROR("No text interface supported!");
+        return;
+    }
+
     AtspiValue *value_interface = atspi_accessible_get_value(current_widget);
     if(value_interface)
     {
+        ERROR("Value interface supported!\n");
         gdouble current_val = atspi_value_get_current_value(value_interface, NULL);
+        ERROR("Current value: %f\n ", (double)current_val);
         gdouble minimum_inc = atspi_value_get_minimum_increment(value_interface, NULL);
+        ERROR("Minimum increment: %f\n ", (double)minimum_inc);
         atspi_value_set_current_value(value_interface, current_val + minimum_inc, NULL);
     }
+    else
+        ERROR("No value interface supported!\n");
 }
 
 static void _value_dec_widget(void)
 {
     AtspiAccessible* current_widget = NULL;
+    AtspiText *text_interface = NULL;
+    gint current_offset;
+    gboolean ret;
     if(current_obj)
         current_widget = current_obj;
     else
         return;
 
+    if(!strcmp(atspi_accessible_get_role_name(current_widget, NULL), "entry"))
+    {
+        text_interface = atspi_accessible_get_text(current_widget);
+        if(text_interface)
+        {
+            current_offset = atspi_text_get_caret_offset(text_interface, NULL);
+            ret = atspi_text_set_caret_offset(text_interface, current_offset - 1, NULL);
+            if(ret)
+            {
+                ERROR("Caret position decrement done");
+            }
+            else
+            {
+                ERROR("Caret position decrement error");
+            }
+        }
+        else
+            ERROR("No text interface supported!");
+        return;
+    }
+
     AtspiValue *value_interface = atspi_accessible_get_value(current_widget);
     if(value_interface)
     {
+        ERROR("Value interface supported!\n");
         gdouble current_val = atspi_value_get_current_value(value_interface, NULL);
+        ERROR("Current value: %f\n ", (double)current_val);
         gdouble minimum_inc = atspi_value_get_minimum_increment(value_interface, NULL);
+        ERROR("Minimum increment: %f\n ", (double)minimum_inc);
         atspi_value_set_current_value(value_interface, current_val - minimum_inc, NULL);
     }
+    else
+        ERROR("No value interface supported!\n");
 }
 
 static Eina_Bool
@@ -202,41 +254,6 @@ _timeout(void *data)
     return EINA_FALSE;
 }
 
-static void _scroll_up_widget(void)
-{
-    AtspiAccessible *current_widget = NULL;
-
-    if(current_obj)
-        current_widget = current_obj;
-    else
-        return;
-
-    gchar *roleName;
-    gchar *actionName;
-    roleName = atspi_accessible_get_role_name(current_widget, NULL);
-    ERROR("Widget role prev: %s\n", roleName);
-
-    AtspiAction *action;
-    gint number;
-    int i;
-    int k;
-
-    action = atspi_accessible_get_action(current_widget);
-    number = atspi_action_get_n_actions(action, NULL);
-    ERROR("Number of available action = %d\n", number);
-/*
-    if (!strcmp("scroll_up", actionName))
-    {
-        atspi_action_do_action(action, i, NULL);
-    }
-    else if (!strcmp("scroll_down", actionName))
-    {
-        atspi_action_do_action(action, i, NULL);
-
-    }
-*/
-}
-
 static void _activate_widget(void)
 {
     //activate the widget
@@ -261,25 +278,29 @@ static void _activate_widget(void)
     int k;
 
     action = atspi_accessible_get_action(current_widget);
+
     number = atspi_action_get_n_actions(action, NULL);
     ERROR("Number of available action = %d\n", number);
 
-    GArray *array = atspi_accessible_get_interfaces(current_widget);
-    ERROR("TAB LEN = %d \n", array->len);
-
-    for (k=0; k < array->len; k++)
-        ERROR("Interface = %s\n", g_array_index( array, gchar *, k ));
-
-    for (i=0; i<number; i++)
+    if(action)
     {
-        actionName = atspi_action_get_name(action, i, NULL);
-        ERROR("Action name = %s\n", actionName);
+        GArray *array = atspi_accessible_get_interfaces(current_widget);
+        ERROR("TAB LEN = %d \n", array->len);
+
+        for (k=0; k < array->len; k++)
+            ERROR("Interface = %s\n", g_array_index( array, gchar *, k ));
 
-        if (!strcmp("click", actionName))
+        for (i=0; i<number; i++)
         {
-            atspi_action_do_action(action, i, NULL);
+            actionName = atspi_action_get_name(action, i, NULL);
+            ERROR("Action name = %s\n", actionName);
+
+            if (!strcmp("click", actionName))
+            {
+                atspi_action_do_action(action, 0, NULL);
+            }
+                ecore_timer_add(0.1, _timeout, current_widget);
         }
-            ecore_timer_add(0.1, _timeout, current_widget);
     }
 }
 
@@ -289,42 +310,42 @@ static void on_gesture_detected(void *data, Gesture_Info *info)
    {
       case ONE_FINGER_HOVER:
           _focus_widget(info);
-          return;
+          break;
       case TWO_FINGERS_HOVER:
-          _scroll_up_widget();
-          return;
+          ERROR("Scrolling!"); // TODO
+          break;
       case ONE_FINGER_FLICK_LEFT:
           _focus_prev();
-          return;
+          break;
       case ONE_FINGER_FLICK_RIGHT:
           _focus_next();
-          return;
+          break;
       case ONE_FINGER_FLICK_UP:
           _value_inc_widget();
-          return;
+          break;
       case ONE_FINGER_FLICK_DOWN:
           _value_dec_widget();
-          return;
+          break;
       case ONE_FINGER_SINGLE_TAP:
           _focus_widget(info);
-          return;
+          break;
       case ONE_FINGER_DOUBLE_TAP:
           _activate_widget();
-          return;
+          break;
       case THREE_FINGERS_FLICK_LEFT:
           // not implemented
-          return;
+          break;
       case THREE_FINGERS_FLICK_RIGHT:
           // not implemented
-          return;
+          break;
       case THREE_FINGERS_FLICK_DOWN:
           // indicator show
           // not implemented
-          return;
+          break;
       case THREE_FINGERS_FLICK_UP:
           // indicator hide
           // not implemented
-          return;
+          break;
       default:
           ERROR("Function not implemented for gesture type :%d", info->type);
    }
@@ -337,7 +358,7 @@ static void _get_first_focusable_widget(AtspiAccessible* obj)
        AtspiComponent *focus_component = NULL;
        int i;
 
-       gint nChild = NULL;
+       gint nChild;
        gchar *winName = NULL;
        gchar *widgetName = NULL;
        gchar *roleName = NULL;
@@ -393,6 +414,7 @@ static void _get_first_focusable_widget(AtspiAccessible* obj)
 
 static void on_window_activate(void *data, AtspiAccessible *window)
 {
+      ERROR("... on window activate ...");
       top_window = window;
       if(top_window)
       {
@@ -400,7 +422,11 @@ static void on_window_activate(void *data, AtspiAccessible *window)
           _get_first_focusable_widget(top_window);
       }
       else
-        top_window = NULL;
+      {
+          ERROR("No top window found!");
+          top_window = NULL;
+          current_obj = NULL;
+      }
 }
 
 void navigator_init(void)
@@ -410,7 +436,7 @@ void navigator_init(void)
    // register on active_window
    window_tracker_register(on_window_activate, NULL);
    window_tracker_active_window_request();
-   border_init();
+   //border_init();
 }
 void navigator_shutdown(void)
 {
index 4bae539..c0ffc66 100644 (file)
@@ -29,10 +29,14 @@ static void _get_active_win_from_pid(int pid)
              AtspiRole role = atspi_accessible_get_role(win, NULL);
 
              if ((atspi_state_set_contains(states, ATSPI_STATE_ACTIVE)) && (role == ATSPI_ROLE_WINDOW))
+             {
                 user_cb(user_data, win);
+                return;
+             }
           }
        }
    }
+   user_cb(user_data, NULL);
 }
 
 AtspiAccessible* _get_active_win(void)