billiob pushed a commit to branch terminology-1.5.

http://git.enlightenment.org/apps/terminology.git/commit/?id=61bb7955dafc82a28f9c90e13bf1d8c3c746f32c

commit 61bb7955dafc82a28f9c90e13bf1d8c3c746f32c
Author: Boris Faure <bill...@gmail.com>
Date:   Sun Sep 29 13:53:35 2019 +0200

    sel: selector was not taking into account the new destination
---
 src/bin/sel.c | 46 ++++++++++++++++++++++++++--------------------
 1 file changed, 26 insertions(+), 20 deletions(-)

diff --git a/src/bin/sel.c b/src/bin/sel.c
index 8c56199..46a0470 100644
--- a/src/bin/sel.c
+++ b/src/bin/sel.c
@@ -86,6 +86,7 @@ _mouse_up_cb(void *data,
    Evas_Event_Mouse_Up *ev = event;
    Sel *sd = data;
    Evas_Coord dx, dy;
+   Evas_Coord finger_size;
 
    EINA_SAFETY_ON_NULL_RETURN(sd);
 
@@ -96,8 +97,9 @@ _mouse_up_cb(void *data,
    sd->down.down = EINA_FALSE;
    dx = abs(ev->canvas.x - sd->down.x);
    dy = abs(ev->canvas.y - sd->down.y);
-   if ((dx <= elm_config_finger_size_get()) &&
-       (dy <= elm_config_finger_size_get()))
+   finger_size = elm_config_finger_size_get();
+   if ((dx <= finger_size) &&
+       (dy <= finger_size))
      {
         Eina_List *l;
         Entry *en;
@@ -110,7 +112,7 @@ _mouse_up_cb(void *data,
              evas_object_geometry_get(en->bg, &ox, &oy, &ow, &oh);
              if (ELM_RECTS_INTERSECT(ox, oy, ow, oh, x, y, 1, 1))
                {
-                  sel_entry_selected_set(data, en->obj, EINA_FALSE);
+                  sel_entry_selected_set(sd->self, en->obj, EINA_FALSE);
                   sd->select_me = EINA_TRUE;
                   sd->exit_me = EINA_FALSE;
                   if (sd->autozoom_timeout)
@@ -792,33 +794,37 @@ sel_entry_selected_set(Evas_Object *obj, Evas_Object 
*entry, Eina_Bool keep_befo
    config = sd->config;
    if (!config) return;
 
+   /* Unselect previous selected item */
+   EINA_LIST_FOREACH(sd->items, l, en)
+     {
+        if ( (en->obj != entry) && (en->selected) )
+          {
+             if ((sd->w > 0) && (sd->h > 0))
+               edje_object_signal_emit(en->bg, "unselected", "terminology");
+             else
+               {
+                  en->was_selected = EINA_TRUE;
+                  sd->pending_sel = EINA_TRUE;
+               }
+             en->selected = EINA_FALSE;
+             sd->select_me = EINA_FALSE;
+             sd->exit_me = EINA_FALSE;
+          }
+        if (!keep_before) en->selected_before = EINA_FALSE;
+     }
+   /* Select new item */
    EINA_LIST_FOREACH(sd->items, l, en)
      {
         if (en->obj == entry)
           {
+             en->was_selected = EINA_FALSE;
+             en->selected = EINA_TRUE;
              if ((sd->w > 0) && (sd->h > 0))
                edje_object_signal_emit(en->bg, "selected", "terminology");
              else
                sd->pending_sel = EINA_TRUE;
              evas_object_stack_below(en->bg, sd->o_event);
-             en->was_selected = EINA_FALSE;
-             en->selected = EINA_TRUE;
-          }
-        else
-          {
-             if (en->selected)
-               {
-                  if ((sd->w > 0) && (sd->h > 0))
-                    edje_object_signal_emit(en->bg, "unselected", 
"terminology");
-                  else
-                    {
-                       en->was_selected = EINA_TRUE;
-                       sd->pending_sel = EINA_TRUE;
-                    }
-                  en->selected = EINA_FALSE;
-               }
           }
-        if (!keep_before) en->selected_before = EINA_FALSE;
      }
    sd->use_px = EINA_FALSE;
    _transit(sd, config->tab_zoom);

-- 


Reply via email to