raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4aa0590ebddce07ba25d66bc1f124d0b49eb32b5

commit 4aa0590ebddce07ba25d66bc1f124d0b49eb32b5
Author: Subodh Kumar <s7158.ku...@samsung.com>
Date:   Mon Jul 11 18:26:29 2016 +0900

    Edje entry: Add link press effect
    
    Summary:
    Add link press effect
    
    Custom tag (linked_pressed) has to be supplied in entry tb style
    with color value for press effect to be applied on link text.
    
    Reviewers: tasn
    
    Subscribers: shilpasingh, cedric, jpeg
    
    Differential Revision: https://phab.enlightenment.org/D3629
---
 src/lib/edje/edje_entry.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/src/lib/edje/edje_entry.c b/src/lib/edje/edje_entry.c
index 2519461..e87b88e 100644
--- a/src/lib/edje/edje_entry.c
+++ b/src/lib/edje/edje_entry.c
@@ -50,6 +50,7 @@ struct _Entry
    Eina_Bool              input_panel_enable : 1;
    Eina_Bool              prediction_allow : 1;
    Eina_Bool              anchors_updated : 1;
+   Eina_Bool              have_link_pressed : 1;
 
 #ifdef HAVE_ECORE_IMF
    Eina_Bool              have_preedit : 1;
@@ -761,6 +762,28 @@ _sel_update(Edje *ed, Evas_Textblock_Cursor *c 
EINA_UNUSED, Evas_Object *o, Entr
      }
 }
 
+static Eina_Bool
+_edje_entry_style_tag_check(Edje_Real_Part *rp, const char *tag)
+{
+    const Evas_Textblock_Style *ts = NULL;
+
+    ts = evas_object_textblock_style_user_peek(rp->object);
+    if (ts)
+      {
+         if (strstr(evas_textblock_style_get(ts), tag)) return EINA_TRUE;
+      }
+    else
+      {
+         ts = evas_object_textblock_style_get(rp->object);
+         if (ts)
+           {
+              if (strstr(evas_textblock_style_get(ts), tag)) return EINA_TRUE;
+           }
+      }
+
+   return EINA_FALSE;
+}
+
 static void
 _edje_anchor_mouse_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_info)
 {
@@ -794,6 +817,14 @@ _edje_anchor_mouse_down_cb(void *data, Evas *e 
EINA_UNUSED, Evas_Object *obj EIN
         else
           snprintf(buf, len, "anchor,mouse,down,%i,%s", ev->button, n);
         _edje_emit(ed, buf, rp->part->name);
+
+        /* Link Pressed effect */
+        if (_edje_entry_style_tag_check(rp, "link_pressed="))
+          {
+             an->en->have_link_pressed = EINA_TRUE;
+             evas_textblock_cursor_format_append(an->start, "<link_pressed>");
+             evas_textblock_cursor_format_prepend(an->end, "</>");
+          }
      }
    ev->event_flags |= rp->part->mask_flags;
 }
@@ -826,8 +857,29 @@ _edje_anchor_mouse_up_cb(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EINA_
           {
              snprintf(buf, len, "anchor,mouse,up,%i,%s", ev->button, n);
              _edje_emit(ed, buf, rp->part->name);
+             /* Link Pressed effect */
+             if (an->en->have_link_pressed)
+               {
+                  const Evas_Object_Textblock_Node_Format *node;
+                  node = evas_textblock_node_format_first_get(rp->object);
+                  for (; node; node = 
evas_textblock_node_format_next_get(node))
+                    {
+                        const char *text = 
evas_textblock_node_format_text_get(node);
+
+                        if (text)
+                          {
+                             if (!strcmp(text, "+ link_pressed"))
+                               {
+                                  
evas_textblock_node_format_remove_pair(rp->object,
+                                           (Evas_Object_Textblock_Node_Format 
*)node);
+                                  break;
+                               }
+                          }
+                    }
+               }
           }
      }
+
    if ((rp->still_in) && (rp->clicked_button == ev->button) && (!ignored))
      {
         snprintf(buf, len, "anchor,mouse,clicked,%i,%s", ev->button, n);

-- 


Reply via email to