billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=300ddee81a84571f563f74d6f25a801627db7ace

commit 300ddee81a84571f563f74d6f25a801627db7ace
Author: Boris Faure <[email protected]>
Date:   Sun Feb 9 00:30:40 2020 +0100

    win: remove animation on long press on tab
---
 src/bin/win.c | 157 +++++++++++++++++++---------------------------------------
 1 file changed, 50 insertions(+), 107 deletions(-)

diff --git a/src/bin/win.c b/src/bin/win.c
index b4ab0cf..198cbe4 100644
--- a/src/bin/win.c
+++ b/src/bin/win.c
@@ -63,7 +63,6 @@ int _win_log_dom = -1;
 #define PANES_BOTTOM "bottom"
 
 #define DRAG_TIMEOUT 0.4
-#define ANIM_TIME 0.8
 
 /* {{{ Structs */
 
@@ -72,25 +71,16 @@ typedef struct _Tabbar Tabbar;
 typedef struct _Solo Solo;
 typedef struct _Tabs Tabs;
 typedef struct _Tab_Item Tab_Item;
-typedef struct _Anim_Icon Anim_Icon;
-typedef struct _Drag_Anim Drag_Anim;
+typedef struct _Tab_Drag Tab_Drag;
 
-struct _Anim_Icon
-{
-   int start_x;
-   int start_y;
-   Evas_Object *o;
-};
-
-struct _Drag_Anim
+struct _Tab_Drag
 {
    Evas_Object *icwin;
    Evas_Coord mdx;     /* Mouse-down x */
    Evas_Coord mdy;     /* Mouse-down y */
-   Anim_Icon *icon;
+   Evas_Object *icon;
    Evas *e;
    Ecore_Timer *timer;
-   Ecore_Animator *ea;
    Term *term;
 };
 
@@ -123,7 +113,7 @@ struct _Term
    Evas_Object *tab_region_bg;
    Evas_Object *tab_inactive;
    Tab_Item    *tab_item;
-   Drag_Anim   *drag_anim;
+   Tab_Drag    *tab_drag;
    Eina_List   *popmedia_queue;
    Ecore_Timer *sendfile_request_hide_timer;
    Ecore_Timer *sendfile_progress_hide_timer;
