forked from enlightenment/efl
and make elm auto-scale much better on the fly - not perfect... but not to
shabby. also in theory should cover theme changes on the fly... haven't tested. SVN revision: 37662
This commit is contained in:
parent
08c021a0c6
commit
ee7131de29
|
@ -242,6 +242,7 @@ extern "C" {
|
|||
};
|
||||
EAPI Evas_Object *elm_anchorview_add(Evas_Object *parent);
|
||||
EAPI void elm_anchorview_text_set(Evas_Object *obj, const char *text);
|
||||
EAPI void elm_anchorview_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
|
||||
EAPI void elm_anchorview_hover_style_set(Evas_Object *obj, const char *style);
|
||||
EAPI void elm_anchorview_hover_end(Evas_Object *obj);
|
||||
/* smart callbacks called:
|
||||
|
@ -264,6 +265,7 @@ extern "C" {
|
|||
};
|
||||
EAPI Evas_Object *elm_anchorblock_add(Evas_Object *parent);
|
||||
EAPI void elm_anchorblock_text_set(Evas_Object *obj, const char *text);
|
||||
EAPI void elm_anchorblock_hover_parent_set(Evas_Object *obj, Evas_Object *parent);
|
||||
EAPI void elm_anchorblock_hover_style_set(Evas_Object *obj, const char *style);
|
||||
EAPI void elm_anchorblock_hover_end(Evas_Object *obj);
|
||||
/* smart callbacks called:
|
||||
|
@ -272,7 +274,7 @@ extern "C" {
|
|||
|
||||
EAPI Evas_Object *elm_bubble_add(Evas_Object *parent);
|
||||
EAPI void elm_bubble_label_set(Evas_Object *obj, const char *label);
|
||||
EAPI void elm_bubble_info_set(Evas_Object *obj, const char *label);
|
||||
EAPI void elm_bubble_info_set(Evas_Object *obj, const char *info);
|
||||
EAPI void elm_bubble_content_set(Evas_Object *obj, Evas_Object *content);
|
||||
EAPI void elm_bubble_icon_set(Evas_Object *obj, Evas_Object *icon);
|
||||
/* smart callbacks called:
|
||||
|
|
|
@ -19,6 +19,13 @@ _del_hook(Evas_Object *obj)
|
|||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
_elm_theme_set(wd->img, "bg", "base", "default");
|
||||
}
|
||||
|
||||
static void
|
||||
_custom_resize(void *data, Evas *a, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
|
@ -54,6 +61,7 @@ elm_bg_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
elm_widget_can_focus_set(obj, 0);
|
||||
|
||||
wd->img = edje_object_add(e);
|
||||
|
|
|
@ -7,9 +7,11 @@ struct _Widget_Data
|
|||
{
|
||||
Evas_Object *bbl;
|
||||
Evas_Object *content, *icon;
|
||||
const char *label, *info;
|
||||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _sub_del(void *data, Evas_Object *obj, void *event_info);
|
||||
|
@ -18,9 +20,21 @@ static void
|
|||
_del_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->label) eina_stringshare_del(wd->label);
|
||||
if (wd->info) eina_stringshare_del(wd->info);
|
||||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
_elm_theme_set(wd->bbl, "bubble", "base", "default");
|
||||
edje_object_part_text_set(wd->bbl, "elm.text", wd->label);
|
||||
edje_object_part_text_set(wd->bbl, "elm.info", wd->info);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_sizing_eval(Evas_Object *obj)
|
||||
{
|
||||
|
@ -76,6 +90,7 @@ elm_bubble_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
|
||||
wd->bbl = edje_object_add(e);
|
||||
_elm_theme_set(wd->bbl, "bubble", "base", "default");
|
||||
|
@ -91,15 +106,21 @@ EAPI void
|
|||
elm_bubble_label_set(Evas_Object *obj, const char *label)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->label) eina_stringshare_del(wd->label);
|
||||
if (label) wd->label = eina_stringshare_add(label);
|
||||
else wd->label = NULL;
|
||||
edje_object_part_text_set(wd->bbl, "elm.text", label);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_bubble_info_set(Evas_Object *obj, const char *label)
|
||||
elm_bubble_info_set(Evas_Object *obj, const char *info)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
edje_object_part_text_set(wd->bbl, "elm.info", label);
|
||||
if (wd->info) eina_stringshare_del(wd->info);
|
||||
if (info) wd->info = eina_stringshare_add(info);
|
||||
else wd->info = NULL;
|
||||
edje_object_part_text_set(wd->bbl, "elm.info", info);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,19 +28,18 @@ _del_hook(Evas_Object *obj)
|
|||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
const char *label;
|
||||
Evas_Object *icon;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
// FIXME: this is wrong. edje needs to handle more of this.
|
||||
label = eina_stringshare_add(wd->label);
|
||||
icon = wd->icon;
|
||||
_elm_theme_set(wd->btn, "x", "base", "default");
|
||||
elm_button_label_set(obj, NULL);
|
||||
elm_button_icon_set(obj, NULL);
|
||||
_elm_theme_set(wd->btn, "button", "base", "default");
|
||||
elm_button_label_set(obj, label);
|
||||
elm_button_icon_set(obj, icon);
|
||||
eina_stringshare_del(label);
|
||||
if (wd->label)
|
||||
edje_object_signal_emit(wd->btn, "elm,state,text,visible", "elm");
|
||||
else
|
||||
edje_object_signal_emit(wd->btn, "elm,state,text,hidden", "elm");
|
||||
if (wd->icon)
|
||||
edje_object_signal_emit(wd->btn, "elm,state,icon,visible", "elm");
|
||||
else
|
||||
edje_object_signal_emit(wd->btn, "elm,state,icon,hidden", "elm");
|
||||
edje_object_part_text_set(wd->btn, "elm.text", wd->label);
|
||||
edje_object_message_signal_process(wd->btn);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
|
@ -75,6 +74,7 @@ _sub_del(void *data, Evas_Object *obj, void *event_info)
|
|||
evas_object_event_callback_del
|
||||
(sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints);
|
||||
wd->icon = NULL;
|
||||
edje_object_message_signal_process(wd->btn);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
}
|
||||
|
@ -148,6 +148,7 @@ elm_button_icon_set(Evas_Object *obj, Evas_Object *icon)
|
|||
edje_object_signal_emit(wd->btn, "elm,state,icon,visible", "elm");
|
||||
evas_object_event_callback_add(icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_changed_size_hints, obj);
|
||||
edje_object_message_signal_process(wd->btn);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -23,6 +23,7 @@ struct _Widget_Data
|
|||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static int _ticker(void *data);
|
||||
static void _signal_clock_val_up(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _signal_clock_val_down(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
|
@ -42,6 +43,14 @@ _del_hook(Evas_Object *obj)
|
|||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
wd->cur.am_pm = !wd->cur.am_pm; /* hack - force update */
|
||||
_time_update(obj);
|
||||
}
|
||||
|
||||
static int
|
||||
_ticker(void *data)
|
||||
{
|
||||
|
@ -350,6 +359,7 @@ elm_clock_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
|
||||
wd->clk = edje_object_add(e);
|
||||
elm_widget_resize_object_set(obj, wd->clk);
|
||||
|
|
|
@ -16,9 +16,11 @@ struct _Widget_Data
|
|||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
static void _on_focus_hook(void *data, Evas_Object *obj);
|
||||
static void _resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static const char *_getbase(Evas_Object *obj);
|
||||
static void _signal_entry_changed(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _signal_selection_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _signal_selection_changed(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
|
@ -36,6 +38,19 @@ _del_hook(Evas_Object *obj)
|
|||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
char *t;
|
||||
t = elm_entry_entry_get(obj);
|
||||
if (t) t = strdup(t);
|
||||
_elm_theme_set(wd->ent, "entry", _getbase(obj), "default");
|
||||
elm_entry_entry_set(obj, t);
|
||||
if (t) free(t);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_elm_win_recalc_job(void *data)
|
||||
{
|
||||
|
@ -95,6 +110,39 @@ _resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
evas_object_geometry_get(wd->ent, NULL, NULL, &ww, &hh);
|
||||
}
|
||||
|
||||
static const char *
|
||||
_getbase(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->editable)
|
||||
{
|
||||
if (wd->password) return "base-password";
|
||||
else
|
||||
{
|
||||
if (wd->single_line) return "base-single";
|
||||
else
|
||||
{
|
||||
if (wd->linewrap) return "base";
|
||||
else return "base-nowrap";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (wd->password) return "base-password";
|
||||
else
|
||||
{
|
||||
if (wd->single_line) return "base-single-noedit";
|
||||
else
|
||||
{
|
||||
if (wd->linewrap) return "base-noedit";
|
||||
else return "base-nowrap-noedit";
|
||||
}
|
||||
}
|
||||
}
|
||||
return "base";
|
||||
}
|
||||
|
||||
static void
|
||||
_signal_entry_changed(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
|
@ -268,6 +316,7 @@ elm_entry_add(Evas_Object *parent)
|
|||
elm_widget_on_focus_hook_set(obj, _on_focus_hook, NULL);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
elm_widget_can_focus_set(obj, 1);
|
||||
|
||||
wd->linewrap = 1;
|
||||
|
@ -295,39 +344,6 @@ elm_entry_add(Evas_Object *parent)
|
|||
return obj;
|
||||
}
|
||||
|
||||
static const char *
|
||||
_getbase(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->editable)
|
||||
{
|
||||
if (wd->password) return "base-password";
|
||||
else
|
||||
{
|
||||
if (wd->single_line) return "base-single";
|
||||
else
|
||||
{
|
||||
if (wd->linewrap) return "base";
|
||||
else return "base-nowrap";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (wd->password) return "base-password";
|
||||
else
|
||||
{
|
||||
if (wd->single_line) return "base-single-noedit";
|
||||
else
|
||||
{
|
||||
if (wd->linewrap) return "base-noedit";
|
||||
else return "base-nowrap-noedit";
|
||||
}
|
||||
}
|
||||
}
|
||||
return "base";
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_entry_single_line_set(Evas_Object *obj, Evas_Bool single_line)
|
||||
{
|
||||
|
@ -366,7 +382,6 @@ elm_entry_entry_set(Evas_Object *obj, const char *entry)
|
|||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
edje_object_part_text_set(wd->ent, "elm.text", entry);
|
||||
|
||||
// debug
|
||||
#if 0
|
||||
{
|
||||
|
|
|
@ -10,6 +10,7 @@ struct _Widget_Data
|
|||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _sub_del(void *data, Evas_Object *obj, void *event_info);
|
||||
|
@ -21,6 +22,12 @@ _del_hook(Evas_Object *obj)
|
|||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_sizing_eval(Evas_Object *obj)
|
||||
{
|
||||
|
@ -66,6 +73,7 @@ elm_frame_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
|
||||
wd->frm = edje_object_add(e);
|
||||
_elm_theme_set(wd->frm, "frame", "base", "default");
|
||||
|
|
|
@ -11,6 +11,7 @@ struct _Widget_Data
|
|||
Evas_Object *offset, *size;
|
||||
Evas_Object *parent, *target;
|
||||
Eina_List *subs;
|
||||
const char *style;
|
||||
};
|
||||
|
||||
struct _Subinfo
|
||||
|
@ -21,9 +22,12 @@ struct _Subinfo
|
|||
|
||||
static void _del_pre_hook(Evas_Object *obj);
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
static void _reval_content(Evas_Object *obj);
|
||||
static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _sub_del(void *data, Evas_Object *obj, void *event_info);
|
||||
static void _hov_show_do(Evas_Object *obj);
|
||||
static void _hov_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _hov_resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _hov_show(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
|
@ -46,6 +50,7 @@ _del_pre_hook(Evas_Object *obj)
|
|||
evas_stringshare_del(si->swallow);
|
||||
free(si);
|
||||
}
|
||||
if (wd->style) eina_stringshare_del(wd->style);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -55,6 +60,22 @@ _del_hook(Evas_Object *obj)
|
|||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
// FIXME: hover contents doesnt seem to propagate resizes properly
|
||||
if (wd->style)
|
||||
_elm_theme_set(wd->cov, "hover", "base", wd->style);
|
||||
else
|
||||
_elm_theme_set(wd->cov, "hover", "base", "default");
|
||||
edje_object_message_signal_process(wd->cov);
|
||||
_reval_content(obj);
|
||||
_sizing_eval(obj);
|
||||
if (evas_object_visible_get(wd->cov)) _hov_show_do(obj);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_sizing_eval(Evas_Object *obj)
|
||||
{
|
||||
|
@ -71,6 +92,18 @@ _sizing_eval(Evas_Object *obj)
|
|||
edje_object_part_swallow(wd->cov, "elm.swallow.size", wd->size);
|
||||
}
|
||||
|
||||
static void
|
||||
_reval_content(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
Eina_List *l;
|
||||
for (l = wd->subs; l; l = l->next)
|
||||
{
|
||||
Subinfo *si = l->data;
|
||||
edje_object_part_swallow(wd->hov, si->swallow, si->obj);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
|
@ -81,7 +114,7 @@ _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
Subinfo *si = l->data;
|
||||
if (si->obj == obj)
|
||||
{
|
||||
edje_object_part_swallow(wd->hov, si->swallow, obj);
|
||||
edje_object_part_swallow(wd->hov, si->swallow, si->obj);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -110,23 +143,10 @@ _sub_del(void *data, Evas_Object *obj, void *event_info)
|
|||
}
|
||||
|
||||
static void
|
||||
_hov_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
_hov_show_do(Evas_Object *obj)
|
||||
{
|
||||
_sizing_eval(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_hov_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
_sizing_eval(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_hov_show(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(data);
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
Eina_List *l;
|
||||
// FIXME: use signals for show for hov
|
||||
if (wd->cov)
|
||||
{
|
||||
evas_object_show(wd->cov);
|
||||
|
@ -145,12 +165,29 @@ _hov_show(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_hov_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
_sizing_eval(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_hov_resize(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
_sizing_eval(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_hov_show(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
_hov_show_do(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_hov_hide(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(data);
|
||||
Eina_List *l;
|
||||
// FIXME: use signals for hide for hov
|
||||
if (wd->cov)
|
||||
{
|
||||
edje_object_signal_emit(wd->cov, "elm,action,hide", "elm");
|
||||
|
@ -229,6 +266,7 @@ elm_hover_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_pre_hook_set(obj, _del_pre_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
|
||||
wd->hov = evas_object_rectangle_add(e);
|
||||
|
@ -329,7 +367,6 @@ elm_hover_content_set(Evas_Object *obj, const char *swallow, Evas_Object *conten
|
|||
{
|
||||
elm_widget_sub_object_add(obj, content);
|
||||
edje_object_part_swallow(wd->cov, buf, content);
|
||||
|
||||
evas_object_event_callback_add(content, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_changed_size_hints, obj);
|
||||
si = ELM_NEW(Subinfo);
|
||||
|
@ -344,6 +381,10 @@ EAPI void
|
|||
elm_hover_style_set(Evas_Object *obj, const char *style)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->style) eina_stringshare_del(wd->style);
|
||||
if (style) wd->style = eina_stringshare_add(style);
|
||||
else wd->style = NULL;
|
||||
_elm_theme_set(wd->cov, "hover", "base", style);
|
||||
_reval_content(obj);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ typedef struct _Widget_Data Widget_Data;
|
|||
struct _Widget_Data
|
||||
{
|
||||
Evas_Object *img;
|
||||
const char *stdicon;
|
||||
Evas_Bool scale_up : 1;
|
||||
Evas_Bool scale_down : 1;
|
||||
Evas_Bool smooth : 1;
|
||||
|
@ -14,6 +15,7 @@ struct _Widget_Data
|
|||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
static void _mouse_up(void *data, Evas_Object *obj, void *event_info);
|
||||
|
||||
|
@ -21,9 +23,19 @@ static void
|
|||
_del_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->stdicon) eina_stringshare_del(wd->stdicon);
|
||||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->stdicon)
|
||||
_elm_theme_icon_set(wd->img, wd->stdicon, "default");
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_sizing_eval(Evas_Object *obj)
|
||||
{
|
||||
|
@ -74,6 +86,7 @@ elm_icon_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
elm_widget_can_focus_set(obj, 0);
|
||||
|
||||
wd->img = _els_smart_icon_add(e);
|
||||
|
@ -97,6 +110,8 @@ elm_icon_file_set(Evas_Object *obj, const char *file, const char *group)
|
|||
const char *p;
|
||||
|
||||
if (!file) return;
|
||||
if (wd->stdicon) eina_stringshare_del(wd->stdicon);
|
||||
wd->stdicon = NULL;
|
||||
if (((p = strrchr(file, '.'))) && (!strcasecmp(p, ".edj")))
|
||||
_els_smart_icon_file_edje_set(wd->img, file, group);
|
||||
else
|
||||
|
@ -110,6 +125,8 @@ elm_icon_standard_set(Evas_Object *obj, const char *name)
|
|||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
|
||||
if (!name) return;
|
||||
if (wd->stdicon) eina_stringshare_del(wd->stdicon);
|
||||
wd->stdicon = eina_stringshare_add(name);
|
||||
_elm_theme_icon_set(wd->img, name, "default");
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ struct _Widget_Data
|
|||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
|
||||
static void
|
||||
|
@ -18,6 +19,12 @@ _del_hook(Evas_Object *obj)
|
|||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_sizing_eval(Evas_Object *obj)
|
||||
{
|
||||
|
@ -41,6 +48,7 @@ elm_label_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
elm_widget_can_focus_set(obj, 0);
|
||||
|
||||
wd->lbl = edje_object_add(e);
|
||||
|
|
|
@ -17,6 +17,7 @@ struct _Subinfo
|
|||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _sub_del(void *data, Evas_Object *obj, void *event_info);
|
||||
|
@ -35,6 +36,12 @@ _del_hook(Evas_Object *obj)
|
|||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_sizing_eval(Evas_Object *obj)
|
||||
{
|
||||
|
@ -97,6 +104,7 @@ elm_layout_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
|
||||
wd->lay = edje_object_add(e);
|
||||
elm_widget_resize_object_set(obj, wd->lay);
|
||||
|
|
|
@ -12,6 +12,7 @@ struct _Widget_Data
|
|||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _show_region_hook(void *data, Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
static void _sub_del(void *data, Evas_Object *obj, void *event_info);
|
||||
|
@ -23,6 +24,14 @@ _del_hook(Evas_Object *obj)
|
|||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
elm_smart_scroller_theme_set(wd->scr, "default");
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_show_region_hook(void *data, Evas_Object *obj)
|
||||
{
|
||||
|
@ -104,6 +113,7 @@ elm_scroller_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
|
||||
wd->scr = elm_smart_scroller_add(e);
|
||||
elm_widget_resize_object_set(obj, wd->scr);
|
||||
|
|
|
@ -9,9 +9,12 @@ struct _Widget_Data
|
|||
Evas_Object *icon;
|
||||
Evas_Bool state;
|
||||
Evas_Bool *statep;
|
||||
const char *label;
|
||||
const char *ontext, *offtext;
|
||||
};
|
||||
|
||||
static void _del_hook(Evas_Object *obj);
|
||||
static void _theme_hook(Evas_Object *obj);
|
||||
static void _sizing_eval(Evas_Object *obj);
|
||||
static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _sub_del(void *data, Evas_Object *obj, void *event_info);
|
||||
|
@ -22,9 +25,36 @@ static void
|
|||
_del_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->label) eina_stringshare_del(wd->label);
|
||||
if (wd->ontext) eina_stringshare_del(wd->ontext);
|
||||
if (wd->offtext) eina_stringshare_del(wd->offtext);
|
||||
free(wd);
|
||||
}
|
||||
|
||||
static void
|
||||
_theme_hook(Evas_Object *obj)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
_elm_theme_set(wd->tgl, "toggle", "base", "default");
|
||||
if (wd->icon)
|
||||
edje_object_signal_emit(wd->tgl, "elm,state,icon,visible", "elm");
|
||||
else
|
||||
edje_object_signal_emit(wd->tgl, "elm,state,icon,hidden", "elm");
|
||||
if (wd->state)
|
||||
edje_object_signal_emit(wd->tgl, "elm,state,toggle,on", "elm");
|
||||
else
|
||||
edje_object_signal_emit(wd->tgl, "elm,state,toggle,off", "elm");
|
||||
if (wd->label)
|
||||
edje_object_signal_emit(wd->tgl, "elm,state,text,visible", "elm");
|
||||
else
|
||||
edje_object_signal_emit(wd->tgl, "elm,state,text,hidden", "elm");
|
||||
edje_object_part_text_set(wd->tgl, "elm.text", wd->label);
|
||||
edje_object_part_text_set(wd->tgl, "elm.ontext", wd->ontext);
|
||||
edje_object_part_text_set(wd->tgl, "elm.offtext", wd->offtext);
|
||||
edje_object_message_signal_process(wd->tgl);
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_sizing_eval(Evas_Object *obj)
|
||||
{
|
||||
|
@ -90,12 +120,17 @@ elm_toggle_add(Evas_Object *parent)
|
|||
obj = elm_widget_add(e);
|
||||
elm_widget_data_set(obj, wd);
|
||||
elm_widget_del_hook_set(obj, _del_hook);
|
||||
elm_widget_theme_hook_set(obj, _theme_hook);
|
||||
|
||||
wd->tgl = edje_object_add(e);
|
||||
_elm_theme_set(wd->tgl, "toggle", "base", "default");
|
||||
wd->ontext = eina_stringshare_add("ON");
|
||||
wd->offtext = eina_stringshare_add("OFF");
|
||||
edje_object_signal_callback_add(wd->tgl, "elm,action,toggle,on", "", _signal_toggle_on, obj);
|
||||
edje_object_signal_callback_add(wd->tgl, "elm,action,toggle,off", "", _signal_toggle_off, obj);
|
||||
elm_widget_resize_object_set(obj, wd->tgl);
|
||||
edje_object_part_text_set(wd->tgl, "elm.ontext", wd->ontext);
|
||||
edje_object_part_text_set(wd->tgl, "elm.offtext", wd->offtext);
|
||||
|
||||
evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
|
||||
|
||||
|
@ -108,14 +143,17 @@ elm_toggle_label_set(Evas_Object *obj, const char *label)
|
|||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
Evas_Coord mw, mh;
|
||||
|
||||
|
||||
if (wd->label) eina_stringshare_del(wd->label);
|
||||
if (label)
|
||||
{
|
||||
wd->label = eina_stringshare_add(label);
|
||||
edje_object_signal_emit(wd->tgl, "elm,state,text,visible", "elm");
|
||||
edje_object_message_signal_process(wd->tgl);
|
||||
}
|
||||
else
|
||||
{
|
||||
wd->label = NULL;
|
||||
edje_object_signal_emit(wd->tgl, "elm,state,text,hidden", "elm");
|
||||
edje_object_message_signal_process(wd->tgl);
|
||||
}
|
||||
|
@ -145,6 +183,12 @@ EAPI void
|
|||
elm_toggle_states_labels_set(Evas_Object *obj, const char *onlabel, const char *offlabel)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (wd->ontext) eina_stringshare_del(wd->ontext);
|
||||
if (wd->offtext) eina_stringshare_del(wd->offtext);
|
||||
if (onlabel) wd->ontext = eina_stringshare_add(onlabel);
|
||||
else wd->ontext = NULL;
|
||||
if (offlabel) wd->offtext = eina_stringshare_add(offlabel);
|
||||
else wd->offtext = NULL;
|
||||
edje_object_part_text_set(wd->tgl, "elm.ontext", onlabel);
|
||||
edje_object_part_text_set(wd->tgl, "elm.offtext", offlabel);
|
||||
_sizing_eval(obj);
|
||||
|
|
|
@ -124,10 +124,10 @@ elm_widget_theme(Evas_Object *obj)
|
|||
Eina_List *l;
|
||||
|
||||
API_ENTRY return;
|
||||
if (sd->theme_func) sd->theme_func(obj);
|
||||
for (l = sd->subobjs; l; l = l->next) elm_widget_theme(l->data);
|
||||
if (sd->resize_obj) elm_widget_theme(sd->resize_obj);
|
||||
if (sd->hover_obj) elm_widget_theme(sd->hover_obj);
|
||||
if (sd->theme_func) sd->theme_func(obj);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -337,6 +337,18 @@ elm_smart_scroller_single_dir_get(Evas_Object *obj)
|
|||
return sd->one_dir_at_a_time;
|
||||
}
|
||||
|
||||
void
|
||||
elm_smart_scroller_theme_set(Evas_Object *obj, const char *style)
|
||||
{
|
||||
API_ENTRY return;
|
||||
_elm_theme_set(sd->edje_obj, "scroller", "base", style);
|
||||
if (sd->pan_obj)
|
||||
edje_object_part_swallow(sd->edje_obj, "elm.swallow.content", sd->pan_obj);
|
||||
sd->vbar_visible = !sd->vbar_visible;
|
||||
sd->hbar_visible = !sd->hbar_visible;
|
||||
_smart_scrollbar_bar_visibility_adjust(sd);
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static void
|
||||
_smart_edje_drag_v(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
|
|
|
@ -23,3 +23,5 @@ void elm_smart_scroller_policy_get (Evas_Object *obj, Elm_Smart_Scr
|
|||
Evas_Object *elm_smart_scroller_edje_object_get (Evas_Object *obj);
|
||||
void elm_smart_scroller_single_dir_set (Evas_Object *obj, Evas_Bool single_dir);
|
||||
Evas_Bool elm_smart_scroller_single_dir_get (Evas_Object *obj);
|
||||
void elm_smart_scroller_theme_set (Evas_Object *obj, const char *style);
|
||||
|
||||
|
|
Loading…
Reference in New Issue