rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=ed3a5a3b772fea11d55bfbb427a1e2c11b34dd83
commit ed3a5a3b772fea11d55bfbb427a1e2c11b34dd83 Author: Andrii Kroitor <an.kroi...@samsung.com> Date: Wed Apr 6 11:22:41 2016 +0300 workspace: add shortcuts for selecting next(x) and prev(z) parts --- src/bin/common/signals.h | 2 ++ src/bin/ui/shortcuts/shortcuts.c | 6 +++++ src/bin/ui/shortcuts/shortcuts.h | 2 ++ src/bin/ui/tabs.c | 20 ++++++++++++++ src/bin/ui/workspace/group_navigator.c | 49 ++++++++++++++++++++++++++++++++++ src/bin/ui/workspace/group_navigator.h | 6 +++++ src/bin/ui/workspace/workspace.c | 16 +++++++++++ src/bin/ui/workspace/workspace.h | 6 +++++ 8 files changed, 107 insertions(+) diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h index 6318355..90bbe1e 100644 --- a/src/bin/common/signals.h +++ b/src/bin/common/signals.h @@ -468,6 +468,8 @@ typedef struct { #define SIGNAL_SHORTCUT_MODE_CODE "SIGNAL_SHORTCUT_MODE_CODE" #define SIGNAL_SHORTCUT_MODE_DEMO "SIGNAL_SHORTCUT_MODE_DEMO" #define SIGNAL_SHORTCUT_STATE_NEXT "SIGNAL_SHORTCUT_STATE_NEXT" +#define SIGNAL_SHORTCUT_PART_NEXT "SIGNAL_SHORTCUT_PART_NEXT" +#define SIGNAL_SHORTCUT_PART_PREV "SIGNAL_SHORTCUT_PART_PREV" #define SIGNAL_SHORTCUT_PART_SHOWHIDE "SIGNAL_SHORTCUT_PART_SHOWHIDE" #define SIGNAL_SHORTCUT_ALL_PARTS_SHOWHIDE "SIGNAL_SHORTCUT_ALL_PARTS_SHOWHIDE" #define SIGNAL_SHORTCUT_PART_UNSELECT "SIGNAL_SHORTCUT_PART_UNSELECT" diff --git a/src/bin/ui/shortcuts/shortcuts.c b/src/bin/ui/shortcuts/shortcuts.c index 0420e8d..9dd4441 100644 --- a/src/bin/ui/shortcuts/shortcuts.c +++ b/src/bin/ui/shortcuts/shortcuts.c @@ -149,6 +149,8 @@ _shortcut_handle(Shortcut_Type type) SHORTCUT(ADD_PROGRAM); SHORTCUT(DEL); SHORTCUT(STATE_NEXT); + SHORTCUT(PART_NEXT); + SHORTCUT(PART_PREV); SHORTCUT(PART_SHOWHIDE); SHORTCUT(ALL_PARTS_SHOWHIDE); SHORTCUT(PART_UNSELECT); @@ -402,6 +404,10 @@ _default_shortcuts_add() MOD_NONE, 119/*del*/); _add_shortcut(false, SHORTCUT_TYPE_STATE_NEXT, SHORTCUT_TYPE_NONE, MOD_NONE, 39/*s*/); + _add_shortcut(false, SHORTCUT_TYPE_PART_NEXT, SHORTCUT_TYPE_NONE, + MOD_NONE, 53/*x*/); + _add_shortcut(false, SHORTCUT_TYPE_PART_PREV, SHORTCUT_TYPE_NONE, + MOD_NONE, 52/*z*/); _add_shortcut(false, SHORTCUT_TYPE_PART_SHOWHIDE, SHORTCUT_TYPE_NONE, MOD_NONE, 43/*h*/); _add_shortcut(false, SHORTCUT_TYPE_ALL_PARTS_SHOWHIDE, SHORTCUT_TYPE_NONE, diff --git a/src/bin/ui/shortcuts/shortcuts.h b/src/bin/ui/shortcuts/shortcuts.h index e84b7ff..a442deb 100644 --- a/src/bin/ui/shortcuts/shortcuts.h +++ b/src/bin/ui/shortcuts/shortcuts.h @@ -85,6 +85,8 @@ typedef enum { SHORTCUT_TYPE_MODE_CODE, SHORTCUT_TYPE_MODE_DEMO, SHORTCUT_TYPE_STATE_NEXT, + SHORTCUT_TYPE_PART_NEXT, + SHORTCUT_TYPE_PART_PREV, SHORTCUT_TYPE_PART_SHOWHIDE, SHORTCUT_TYPE_ALL_PARTS_SHOWHIDE, SHORTCUT_TYPE_PART_UNSELECT, diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c index 937f0ea..df84f17 100644 --- a/src/bin/ui/tabs.c +++ b/src/bin/ui/tabs.c @@ -650,6 +650,24 @@ _shortcut_state_next_cb(void *data __UNUSED__, } static void +_shortcut_part_next_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + if (tabs.current_workspace) + workspace_part_next_request(tabs.current_workspace); +} + +static void +_shortcut_part_prev_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + if (tabs.current_workspace) + workspace_part_prev_request(tabs.current_workspace); +} + +static void _shortcut_part_showhide_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) @@ -983,6 +1001,8 @@ tabs_add(void) evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_ADD_PROGRAM, _shortcut_add_program_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_DEL, _shortcut_del_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_STATE_NEXT, _shortcut_state_next_cb, NULL); + evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_PART_NEXT, _shortcut_part_next_cb, NULL); + evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_PART_PREV, _shortcut_part_prev_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_PART_SHOWHIDE, _shortcut_part_showhide_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_PART_UNSELECT, _shortcut_part_unselect_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_ALL_PARTS_SHOWHIDE, _shortcut_all_parts_showhide_cb, NULL); diff --git a/src/bin/ui/workspace/group_navigator.c b/src/bin/ui/workspace/group_navigator.c index e310cef..9ed6cbb 100644 --- a/src/bin/ui/workspace/group_navigator.c +++ b/src/bin/ui/workspace/group_navigator.c @@ -1472,6 +1472,35 @@ _part_item_find(Part_List *pl, Part *part) return part_item; } +static void +_select_next_part(Part_List *pl, Eina_Bool reverse) +{ + Elm_Object_Item *part_item; + const Eina_List *part_items, *l = NULL; + + assert(pl != NULL); + + part_items = elm_genlist_item_subitems_get(pl->parts_caption_item); + if (pl->selected_part_item) + l = eina_list_data_find_list(part_items, pl->selected_part_item); + if (reverse) + { + if (eina_list_prev(l)) + l = eina_list_prev(l); + else + l = eina_list_last(l); + } + else + { + if (eina_list_next(l)) + l = eina_list_next(l); + else + l = part_items; + } + part_item = eina_list_data_get(l); + elm_genlist_item_selected_set(part_item, true); +} + void group_navigator_part_del(Evas_Object *obj, Part *part) { @@ -2090,6 +2119,26 @@ group_navigator_state_next_request(Evas_Object *obj) } void +group_navigator_part_next_request(Evas_Object *obj) +{ + Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA); + + assert(pl != NULL); + + _select_next_part(pl, false); +} + +void +group_navigator_part_prev_request(Evas_Object *obj) +{ + Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA); + + assert(pl != NULL); + + _select_next_part(pl, true); +} + +void group_navigator_part_showhide_request(Evas_Object *obj) { Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA); diff --git a/src/bin/ui/workspace/group_navigator.h b/src/bin/ui/workspace/group_navigator.h index 0b04b02..b03105e 100644 --- a/src/bin/ui/workspace/group_navigator.h +++ b/src/bin/ui/workspace/group_navigator.h @@ -118,6 +118,12 @@ void group_navigator_state_next_request(Evas_Object *obj); void +group_navigator_part_next_request(Evas_Object *obj); + +void +group_navigator_part_prev_request(Evas_Object *obj); + +void group_navigator_part_showhide_request(Evas_Object *obj); void diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index 811baa9..c27e411 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -1380,6 +1380,22 @@ workspace_state_next_request(Evas_Object *obj) } void +workspace_part_next_request(Evas_Object *obj) +{ + WS_DATA_GET(obj); + + group_navigator_part_next_request(wd->group_navi); +} + +void +workspace_part_prev_request(Evas_Object *obj) +{ + WS_DATA_GET(obj); + + group_navigator_part_prev_request(wd->group_navi); +} + +void workspace_part_showhide_request(Evas_Object *obj) { WS_DATA_GET(obj); diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h index d165c2f..4c2bb69 100644 --- a/src/bin/ui/workspace/workspace.h +++ b/src/bin/ui/workspace/workspace.h @@ -376,6 +376,12 @@ void workspace_state_next_request(Evas_Object *obj); void +workspace_part_next_request(Evas_Object *obj); + +void +workspace_part_prev_request(Evas_Object *obj); + +void workspace_part_showhide_request(Evas_Object *obj); void --