@@ -550,9 +540,9 @@ _solo_set_title(Term_Container *tc,
      {
         elm_layout_text_set(term->bg, "terminology.tab.title", title);
      }
-   if (term->drag_anim && term->drag_anim->icon)
+   if (term->tab_drag && term->tab_drag->icon)
      {
-        elm_layout_text_set(term->drag_anim->icon->o,
+        elm_layout_text_set(term->tab_drag->icon,
                             "terminology.title", title);
      }
    tc->parent->set_title(tc->parent, tc, title);
@@ -2964,34 +2954,23 @@ _term_hdrag_off(Term *term, void *data EINA_UNUSED)
 }
 
 static void
-_drag_anim_free(Term *term)
+_tab_drag_free(Term *term)
 {
-   Anim_Icon *icon;
-   Drag_Anim *drag_anim = term->drag_anim;
+   Tab_Drag *tab_drag = term->tab_drag;
 
-   if (!drag_anim)
+   if (!tab_drag)
      return;
 
-   for_each_term_do(drag_anim->term->wn, &_term_hdrag_on, NULL);
-
-   ecore_timer_del(drag_anim->timer);
-   drag_anim->timer = NULL;
-
-   ecore_animator_del(drag_anim->ea);
-   drag_anim->ea = NULL;
+   for_each_term_do(tab_drag->term->wn, &_term_hdrag_on, NULL);
 
-   icon = drag_anim->icon;
+   ecore_timer_del(tab_drag->timer);
+   tab_drag->timer = NULL;
 
-   if (icon)
-     {
-        evas_object_hide(icon->o);
-        evas_object_del(icon->o);
-        free(icon);
-     }
+   evas_object_del(tab_drag->icon);
 
-   term->drag_anim = NULL;
-   term_unref(drag_anim->term);
-   free(drag_anim);
+   term->tab_drag = NULL;
+   term_unref(tab_drag->term);
+   free(tab_drag);
 }
 
 static void
@@ -3019,7 +2998,7 @@ _tabs_on_drag(void *data,
    solo = (Solo*)tab_item->tc;
    term = solo->term;
 
-   _drag_anim_free(term);
+   _tab_drag_free(term);
 
    tab_active_idx = -1;
    EINA_LIST_FOREACH(tabs->tabs, l, tab_item)
@@ -3103,17 +3082,17 @@ _tabs_drag_reinsert(Term *term, Evas_Coord mx, 
Evas_Coord my)
 }
 
 static void
-_tabs_drag_anim_stop(Term *term)
+_tabs_tab_drag_stop(Term *term)
 {
    Evas_Coord mx = 0, my = 0;
-   Drag_Anim *drag_anim = term->drag_anim;
+   Tab_Drag *tab_drag = term->tab_drag;
    Win *wn = term->wn;
    Term_Container *tc = (Term_Container*) wn;
    Term *term_at_coords;
 
-   assert(drag_anim);
+   assert(tab_drag);
 
-   evas_pointer_canvas_xy_get(drag_anim->e, &mx, &my);
+   evas_pointer_canvas_xy_get(tab_drag->e, &mx, &my);
    term_at_coords = tc->find_term_at_coords(tc, mx, my);
    if (!term_at_coords)
      goto end;
@@ -3126,11 +3105,11 @@ _tabs_drag_anim_stop(Term *term)
    else
      {
         /* Move to different set of Tabs */
-        /* TODO: boris */
+        ERR("to different set of tabs");
      }
 
 end:
-   _drag_anim_free(term);
+   _tab_drag_free(term);
 }
 
 static void
@@ -3142,12 +3121,12 @@ _tabs_on_drag_stop(void *data,
    Term *term = data;
    Tabs *tabs = evas_object_data_get(term->bg, "tabs");
 
-   if (term->drag_anim && term->drag_anim->icon)
+   if (term->tab_drag && term->tab_drag->icon)
      {
-        _tabs_drag_anim_stop(term);
+        _tabs_tab_drag_stop(term);
         return;
      }
-   _drag_anim_free(term);
+   _tab_drag_free(term);
 
    edje_object_part_drag_value_set(term->bg_edj, "terminology.tabl",
                                    tabs->v1_orig, 0.0);
@@ -3164,60 +3143,27 @@ _tabs_drag_mouse_move(
    const char *source EINA_UNUSED)
 {
    Term *term = data;
-   Drag_Anim *drag_anim = term->drag_anim;
-   Anim_Icon *icon;
+   Tab_Drag *tab_drag = term->tab_drag;
    int x, y, w, h;
    Evas_Coord xm, ym;
 
-   if (!drag_anim)
-     return;
-
-   icon = drag_anim->icon;
-   if (!icon)
+   if (!tab_drag || !tab_drag->icon)
      return;
 
-   evas_object_geometry_get(icon->o, NULL, NULL, &w, &h);
-   evas_pointer_canvas_xy_get(drag_anim->e, &xm, &ym);
+   evas_object_geometry_get(tab_drag->icon, NULL, NULL, &w, &h);
+   evas_pointer_canvas_xy_get(tab_drag->e, &xm, &ym);
    x = (xm - (w/2));
    y = (ym - (h/2));
-   evas_object_move(icon->o, x, y);
-}
-
-static Eina_Bool
-_drag_anim_play(void *data, double pos)
-{
-   Drag_Anim *drag_anim = data;
-   Anim_Icon *icon;
-   int x, y, w, h;
-   Evas_Coord xm, ym;
-
-   if (!drag_anim)
-     return ECORE_CALLBACK_CANCEL;
-
-   icon = drag_anim->icon;
-   if (pos > 0.99)
-     {
-        drag_anim->ea = NULL;  /* Avoid deleting on mouse up */
-        return ECORE_CALLBACK_CANCEL;
-     }
-
-   evas_object_geometry_get(icon->o, NULL, NULL, &w, &h);
-   evas_pointer_canvas_xy_get(drag_anim->e, &xm, &ym);
-   x = icon->start_x + (pos * (xm - (icon->start_x + (w/2))));
-   y = icon->start_y + (pos * (ym - (icon->start_y + (h/2))));
-   evas_object_move(icon->o, x, y);
-
-   return ECORE_CALLBACK_RENEW;
+   evas_object_move(tab_drag->icon, x, y);
 }
 
 static Eina_Bool
-_drag_anim_start(void *data)
+_tab_drag_start(void *data)
 {
    /* Start icons animation before actually drag-starts */
-   Drag_Anim *drag_anim = data;
-   Evas_Coord w, h;
-   Term *term = drag_anim->term;
-   Anim_Icon *icon = calloc(1, sizeof(*icon));
+   Tab_Drag *tab_drag = data;
+   Evas_Coord x, y, w, h, off_x, off_y;
+   Term *term = tab_drag->term;
    Evas_Object *o = elm_layout_add(term->bg);
 
    theme_apply_elm(o, term->config, "terminology/tabbar_back");
@@ -3225,24 +3171,21 @@ _drag_anim_start(void *data)
                        term->container->title);
    elm_layout_signal_emit(o, "style,active", "terminology");
 
-   for_each_term_do(drag_anim->term->wn, &_term_hdrag_off, NULL);
+   for_each_term_do(tab_drag->term->wn, &_term_hdrag_off, NULL);
 
    edje_object_part_geometry_get(term->bg_edj, "tabmiddle",
-                                 &icon->start_x, &icon->start_y, &w, &h);
+                                 &x, &y, &w, &h);
+   evas_object_geometry_get(term->bg_edj, &off_x, &off_y, NULL, NULL);
    evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
    evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 
-   evas_object_move(o, icon->start_x, icon->start_y);
    evas_object_resize(o, w, h);
+   evas_object_move(o, x + off_x, y + off_y);
    evas_object_show(o);
 
-   icon->o = o;
-   drag_anim->icon = icon;
-
-   drag_anim->ea = ecore_animator_timeline_add(DRAG_TIMEOUT,
-         _drag_anim_play, drag_anim);
+   tab_drag->icon = o;
 
-   drag_anim->timer = NULL;
+   tab_drag->timer = NULL;
    return ECORE_CALLBACK_CANCEL;
 }
 
