raster pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=5618d0c57f58bad9898e4f78e1cceb1e8d51d9c3
commit 5618d0c57f58bad9898e4f78e1cceb1e8d51d9c3 Author: Ryuan Choi <ryuan.c...@gmail.com> Date: Sat Nov 2 20:50:59 2013 +0900 genlist, gengrid: Add ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL Summary: Some applications like file viewer allow multiple selection only with Control key was pressed. Reviewers: seoz, raster Reviewed By: raster Differential Revision: https://phab.enlightenment.org/D251 Conflicts: ChangeLog NEWS --- ChangeLog | 6 ++++++ NEWS | 1 + src/lib/elm_general.h | 1 + src/lib/elm_gengrid.c | 4 +++- src/lib/elm_gengrid_legacy.h | 4 ++++ src/lib/elm_genlist.c | 4 +++- src/lib/elm_genlist_legacy.h | 4 ++++ 7 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0060f0a..66e4536 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1735,3 +1735,9 @@ 2013-10-30 Shilpa Onkar Singh * slider: Added elm_slider_step_get(), elm_slider_step_set(). + +2013-10-02 Ryuan Choi (ryuan) + + * genlist , gengrid: Add ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL. + It disallow multiple selection when clicked without control pressed although + multiple selection is enabled. diff --git a/NEWS b/NEWS index 9342851..4ba58bf 100644 --- a/NEWS +++ b/NEWS @@ -101,6 +101,7 @@ Additions: * Add support for "clicked" callback on Return/space/KP_Enter key press for image. * Add "virtualkeypad,size,changed" callback on virtualkeypad min size change for conformant. * Add elm_slider_step_get(), elm_slider_step_set() for slider. + * Add ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL select mode for genlist/gengrid. Improvements: diff --git a/src/lib/elm_general.h b/src/lib/elm_general.h index 2ad5d2d..9f5e140 100644 --- a/src/lib/elm_general.h +++ b/src/lib/elm_general.h @@ -126,6 +126,7 @@ typedef enum ELM_OBJECT_SELECT_MODE_ALWAYS, /**< always select mode */ ELM_OBJECT_SELECT_MODE_NONE, /**< no select mode */ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, /**< no select mode with no finger size rule*/ + ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL, /**< disallow mutiple selection when clicked without control key pressed */ ELM_OBJECT_SELECT_MODE_MAX } Elm_Object_Select_Mode; diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index b315bf5..883d4fb 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -596,7 +596,9 @@ _item_mouse_up_cb(void *data, _elm_gengrid_item_unrealize(it, EINA_FALSE); } if (elm_widget_item_disabled_get(it) || (dragged)) return; - if (sd->multi) + if (sd->multi && + ((sd->select_mode != ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL) || + (evas_key_modifier_is_set(ev->modifiers, "Control")))) { if (!it->selected) { diff --git a/src/lib/elm_gengrid_legacy.h b/src/lib/elm_gengrid_legacy.h index f55edc0..0f09c70 100644 --- a/src/lib/elm_gengrid_legacy.h +++ b/src/lib/elm_gengrid_legacy.h @@ -799,8 +799,12 @@ EAPI Eina_Bool elm_gengrid_filled_get(const Evas_Object *obj * - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items * entirely and they will neither appear selected nor call selected * callback functions. + * - ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL : Only one item will be selected + * although multi-selection is enabled, if clicked without pressing control + * key. This mode is only available with multi-selection. * * @see elm_gengrid_select_mode_get() + * @see elm_gengrid_multi_select_set() * * @ingroup Gengrid */ diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index ff3c8b0..cdb27be 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -4220,7 +4220,9 @@ _item_mouse_up_cb(void *data, return; if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; - if (sd->multi) + if (sd->multi && + ((sd->select_mode != ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL) || + (evas_key_modifier_is_set(ev->modifiers, "Control")))) { if (!it->selected) { diff --git a/src/lib/elm_genlist_legacy.h b/src/lib/elm_genlist_legacy.h index 3332d32..d1a02fc 100644 --- a/src/lib/elm_genlist_legacy.h +++ b/src/lib/elm_genlist_legacy.h @@ -575,8 +575,12 @@ EAPI Eina_Bool elm_genlist_tree_effect_enabled_get(const Evas_Object *o * - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items * entirely and they will neither appear selected nor call selected * callback functions. + * - ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL : Only one item will be selected + * although multi-selection is enabled, if clicked without pressing control + * key. This mode is only available with multi-selection. * * @see elm_genlist_select_mode_get() + * @see elm_genlist_multi_select_set() * * @ingroup Genlist */ --