Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_config.c e_config.h e_gadcon.c e_gadcon.h 
        e_int_shelf_config.c e_shelf.c e_widget_button.c 


Log Message:


buttom patch from lok and seb's shelf bug fix.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.273
retrieving revision 1.274
diff -u -3 -r1.273 -r1.274
--- e_config.c  2 Oct 2007 17:25:27 -0000       1.273
+++ e_config.c  5 Oct 2007 06:05:16 -0000       1.274
@@ -107,7 +107,7 @@
 #define T E_Config_Gadcon
 #define D _e_config_gadcon_edd
    E_CONFIG_VAL(D, T, name, STR);
-   E_CONFIG_VAL(D, T, id, STR);
+   E_CONFIG_VAL(D, T, id, INT);
    E_CONFIG_LIST(D, T, clients, _e_config_gadcon_client_edd);
 
    _e_config_shelf_desk_edd = E_CONFIG_DD_NEW("E_Config_Shelf_Desk", 
E_Config_Shelf_Desk);
@@ -124,6 +124,7 @@
 #define T E_Config_Shelf
 #define D _e_config_shelf_edd
    E_CONFIG_VAL(D, T, name, STR);
+   E_CONFIG_VAL(D, T, id, INT);
    E_CONFIG_VAL(D, T, container, INT);
    E_CONFIG_VAL(D, T, zone, INT);
    E_CONFIG_VAL(D, T, layer, INT);
@@ -1231,10 +1232,12 @@
    e_config->gadcons = NULL;
      {
        E_Config_Shelf *cf_es;
+       int             id = 0;
        
 #define CFG_SHELF(_name, _con, _zone, _pop, _lay, _orient, _fita, _fits, 
_style, _size, _overlap, _autohide, _autohide_show_action, _hide_timeout, 
_hide_duration, _desk_show_mode, _desk_list) \
    cf_es = E_NEW(E_Config_Shelf, 1); \
    cf_es->name = evas_stringshare_add(_name); \
+   cf_es->id = ++id; \
    cf_es->container = _con; \
    cf_es->zone = _zone; \
    cf_es->popup = _pop; \
@@ -1252,20 +1255,9 @@
    cf_es->desk_show_mode = _desk_show_mode; \
    cf_es->desk_list = evas_list_append(cf_es->desk_list, cf_es); \
    e_config->shelves = evas_list_append(e_config->shelves, cf_es)
