Elm toolbar: Fix brokeness introduced by commit 65708.

Disabled is a property of Elm_Object_Item and was a property of
Elm_Toolbar_Item as well. The aforementioned commit didn't remove the
property from the latter and then used both properties in an
inconsistent manner which caused data not to be up to date.

SVN revision: 65989
This commit is contained in:
Tom Hacohen 2011-12-07 12:56:34 +00:00
parent 33cb46d033
commit 291f7087e6
1 changed files with 12 additions and 9 deletions

View File

@ -4,6 +4,10 @@
#include "els_box.h"
#include "els_icon.h"
/* FIXME: I couldn't find a macro for it, this should be fixed.
* Just doing this commit to fix the brokeness that was introduced. */
#define BASE(it) (&(it)->base)
typedef struct _Widget_Data Widget_Data;
typedef struct _Elm_Toolbar_Item Elm_Toolbar_Item;
@ -40,7 +44,6 @@ struct _Elm_Toolbar_Item
Eina_Bool visible : 1;
} prio;
Eina_Bool selected : 1;
Eina_Bool disabled : 1;
Eina_Bool separator : 1;
Eina_Bool menu : 1;
Eina_List *states;
@ -150,7 +153,7 @@ _item_select(Elm_Toolbar_Item *it)
Eina_Bool sel;
if (!wd) return;
if ((it->disabled) || (it->separator)) return;
if ((BASE(it)->disabled) || (it->separator)) return;
sel = it->selected;
if (!wd->no_select)
@ -223,9 +226,9 @@ _item_disable(Elm_Toolbar_Item *it, Eina_Bool disabled)
Widget_Data *wd = elm_widget_data_get(WIDGET(it));
if (!wd) return;
if (it->disabled == disabled) return;
it->disabled = !!disabled;
if (it->disabled)
if (BASE(it)->disabled == disabled) return;
BASE(it)->disabled = !!disabled;
if (BASE(it)->disabled)
{
edje_object_signal_emit(VIEW(it), "elm,state,disabled", "elm");
elm_widget_signal_emit(it->icon, "elm,state,disabled", "elm");
@ -317,7 +320,7 @@ _theme_hook_item(Evas_Object *obj, Elm_Toolbar_Item *it, double scale, int icon_
edje_object_signal_emit(view, "elm,state,selected", "elm");
elm_widget_signal_emit(it->icon, "elm,state,selected", "elm");
}
if (it->disabled)
if (BASE(it)->disabled)
{
edje_object_signal_emit(view, "elm,state,disabled", "elm");
elm_widget_signal_emit(it->icon, "elm,state,disabled", "elm");
@ -540,7 +543,7 @@ _resize_job(void *data)
menu_it = elm_menu_item_add(menu, NULL,
it->icon_str, it->label,
_elm_toolbar_item_menu_cb, it);
elm_object_item_disabled_set(menu_it, it->disabled);
elm_object_item_disabled_set(menu_it, BASE(it)->disabled);
if (it->o_menu)
elm_menu_clone(it->o_menu, menu, menu_it);
}
@ -732,7 +735,7 @@ _access_state_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Widget_
Elm_Toolbar_Item *it = (Elm_Toolbar_Item *)item;
if (it->separator)
return strdup(E_("Separator"));
else if (it->disabled)
else if (BASE(it)->disabled)
return strdup(E_("State: Disabled"));
else if (it->selected)
return strdup(E_("State: Selected"));
@ -1763,7 +1766,7 @@ elm_toolbar_item_state_set(Elm_Object_Item *it, Elm_Toolbar_Item_State *state)
wd->icon_size,
"elm,state,icon_set,backward");
}
if (item->disabled)
if (BASE(item)->disabled)
elm_widget_signal_emit(item->icon, "elm,state,disabled", "elm");
else
elm_widget_signal_emit(item->icon, "elm,state,enabled", "elm");