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
  */

-- 


Reply via email to