static void _resize_cb(void *data, Evas *evas, Evas_Object *obj, void *event);\r
static void _event_init(Evas_Object *obj);\r
static void _contracted_state_set(Evas_Object *obj, int contracted);\r
-static void _view_update(Evas_Object *obj, Eina_Bool focused);\r
+static void _view_update(Evas_Object *obj);\r
static void _set_label(Evas_Object *obj, const char* str);\r
static void _change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State state);\r
static void _change_current_button(Evas_Object *obj, Evas_Object *btn);\r
static void _add_button(Evas_Object *obj, char *str);\r
static void _evas_key_up_cb(void *data, Evas *e , Evas_Object *obj , void *event_info );\r
static void _view_init(Evas_Object *obj);\r
-//static void _entry_focused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__);\r
-//static void _entry_unfocused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__);\r
\r
static void\r
_del_hook(Evas_Object *obj)\r
\r
if (!elm_widget_focus_get(obj) && !(elm_widget_disabled_get(obj)))\r
{\r
- _view_update(obj, EINA_FALSE);\r
+ wd->focused = EINA_FALSE;\r
+ _view_update(obj);\r
evas_object_smart_callback_call(obj, "unfocused", NULL);\r
}\r
}\r
Widget_Data *wd = elm_widget_data_get(data);\r
if(!wd || !wd->base) return;\r
\r
- _view_update(data, EINA_TRUE);\r
+ wd->focused = EINA_TRUE;\r
+ _view_update(data);\r
evas_object_smart_callback_call(data, "clicked", NULL);\r
}\r
\r
wd->w_box = w;\r
wd->h_box = h;\r
\r
- //_view_update(data, EINA_FALSE);\r
+ _view_update(data);\r
}\r
\r
static void\r
evas_object_event_callback_add(wd->box, EVAS_CALLBACK_RESIZE, _resize_cb, obj);\r
evas_object_event_callback_add(wd->box, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hint_cb, obj);\r
}\r
-\r
-/*\r
- if (wd->entry)\r
- {\r
- evas_object_smart_callback_add(wd->entry, "focused", _entry_focused, obj);\r
- evas_object_smart_callback_add(wd->entry, "unfocused", _entry_unfocused, obj);\r
- }\r
-*/\r
}\r
\r
static void\r
}\r
\r
static void \r
-_view_update(Evas_Object *obj, Eina_Bool focused)\r
-{ \r
+_view_update(Evas_Object *obj)\r
+{\r
+ Evas_Coord room = 0, w = 0;\r
Widget_Data *wd = elm_widget_data_get(obj); \r
- if (!wd || !wd->box || !wd->entry) return;\r
+ if (!wd || !wd->box || !wd->entry || !(wd->w_box > 0)) return;\r
\r
+ room = wd->w_box;\r
+ room -= MIN_W_ENTRY;\r
+ \r
+ if (wd->rect)\r
+ {\r
+ evas_object_size_hint_min_get (wd->rect, &w, NULL);\r
+ room -= w;\r
+ }\r
+ \r
+ // update label\r
+ if (wd->label)\r
+ {\r
+ elm_box_unpack(wd->box, wd->label);\r
+ if (wd->rect) elm_box_pack_after (wd->box, wd->label, wd->rect);\r
+ else elm_box_pack_start(wd->box, wd->label);\r
+ evas_object_show(wd->label);\r
+ elm_label_wrap_width_set(wd->label, room); \r
+ evas_object_size_hint_min_get(wd->label, &w, NULL);\r
+ room -= w;\r
+ }\r
+\r
+ if (wd->guidetext)\r
+ evas_object_size_hint_min_set(wd->guidetext, room, 0); \r
+ \r
+ // update buttons in contracted mode\r
if (wd->contracted == 1)\r
{\r
_contracted_state_set(obj, 0);\r
_contracted_state_set(obj, 1);\r
}\r
\r
+ // update guidetext\r
if (wd->contracted != 1)\r
{\r
- if (wd->guidetext && !eina_list_count (wd->items) && !elm_widget_focus_get(obj) && !focused)\r
- {\r
- \r
+ if (wd->guidetext && !eina_list_count (wd->items) && !elm_widget_focus_get(obj) && !wd->focused)\r
+ { \r
elm_box_unpack(wd->box, wd->guidetext);\r
elm_box_unpack(wd->box, wd->entry);\r
evas_object_hide(wd->entry);\r
elm_box_pack_end(wd->box, wd->entry);\r
evas_object_show(wd->entry);\r
\r
- if(elm_widget_focus_get(obj) || focused)\r
+ if(elm_widget_focus_get(obj) || wd->focused)\r
elm_object_focus(wd->entry);\r
}\r
}\r
- \r
-#if 0\r
- if (wd->guidetext && (wd->contracted != 1))\r
- {\r
- if (!eina_list_count (wd->items))\r
- {\r
- if (elm_widget_focus_get (obj) || focused)\r
- {\r
- elm_box_unpack(wd->box, wd->entry);\r
- elm_box_unpack(wd->box, wd->guidetext);\r
- evas_object_hide(wd->guidetext);\r
- \r
- elm_box_pack_end(wd->box, wd->entry);\r
- evas_object_show(wd->entry);\r
- \r
- elm_object_focus(wd->entry);\r
- //elm_widget_focus_set(wd->entry, EINA_TRUE); //FIXME\r
- }\r
- else\r
- {\r
- elm_box_unpack(wd->box, wd->guidetext);\r
- elm_box_unpack(wd->box, wd->entry);\r
- evas_object_hide(wd->entry);\r
-\r
- elm_box_pack_end(wd->box, wd->guidetext); \r
- evas_object_show(wd->guidetext);\r
- }\r
- }\r
- else\r
- {\r
- elm_box_unpack(wd->box, wd->entry);\r
- elm_box_unpack(wd->box, wd->guidetext);\r
- evas_object_hide(wd->guidetext);\r
- \r
- elm_box_pack_end(wd->box, wd->entry);\r
- evas_object_show(wd->entry);\r
- }\r
- }\r
-#endif\r
-}\r
-\r
-/*\r
-static void\r
-_entry_focused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)\r
-{\r
- printf("\n>>>>>>[%s][%d]\n", __FUNCTION__, __LINE__);\r
- //if (data) _view_update (data);\r
-}\r
-\r
-static void\r
-_entry_unfocused(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)\r
-{\r
- printf("\n>>>>>>[%s][%d]\n", __FUNCTION__, __LINE__);\r
- //if (data) _view_update (data);\r
}\r
-*/\r
\r
static void\r
_set_label(Evas_Object *obj, const char* str)\r
if (! (wd->label = elm_label_add (obj))) return;\r
elm_object_style_set(wd->label, "extended/multibuttonentry_default");\r
elm_label_ellipsis_set(wd->label, EINA_TRUE);\r
- elm_label_wrap_width_set(wd->label, 180);\r
elm_label_text_align_set(wd->label, "left");\r
evas_object_size_hint_weight_set(wd->label, 0.0, EVAS_HINT_EXPAND);\r
evas_object_size_hint_align_set(wd->label, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
- if (wd->box)\r
- {\r
- if (wd->rect) elm_box_pack_after (wd->box, wd->label, wd->rect);\r
- else elm_box_pack_start(wd->box, wd->label);\r
- }\r
- evas_object_show(wd->label);\r
}\r
\r
- elm_label_label_set(wd->label, str);\r
- _view_update(obj, EINA_FALSE);\r
+ if (wd->label) elm_label_label_set(wd->label, str);\r
+ _view_update(obj);\r
}\r
\r
static void\r
{\r
if (! (wd->guidetext = edje_object_add (evas_object_evas_get (obj)))) return;\r
_elm_theme_object_set(obj, wd->guidetext, "multibuttonentry", "guidetext", elm_widget_style_get(obj));\r
- evas_object_size_hint_min_set(wd->guidetext, 280, 0);\r
evas_object_size_hint_weight_set(wd->guidetext, 0.0, EVAS_HINT_EXPAND);\r
evas_object_size_hint_align_set(wd->guidetext, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
}\r
\r
if (wd->guidetext) edje_object_part_text_set (wd->guidetext, "elm.text", str);\r
- _view_update(obj, EINA_FALSE);\r
+ _view_update(obj);\r
}\r
\r
static void\r
if(wd->label) elm_box_pack_after(wd->box, btn, wd->label);\r
else if(wd->rect) elm_box_pack_after(wd->box, btn, wd->rect);\r
else elm_box_pack_start(wd->box, btn);\r
- _view_update(obj, EINA_FALSE);\r
+ _view_update(obj);\r
break;\r
case MULTIBUTONENTRY_POS_END:\r
wd->items = eina_list_append(wd->items, item);\r
- _view_update(obj, EINA_FALSE);\r
+ _view_update(obj);\r
elm_box_pack_before(wd->box, btn, wd->entry);\r
break;\r
case MULTIBUTONENTRY_POS_BEFORE:\r
{ \r
wd->items = eina_list_prepend_relative(wd->items, item, reference);\r
elm_box_pack_before(wd->box, btn, reference->button);\r
- _view_update(obj, EINA_FALSE);\r
+ _view_update(obj);\r
}\r
else\r
{\r
wd->items = eina_list_append(wd->items, item);\r
- _view_update(obj, EINA_FALSE);\r
+ _view_update(obj);\r
elm_box_pack_before(wd->box, btn, wd->entry);\r
}\r
break;\r
{ \r
wd->items = eina_list_append_relative(wd->items, item, reference);\r
elm_box_pack_after(wd->box, btn, reference->button);\r
- _view_update(obj, EINA_FALSE); }\r
+ _view_update(obj); }\r
else\r
{ \r
wd->items = eina_list_append(wd->items, item);\r
- _view_update(obj, EINA_FALSE);\r
+ _view_update(obj);\r
elm_box_pack_before(wd->box, btn, wd->entry);\r
}\r
break;\r
elm_widget_resize_object_set(obj, wd->base);\r
\r
wd->contracted = 0;\r
+ wd->focused = EINA_FALSE;\r
wd->n_str = 0;\r
\r
_view_init(obj);\r