fixed plugin image size problem
[framework/uifw/elementary.git] / src / edje_externals / elm.c
index 7f5193a..ced69b8 100644 (file)
@@ -1,7 +1,7 @@
 #include "Elementary.h"
 #include "private.h"
 
-int _elm_log_dom = -1;
+int _elm_ext_log_dom = -1;
 
 static int init_count = 0;
 
@@ -36,39 +36,39 @@ _external_obj_del(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj
 }
 
 void
-external_signal(void *data __UNUSED__, Evas_Object *obj, const char *signal, const char *source)
+external_signal(void *data __UNUSED__, Evas_Object *obj, const char *sig, const char *source)
 {
-       char *_signal = strdup(signal);
-       char *p = _signal;
-       Evas_Object *content;
-
-       while((*p!='\0') && (*p!=']'))
-               p++;
-
-
-       if((*p=='\0') || (*(p+1)!=':'))
-       {
-               ERR("Invalid External Signal received: '%s' '%s'\n", signal, source);
-               free(_signal);
-               return ;
-       }
-
-       *p = '\0';
-       p+=2; //jump ']' and ':'
-
-       Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
-       if (!type->content_get)
-       {
-               ERR("external type '%s' from module '%s' does not provide content_get()",
-                               type->module_name, type->module);
-               free(_signal);
-               return ;
-       }
-
-       content = type->content_get(type->data, obj, _signal);
-       free(_signal);
-       if(content)
-               edje_object_signal_emit(content, signal + (p - _signal), source);
+   char *_signal = strdup(sig);
+   char *p = _signal;
+   Evas_Object *content;
+
+   while ((*p!='\0') && (*p!=']'))
+     p++;
+
+
+   if ((*p=='\0') || (*(p+1)!=':'))
+     {
+        ERR("Invalid External Signal received: '%s' '%s'\n", sig, source);
+        free(_signal);
+        return ;
+     }
+
+   *p = '\0';
+   p+=2; //jump ']' and ':'
+
+   Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
+   if (!type->content_get)
+     {
+        ERR("external type '%s' from module '%s' does not provide content_get()",
+            type->module_name, type->module);
+        free(_signal);
+        return ;
+     }
+
+   content = type->content_get(type->data, obj, _signal);
+   free(_signal);
+   if (content)
+     edje_object_signal_emit(content, sig + (p - _signal), source);
 }
 
 const char *
@@ -112,6 +112,14 @@ external_common_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_Ex
              return EINA_TRUE;
           }
      }
+   else if (!strcmp(param->name, "disabled"))
+     {
+        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+          {
+             param->i = elm_object_disabled_get(obj);
+             return EINA_TRUE;
+          }
+     }
    return EINA_FALSE;
 }
 
@@ -126,6 +134,14 @@ external_common_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_Ex
               return EINA_TRUE;
            }
      }
+   else if (!strcmp(param->name, "disabled"))
+     {
+         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+           {
+              elm_object_disabled_set(obj, param->i);
+              return EINA_TRUE;
+           }
+     }
    return EINA_FALSE;
 }
 
@@ -144,7 +160,7 @@ external_signals_proxy(Evas_Object *obj, Evas_Object *edje, const char *part_nam
    ctxt = malloc(sizeof(Elm_External_Signals_Proxy_Context) * total);
    if (!ctxt) return;
    evas_object_event_callback_add
-     (obj, EVAS_CALLBACK_DEL, _external_signal_proxy_free_cb, ctxt);
+     (obj, EVAS_CALLBACK_FREE, _external_signal_proxy_free_cb, ctxt);
 
    for (; cls_count > 0; cls_count--,  cls_descs++, ctxt++)
      {
@@ -180,9 +196,11 @@ external_common_params_parse(void *mem, void *data __UNUSED__, Evas_Object *obj
    EINA_LIST_FOREACH(params, l, param)
      {
         if (!strcmp(param->name, "style"))
+          p->style = eina_stringshare_add(param->s);
+        else if (!strcmp(param->name, "disabled"))
           {
-             p->style = eina_stringshare_add(param->s);
-             break;
+             p->disabled = param->i;
+             p->disabled_exists = EINA_TRUE;
           }
      }
 }
@@ -197,6 +215,8 @@ external_common_state_set(void *data __UNUSED__, Evas_Object *obj, const void *f
 
    if (p->style)
       elm_object_style_set(obj, p->style);
+   if (p->disabled_exists)
+     elm_object_disabled_set(obj, p->disabled);
 }
 
 Evas_Object *
@@ -282,7 +302,7 @@ static Edje_External_Type_Info elm_external_types[] =
 static Eina_Bool
 elm_mod_init(void)
 {
-   _elm_log_dom = eina_log_domain_register("elm-externals", EINA_COLOR_LIGHTBLUE);
+   _elm_ext_log_dom = eina_log_domain_register("elm-externals", EINA_COLOR_LIGHTBLUE);
    edje_external_type_array_register(elm_external_types);
    return EINA_TRUE;
 }
@@ -291,8 +311,8 @@ static void
 elm_mod_shutdown(void)
 {
    edje_external_type_array_unregister(elm_external_types);
-   if (_elm_log_dom >= 0) eina_log_domain_unregister(_elm_log_dom);
-   _elm_log_dom = -1;
+   if (_elm_ext_log_dom >= 0) eina_log_domain_unregister(_elm_ext_log_dom);
+   _elm_ext_log_dom = -1;
 }
 
 EINA_MODULE_INIT(elm_mod_init);