-       /* shelves for 4 zones on head 0 by default */
        CFG_SHELF("shelf", 0, 0,
                  1, 200, E_GADCON_ORIENT_BOTTOM,
                  1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
-       CFG_SHELF("shelf", 0, 1,
-                 1, 200, E_GADCON_ORIENT_BOTTOM,
-                 1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
-       CFG_SHELF("shelf", 0, 2,
-                 1, 200, E_GADCON_ORIENT_BOTTOM,
-                 1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
-       CFG_SHELF("shelf", 0, 3,
-                 1, 200, E_GADCON_ORIENT_BOTTOM,
-                 1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
-       /* shelves for heada 1, 2, and 3 by default */
        CFG_SHELF("shelf", 1, 0,
                  1, 200, E_GADCON_ORIENT_BOTTOM,
                  1, 0, "default", 40, 0, 0, 0, 1.0, 1.0, 0, NULL);
@@ -1346,16 +1338,17 @@
    e_config->desklock_custom_desklock_cmd = NULL;     
    IFCFGEND;
 
-   IFCFG(0x0107); /* the version # where this value(s) was introduced */
+   IFCFG(0x0121);
      {
-       E_Config_Gadcon *cf_gc;
+       E_Config_Gadcon        *cf_gc;
        E_Config_Gadcon_Client *cf_gcc;
+       int                     id = 0;
 
        e_config->gadcons = NULL;
-#define CFG_GADCON(_name, _id) \
+#define CFG_GADCON(_name) \
    cf_gc = E_NEW(E_Config_Gadcon, 1);\
    cf_gc->name = evas_stringshare_add(_name); \
-   cf_gc->id = evas_stringshare_add(_id); \
+   cf_gc->id = ++id; \
    e_config->gadcons = evas_list_append(e_config->gadcons, cf_gc)
 #define CFG_GADCON_CLIENT(_name, _res, _size, _pos, _style, _autoscr, 
_resizable) \
    cf_gcc = E_NEW(E_Config_Gadcon_Client, 1); \
@@ -1373,7 +1366,7 @@
    cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc)
 
        /* the default shelf on the default head/zone */
-       CFG_GADCON("shelf", "0");
+       CFG_GADCON("shelf");
        CFG_GADCON_CLIENT("start", 800, 32,
                          0, NULL, 0, 0);
        CFG_GADCON_CLIENT("pager", 800, 120,
@@ -1391,19 +1384,19 @@
        CFG_GADCON_CLIENT("clock", 800, 32,
                          800 - 32, NULL, 0, 0);
        /* additional shelves for up to 3 more heads by default */
-       CFG_GADCON("shelf", "1");
+       CFG_GADCON("shelf");
        CFG_GADCON_CLIENT("pager", 800, 120,
                          0, NULL, 0, 0);
        CFG_GADCON_CLIENT("ibox", 800, 32,
                          800 - 32, NULL, 0, 0);
        
-       CFG_GADCON("shelf", "2");
+       CFG_GADCON("shelf");
        CFG_GADCON_CLIENT("pager", 800, 120,
                          0, NULL, 0, 0);
        CFG_GADCON_CLIENT("ibox", 800, 32,
                          800 - 32, NULL, 0, 0);
        
-       CFG_GADCON("shelf", "3");
+       CFG_GADCON("shelf");
        CFG_GADCON_CLIENT("pager", 800, 120,
                          0, NULL, 0, 0);
        CFG_GADCON_CLIENT("ibox", 800, 32,
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_config.h,v
retrieving revision 1.163
retrieving revision 1.164
diff -u -3 -r1.163 -r1.164
--- e_config.h  25 Sep 2007 14:26:36 -0000      1.163
+++ e_config.h  5 Oct 2007 06:05:16 -0000       1.164
@@ -33,7 +33,7 @@
 /* increment this whenever a new set of config values are added but the users
  * config doesn't need to be wiped - simply new values need to be put in
  */
-#define E_CONFIG_FILE_GENERATION 0x0120
+#define E_CONFIG_FILE_GENERATION 0x0121
 #define E_CONFIG_FILE_VERSION    ((E_CONFIG_FILE_EPOCH << 16) | 
E_CONFIG_FILE_GENERATION)
 
 #define E_EVAS_ENGINE_DEFAULT      0
@@ -356,7 +356,7 @@
 struct _E_Config_Gadcon
 {
    const char *name;
-   const char *id;
+   int         id;
    Evas_List  *clients;
 };
 
@@ -378,6 +378,7 @@
 struct _E_Config_Shelf
 {
    const char   *name;
+   int           id;
    int           container, zone;
    int           layer;
    unsigned char popup;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -3 -r1.82 -r1.83
--- e_gadcon.c  16 Sep 2007 00:24:42 -0000      1.82
+++ e_gadcon.c  5 Oct 2007 06:05:16 -0000       1.83
@@ -237,7 +237,7 @@
 }
 
 EAPI E_Gadcon *
-e_gadcon_swallowed_new(const char *name, const char *id, Evas_Object *obj, 
char *swallow_name)
+e_gadcon_swallowed_new(const char *name, int id, Evas_Object *obj, char 
*swallow_name)
 {
    E_Gadcon    *gc;
    Evas_List   *l;
@@ -248,7 +248,7 @@
    if (!gc) return NULL;
  
    gc->name = evas_stringshare_add(name);
-   gc->id = evas_stringshare_add(id);
+   gc->id = id;
    gc->layout_policy = E_GADCON_LAYOUT_POLICY_PANEL;
    
    gc->edje.o_parent = obj;
@@ -282,7 +282,7 @@
 
        cf_gc = l->data;
        if ((!strcmp(cf_gc->name, gc->name)) &&
-           (!strcmp(cf_gc->id, gc->id)))
+           (cf_gc->id == gc->id))
          {
             gc->cf = cf_gc;
             break;
@@ -292,7 +292,7 @@
      {
        gc->cf = E_NEW(E_Config_Gadcon, 1);
        gc->cf->name = evas_stringshare_add(gc->name);
-       gc->cf->id = evas_stringshare_add(gc->id);
+       gc->cf->id = gc->id;
        e_config->gadcons = evas_list_append(e_config->gadcons, gc->cf);
        e_config_save_queue();
      }
@@ -1332,7 +1332,6 @@
    gadcons = evas_list_remove(gadcons, gc);
    if (gc->o_container) evas_object_del(gc->o_container);
    evas_stringshare_del(gc->name);
-   evas_stringshare_del(gc->id);
    evas_stringshare_del(gc->edje.swallow_name);
    if (gc->config_dialog) e_object_del(E_OBJECT(gc->config_dialog));
    if (gc->drop_handler) e_drop_handler_del(gc->drop_handler);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- e_gadcon.h  16 Sep 2007 00:02:52 -0000      1.40
+++ e_gadcon.h  5 Oct 2007 06:05:16 -0000       1.41
@@ -50,7 +50,7 @@
    E_Object             e_obj_inherit;
 
    const char          *name;
-   const char          *id;
+   int                  id;
    
    E_Gadcon_Layout_Policy layout_policy;
    
@@ -171,7 +171,7 @@
 EAPI void             e_gadcon_provider_register(const E_Gadcon_Client_Class 
*cc);
 EAPI void             e_gadcon_provider_unregister(const E_Gadcon_Client_Class 
*cc);
 EAPI Evas_List       *e_gadcon_provider_list(void);
-EAPI E_Gadcon        *e_gadcon_swallowed_new(const char *name, const char *id, 
Evas_Object *obj, char *swallow_name);
+EAPI E_Gadcon        *e_gadcon_swallowed_new(const char *name, int id, 
Evas_Object *obj, char *swallow_name);
 EAPI void             e_gadcon_swallowed_min_size_set(E_Gadcon *gc, Evas_Coord 
w, Evas_Coord h);
 EAPI void             e_gadcon_min_size_request_callback_set(E_Gadcon *gc, 
void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void 
*data);
 EAPI void             e_gadcon_size_request_callback_set(E_Gadcon *gc, void 
(*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_shelf_config.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- e_int_shelf_config.c        14 Sep 2007 23:28:58 -0000      1.32
+++ e_int_shelf_config.c        5 Oct 2007 06:05:16 -0000       1.33
@@ -224,7 +224,6 @@
 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
    E_Zone *zone;
-   int id;
 
    switch (cfdata->mode)
      {
@@ -276,13 +275,13 @@
    cfdata->size = cfdata->basic_size;
    
    zone = cfdata->es->zone;
-   id = cfdata->es->id;
    cfdata->es->config_dialog = NULL;
    e_object_del(E_OBJECT(cfdata->es));
    cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name, 
                                 cfdata->escfg->style,
                                 cfdata->escfg->popup,
-                                cfdata->escfg->layer, id);
+                                cfdata->escfg->layer,
+                                cfdata->escfg->id);
    cfdata->es->cfg = cfdata->escfg;
    cfdata->es->fit_along = cfdata->escfg->fit_along;
    cfdata->es->fit_size = cfdata->escfg->fit_size;
@@ -300,7 +299,7 @@
 _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) 
 {
    E_Zone *zone;
-   int id, idx;
+   int idx;
    int restart = 0;
 
    /* Only change style is we need to */
@@ -430,14 +429,14 @@
    if (restart) 
      {
        zone = cfdata->es->zone;
-       id = cfdata->es->id;
        cfdata->es->config_dialog = NULL;
        e_object_del(E_OBJECT(cfdata->es));
        
        cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name, 
                                      cfdata->escfg->style,
                                      cfdata->escfg->popup,
-                                     cfdata->escfg->layer, id);
+                                     cfdata->escfg->layer,
+                                     cfdata->escfg->id);
        cfdata->es->cfg = cfdata->escfg;
        cfdata->es->fit_along = cfdata->escfg->fit_along;
        cfdata->es->fit_size = cfdata->escfg->fit_size;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_shelf.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -3 -r1.71 -r1.72
--- e_shelf.c   1 Oct 2007 21:22:51 -0000       1.71
+++ e_shelf.c   5 Oct 2007 06:05:16 -0000       1.72
@@ -54,6 +54,7 @@
 e_shelf_config_init(void)
 {
    Evas_List *l;
+   int id = 0;
 
    while (shelves)
      {
@@ -69,13 +70,15 @@
        E_Zone *zone;
        
        cf_es = l->data;
+       if (cf_es->id <= 0) cf_es->id = id + 1;
        zone = e_util_container_zone_number_get(cf_es->container, cf_es->zone);
+       id = cf_es->id;
        if (zone)
          {
             E_Shelf *es;
-            
+
             es = e_shelf_zone_new(zone, cf_es->name, cf_es->style,
-                                  cf_es->popup, cf_es->layer, -1);
+                                  cf_es->popup, cf_es->layer, cf_es->id);
             if (es)
               {
                  if (!cf_es->hide_timeout) cf_es->hide_timeout = 1.0; 
@@ -132,6 +135,7 @@
    
    es = E_OBJECT_ALLOC(E_Shelf, E_SHELF_TYPE, _e_shelf_free);
    if (!es) return NULL;
+   es->id = id;
 
    es->x = 0;
    es->y = 0;
@@ -192,13 +196,8 @@
        evas_object_layer_set(es->o_event, layer);
        evas_object_layer_set(es->o_base, layer);
      }
-   if (id < 0)
-     es->id = evas_list_count(shelves);
-   else
-     es->id = id;
 
-   snprintf(buf, sizeof(buf), "%i", es->id);
-   es->gadcon = e_gadcon_swallowed_new(es->name, buf, es->o_base, 
"e.swallow.content");
+   es->gadcon = e_gadcon_swallowed_new(es->name, es->id, es->o_base, 
"e.swallow.content");
    e_gadcon_min_size_request_callback_set(es->gadcon,
                                          _e_shelf_gadcon_min_size_request, es);
 
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_button.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- e_widget_button.c   7 Aug 2007 14:20:47 -0000       1.16
+++ e_widget_button.c   5 Oct 2007 06:05:16 -0000       1.17
@@ -3,6 +3,13 @@
  */
 #include "e.h"
 
+typedef enum _E_Widget_Button_Type E_Widget_Button_Type;
+enum _E_Widget_Button_Type
+{
+   E_WIDGET_BUTTON_TEXT = 1 << 0,
+   E_WIDGET_BUTTON_ICON = 1 << 1
+};
+
 typedef struct _E_Widget_Data E_Widget_Data;
 struct _E_Widget_Data
 {
@@ -11,6 +18,7 @@
    void (*func) (void *data, void *data2);
    void *data;
    void *data2;   
+   E_Widget_Button_Type type;
 };
 
 static void _e_wid_del_hook(Evas_Object *obj);
@@ -19,6 +27,7 @@
 static void _e_wid_disable_hook(Evas_Object *obj);
 static void _e_wid_signal_cb1(void *data, Evas_Object *obj, const char 
*emission, const char *source);
 static void _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
+static void _e_wid_button_state_send(E_Widget_Data *wd);
 /* local subsystem functions */
 
 /* externally accessible functions */
@@ -46,7 +55,11 @@
    e_theme_edje_object_set(o, "base/theme/widgets",
                           "e/widgets/button");
    edje_object_signal_callback_add(o, "e,action,click", "", _e_wid_signal_cb1, 
obj);
-   edje_object_part_text_set(o, "e.text.label", label);
+   if (label && label[0] != 0)
+     {
+       edje_object_part_text_set(o, "e.text.label", label);
+       wd->type |= E_WIDGET_BUTTON_TEXT;
+     }
    evas_object_show(o);
    
    e_widget_sub_object_add(obj, o);
@@ -59,12 +72,12 @@
        wd->o_icon = o;
        e_util_edje_icon_set(o, icon);
        edje_object_part_swallow(wd->o_button, "e.swallow.icon", o);
-       edje_object_signal_emit(wd->o_button, "e,action,show,icon", "e");
-       edje_object_message_signal_process(wd->o_button);
        evas_object_show(o);
        e_widget_sub_object_add(obj, o);
+       wd->type |= E_WIDGET_BUTTON_ICON;
      }
-   
+
+   _e_wid_button_state_send(wd);
    edje_object_size_min_calc(wd->o_button, &mw, &mh);
    e_widget_min_size_set(obj, mw, mh);
    
@@ -78,6 +91,11 @@
 
    wd = e_widget_data_get(obj);
    edje_object_part_text_set(wd->o_button, "e.text.label", label);
+   if (label && label[0] != 0)
+     wd->type |= E_WIDGET_BUTTON_TEXT;
+   else
+     wd->type = ~(wd->type & E_WIDGET_BUTTON_TEXT);
+   _e_wid_button_state_send(wd);
 }
 
 EAPI void
@@ -90,8 +108,6 @@
      {
        e_widget_sub_object_del(obj, wd->o_icon);
        evas_object_hide(wd->o_icon);
-       edje_object_signal_emit(wd->o_button, "e,action,hide,icon", "e");
-       edje_object_message_signal_process(wd->o_button);
        edje_object_part_unswallow(wd->o_button, wd->o_icon);
        evas_object_del(wd->o_icon);
        wd->o_icon = NULL;
@@ -100,12 +116,14 @@
      {
        wd->o_icon = icon;
        edje_object_part_swallow(wd->o_button, "e.swallow.icon", icon);
-       edje_object_signal_emit(wd->o_button, "e,action,show,icon", "e");
-       edje_object_message_signal_process(wd->o_button);
        evas_object_pass_events_set(icon, 1);
        evas_object_show(icon);
        e_widget_sub_object_add(obj, icon);
+       wd->type |= E_WIDGET_BUTTON_ICON;
      }
+   else
+     wd->type = ~(wd->type & E_WIDGET_BUTTON_ICON);
+   _e_wid_button_state_send(wd);
 }
 
 static void
@@ -172,4 +190,26 @@
 _e_wid_focus_steal(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
    e_widget_focus_steal(data);
+}
+
+static void
+_e_wid_button_state_send(E_Widget_Data *wd)
+{
+   if (!wd || !wd->o_button) return;
+   if (wd->type & E_WIDGET_BUTTON_TEXT)
+     {
+       if (wd->type & E_WIDGET_BUTTON_ICON)
+         {
+         edje_object_signal_emit(wd->o_button, "e,state,combo", "e");
+         }
+       else
+         {
+         edje_object_signal_emit(wd->o_button, "e,state,text", "e");
+         }
+     }
+   else if (wd->type & E_WIDGET_BUTTON_ICON)
+     {
+       edje_object_signal_emit(wd->o_button, "e,state,icon", "e");
+     }
+   edje_object_message_signal_process(wd->o_button);
 }



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to