flat_navi: add new API for cyclic navigation.
authorMichal Jagiello <m.jagiello@samsung.com>
Mon, 12 Jan 2015 12:18:40 +0000 (13:18 +0100)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 12 Jan 2015 12:20:28 +0000 (13:20 +0100)
include/flat_navi.h
src/flat_navi.c

index 0b4af28..495098a 100644 (file)
@@ -122,7 +122,7 @@ AtspiAccessible *flat_navi_context_line_next(FlatNaviContext *ctx);
 AtspiAccessible *flat_navi_context_line_first(FlatNaviContext *ctx);
 
 /**
- * Advances to first line.
+ * Advances to last line.
  *
  * @param ctx FlatNaviContext
  *
@@ -132,4 +132,15 @@ AtspiAccessible *flat_navi_context_line_first(FlatNaviContext *ctx);
  */
 AtspiAccessible *flat_navi_context_line_last(FlatNaviContext *ctx);
 
+/**
+ * Advances to the last element of the last line
+ *
+ * @param ctx FlatNaviContext
+ *
+ * @return AtspiAccessible* pointer to current object
+ *
+ * @note current element will be last of line
+ */
+AtspiAccessible *flat_navi_context_line_last_object_last(FlatNaviContext *ctx);
+
 #endif /* end of include guard: FLAT_NAVI_H_ */
index 48024c1..0d89a0d 100644 (file)
@@ -308,9 +308,21 @@ AtspiAccessible *flat_navi_context_next(FlatNaviContext *ctx)
    Eina_List *new = eina_list_next(ctx->current);
 
    if (new)
+   {
      ctx->current = new;
+   }
    else
-     return flat_navi_context_line_next(ctx);
+   {
+     AtspiAccessible *next = flat_navi_context_line_next(ctx);
+     if (next)
+     {
+         return next;
+     }
+     else
+     {
+         return flat_navi_context_line_first(ctx);
+     }
+   }
 
    return eina_list_data_get(ctx->current);
 }
@@ -323,8 +335,10 @@ AtspiAccessible *flat_navi_context_prev(FlatNaviContext *ctx)
      ctx->current = new;
    else
      {
-        if (!flat_navi_context_line_prev(ctx))
-          return NULL;
+         if (!flat_navi_context_line_prev(ctx))
+         {
+            return flat_navi_context_line_last_object_last(ctx);
+         }
         ctx->current = eina_list_last(eina_list_data_get(ctx->current_line));
      }
 
@@ -372,3 +386,13 @@ AtspiAccessible *flat_navi_context_line_last(FlatNaviContext *ctx)
 
    return eina_list_data_get(ctx->current);
 }
+
+AtspiAccessible *flat_navi_context_line_last_object_last(FlatNaviContext *ctx)
+{
+   Eina_List *new = eina_list_last(ctx->current_line);
+
+   ctx->current_line = new;
+   ctx->current = eina_list_last(eina_list_data_get(ctx->current_line));
+
+   return eina_list_data_get(ctx->current);
+}