@@ -3256,19 +3199,19 @@ _tabs_mouse_down(
    /* Launch a timer to start drag animation */
    Term *term = data;
    Evas_Coord mx = 0, my = 0;
-   Drag_Anim *drag_anim = calloc(1, sizeof(*drag_anim));
+   Tab_Drag *tab_drag = calloc(1, sizeof(*tab_drag));
 
-   drag_anim->e = evas_object_evas_get(term->bg);
-   evas_pointer_canvas_xy_get(drag_anim->e, &mx, &my);
+   tab_drag->e = evas_object_evas_get(term->bg);
+   evas_pointer_canvas_xy_get(tab_drag->e, &mx, &my);
 
    term_ref(term);
 
-   term->drag_anim = drag_anim;
-   drag_anim->mdx = mx;
-   drag_anim->mdy = my;
-   drag_anim->term = term;
-   drag_anim->timer = ecore_timer_add(DRAG_TIMEOUT,
-                                      _drag_anim_start, drag_anim);
+   term->tab_drag = tab_drag;
+   tab_drag->mdx = mx;
+   tab_drag->mdy = my;
+   tab_drag->term = term;
+   tab_drag->timer = ecore_timer_add(DRAG_TIMEOUT,
+                                     _tab_drag_start, tab_drag);
 }
 
 

-- 


Reply via email to