entry: elm_entry_markup_filter_remove() has a problem when internally defined filters...
authorYoungbok Shin <youngb.shin@samsung.com>
Tue, 21 May 2013 07:25:55 +0000 (16:25 +0900)
committerSungho Kwak <sungho1.kwak@samsung.com>
Wed, 12 Jun 2013 05:01:46 +0000 (14:01 +0900)
src/lib/elm_entry.c
src/lib/elm_widget_entry.h

index fe88e0f..4528ef4 100644 (file)
@@ -935,6 +935,7 @@ _filter_new(Elm_Entry_Filter_Cb func,
    if (!tf) return NULL;
 
    tf->func = func;
+   tf->orig_data = data;
    if (func == elm_entry_filter_limit_size)
      {
         Elm_Entry_Filter_Limit_Size *lim = data, *lim2;
@@ -4809,7 +4810,7 @@ elm_entry_markup_filter_remove(Evas_Object *obj,
 
    EINA_LIST_FOREACH(sd->markup_filters, l, tf)
      {
-        if ((tf->func == func) && ((!data) || (tf->data == data)))
+        if ((tf->func == func) && ((!data) || (tf->orig_data == data)))
           {
              sd->markup_filters = eina_list_remove_list(sd->markup_filters, l);
              _filter_free(tf);
index da778dd..e53996b 100644 (file)
@@ -246,6 +246,7 @@ struct _Elm_Entry_Markup_Filter
 {
    Elm_Entry_Filter_Cb func;
    void               *data;
+   void               *orig_data;
 };
 
 typedef enum _Length_Unit