+}
+
+static void
+filled_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *box, *content_box, *grid, *tg;
+
+ win = elm_win_util_standard_add("test filled", "Test Filled");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ elm_win_resize_object_add(win, box);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(box);
+
+ content_box = elm_box_add(win);
+ elm_win_resize_object_add(win, content_box);
+ evas_object_size_hint_weight_set(content_box, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(content_box, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_box_pack_end(box, content_box);
+ evas_object_show(content_box);
+
+ grid = create_gengrid(win, 1);
+ elm_box_pack_end(content_box, grid);
+ evas_object_show(grid);
+
+ tg = elm_check_add(win);
+ elm_object_text_set(tg, "Filled");
+ evas_object_smart_callback_add(tg, "changed", filled_cb, content_box);
+ elm_box_pack_end(box, tg);
+ evas_object_show(tg);
+
+ evas_object_resize(win, 450, 200);
+ evas_object_show(win);
+}
+
+static void
+cursor_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
+{
+ Evas_Object *grid = (Evas_Object *)data;
+ Elm_Object_Item *item = NULL;
+ int i = 0;
+
+ for ((item = elm_gengrid_first_item_get(grid)); item;
+ (item = elm_gengrid_item_next_get(item)))
+ {
+ if (!elm_check_state_get(obj))
+ {
+ elm_gengrid_item_cursor_unset(item);
+ continue;
+ }
+
+ elm_gengrid_item_cursor_set(item, cur[i]);
+ elm_gengrid_item_cursor_engine_only_set(item, EINA_FALSE);
+ i++;
+ }
+}
+
+static void
+cursor_bt_clicked(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *box, *content_box, *hbox, *grid, *tg;
+
+ win = elm_win_util_standard_add("test cursor", "Test Cursor");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ box = elm_box_add(win);
+ elm_win_resize_object_add(win, box);
+ evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(box);
+
+ content_box = elm_box_add(win);
+ elm_win_resize_object_add(win, content_box);
+ evas_object_size_hint_weight_set(content_box, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(content_box, EVAS_HINT_FILL,
+ EVAS_HINT_FILL);
+ elm_box_pack_end(box, content_box);
+ evas_object_show(content_box);
+
+ grid = create_gengrid(win, 4);
+ elm_box_pack_end(content_box, grid);
+ evas_object_show(grid);
+
+ hbox = elm_box_add(win);
+ elm_box_horizontal_set(hbox, EINA_TRUE);
+
+ tg = elm_check_add(win);
+ elm_object_text_set(tg, "Cursor");
+ evas_object_smart_callback_add(tg, "changed", cursor_cb, grid);
+ elm_box_pack_end(hbox, tg);
+ evas_object_show(tg);
+
+ elm_box_pack_end(box, hbox);
+ evas_object_show(hbox);
+
+ evas_object_resize(win, 450, 450);
+ evas_object_show(win);
+}
+
+void
+test_gengrid(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ Evas_Object *win, *bt, *content_box, *bxx, *bx, *tg;
+ api_data *api = calloc(1, sizeof(api_data));
+
+ win = elm_win_util_standard_add("gengrid", "GenGrid");
+ elm_win_autodel_set(win, EINA_TRUE);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
+
+ bxx = elm_box_add(win);
+ api->box = bxx;
+ elm_win_resize_object_add(win, bxx);
+ evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bxx);
+
+ content_box = elm_box_add(win);
+ api->box = content_box;
+ evas_object_size_hint_weight_set(content_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(content_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_show(content_box);
+
+ /* Create GenGrid */
+ api->grid = create_gengrid(win, (12 * 12));
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Next API function");
+ evas_object_smart_callback_add(bt, "clicked", _api_bt_clicked,
+ (void *)api);
+ elm_box_pack_end(bxx, bt);
+ elm_object_disabled_set(bt, api->state == API_STATE_LAST);
+ evas_object_show(bt);
+
+ elm_box_pack_end(content_box, api->grid);
+ elm_box_pack_end(bxx, content_box);
+ evas_object_show(api->grid);
+
+ bx = elm_box_add(win);
+ elm_box_horizontal_set(bx, EINA_TRUE);
+ elm_box_pack_end(bxx, bx);
+ evas_object_show(bx);
+
+ /* Gengrid Always Select Mode Test */
+ tg = elm_check_add(win);
+ evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(tg, "Always Select Mode");
+ evas_object_smart_callback_add(tg, "changed", always_select_mode_cb,
+ (void *)api);
+ elm_box_pack_end(bx, tg);
+ evas_object_show(tg);
+
+ tg = elm_check_add(win);
+ evas_object_size_hint_weight_set(tg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(tg, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_text_set(tg, "Multi Select Mode");
+ elm_check_state_set(tg, EINA_TRUE);
+ evas_object_smart_callback_add(tg, "changed", multi_select_cb,
+ (void *)api);
+ elm_box_pack_end(bx, tg);
+ evas_object_show(tg);
+
+ /* Gengrid Clear Test */
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Clear");
+ evas_object_smart_callback_add(bt, "clicked", clear_bt_clicked,
+ (void *)api);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Restore");
+ evas_object_smart_callback_add(bt, "clicked", restore_bt_clicked,
+ (void *) api);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+
+ /* Gengrid Filled Test */
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Check Filled");
+ evas_object_smart_callback_add(bt, "clicked", filled_bt_clicked, NULL);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);
+
+ /* Item Cursor Test */
+ bt = elm_button_add(win);
+ elm_object_text_set(bt, "Check Cursor");
+ evas_object_smart_callback_add(bt, "clicked", cursor_bt_clicked,
+ (void *) api);
+ elm_box_pack_end(bx, bt);
+ evas_object_show(bt);