make frame not suck too much but still doesnt "shade" properly - need

edje feature.



SVN revision: 66894
This commit is contained in:
Carsten Haitzler 2012-01-05 05:26:36 +00:00
parent 94a1a87560
commit cd74c94bf1
2 changed files with 48 additions and 47 deletions

View File

@ -63,22 +63,12 @@ group { name: "elm/frame/base/default";
}
}
}
part {
name: "clip";
type: RECT;
description {
state: "default" 0.0;
min: 1 1;
rel1.to: "over";
rel2.to: "over";
}
}
part { name: "over";
mouse_events: 0;
description { state: "default" 0.0;
min: 2 2;
rel1.offset: 4 4;
rel2.to: "elm.swallow.content";
rel2.to: "clip";
rel2.offset: 5 5;
image {
normal: "frame_1.png";
@ -87,17 +77,12 @@ group { name: "elm/frame/base/default";
}
fill.smooth : 0;
}
description { state: "collapsed" 0.0;
inherit: "default" 0.0;
rel2.to_y: "elm.text";
rel2.offset: 5 0;
}
}
part { name: "elm.swallow.content";
type: SWALLOW;
clip_to: "clip";
description { state: "default" 0.0;
align: 0.0 0.0;
part {
name: "clip";
type: RECT;
description {
state: "default" 0.0;
rel1 {
to_y: "elm.text";
relative: 0.0 1.0;
@ -106,14 +91,31 @@ group { name: "elm/frame/base/default";
rel2.offset: -9 -9;
}
}
part { name: "elm.swallow.content";
type: SWALLOW;
clip_to: "clip";
description { state: "default" 0.0;
align: 0.0 1.0;
rel1 {
to: "clip";
relative: 0.0 0.0;
}
rel2.to: "clip";
}
description { state: "collapsed" 0.0;
inherit: "default" 0.0;
// rel1.relative: 0.0 1.0;
rel1.offset: 0 -100;
}
}
part { name: "event";
type: RECT;
mouse_events: 1;
repeat_events: 1;
ignore_flags: ON_HOLD;
description { state: "default" 0.0;
color: 0 0 0 0;
rel1.to: "elm.text";
rel2.to: "elm.text";
rel1.to_y: "elm.text";
rel2.to_y: "elm.text";
}
}
}
@ -138,16 +140,14 @@ group { name: "elm/frame/base/default";
}
program { name: "collapse";
action: STATE_SET "collapsed" 0.0;
target: "over";
target: "base";
transition: LINEAR 0.1;
target: "elm.swallow.content";
transition: LINEAR 1.0;
after: "signal";
}
program { name: "expand";
action: STATE_SET "default" 0.0;
target: "over";
target: "base";
transition: LINEAR 0.1;
target: "elm.swallow.content";
transition: LINEAR 1.0;
after: "signal";
}
program { name: "signal";

View File

@ -83,12 +83,10 @@ _sizing_eval(Evas_Object *obj)
Evas_Coord minw = -1, minh = -1;
Evas_Coord cminw = -1, cminh = -1;
if (!wd) return;
if (wd->anim)
if (wd->recalc_count++ != 40) return;
wd->recalc_count = 0;
edje_object_size_min_calc(wd->frm, &minw, &minh);
evas_object_size_hint_min_get(obj, &cminw, &cminh);
if ((minw == cminw) && (minh == cminh)) return;
printf("min: %3.3f %ix%i\n", ecore_loop_time_get(), minw, minh);
evas_object_size_hint_min_set(obj, minw, minh);
evas_object_size_hint_max_set(obj, -1, -1);
}
@ -197,31 +195,33 @@ _content_unset_hook(Evas_Object *obj, const char *part)
}
static void
_recalc(Evas_Object *fr, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
_recalc(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
_sizing_eval(fr);
printf("recalc %3.3f\n", ecore_loop_time_get());
_sizing_eval(data);
}
static void
_recalc_done(Evas_Object *fr, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
_recalc_done(void *data, Evas_Object *obj __UNUSED__, const char *sig __UNUSED__, const char *src __UNUSED__)
{
Widget_Data *wd;
wd = elm_widget_data_get(fr);
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
evas_object_smart_callback_del(wd->frm, "recalc", (Evas_Smart_Cb)_recalc);
printf("recalc done %3.3f\n", ecore_loop_time_get());
evas_object_smart_callback_del(wd->frm, "recalc", _recalc);
wd->anim = EINA_FALSE;
_sizing_eval(fr);
_sizing_eval(data);
}
static void
_signal_click(Evas_Object *fr, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
_signal_click(void *data, Evas_Object *obj __UNUSED__, const char *sig __UNUSED__, const char *src __UNUSED__)
{
Widget_Data *wd;
wd = elm_widget_data_get(fr);
Widget_Data *wd = elm_widget_data_get(data);
if (!wd) return;
evas_object_smart_callback_call(fr, SIG_CLICKED, NULL);
if (wd->anim) return;
evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
if (!wd->collapsible) return;
evas_object_smart_callback_add(wd->frm, "recalc", (Evas_Smart_Cb)_recalc, fr);
printf("recalc begin %3.3f\n", ecore_loop_time_get());
evas_object_smart_callback_add(wd->frm, "recalc", _recalc, data);
edje_object_signal_emit(wd->frm, "elm,action,collapse", "elm");
wd->collapsed++;
wd->anim = EINA_TRUE;
@ -255,9 +255,10 @@ elm_frame_add(Evas_Object *parent)
elm_widget_resize_object_set(obj, wd->frm);
evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
evas_object_smart_callback_add(wd->frm, "elm,anim,done", (Evas_Smart_Cb)_recalc_done, obj);
edje_object_signal_callback_add(wd->frm, "elm,anim,done", "elm",
_recalc_done, obj);
edje_object_signal_callback_add(wd->frm, "elm,action,click", "elm",
(Edje_Signal_Cb)_signal_click, obj);
_signal_click, obj);
evas_object_smart_callbacks_descriptions_set(obj, _signals);
_mirrored_set(obj, elm_widget_mirrored_get(obj));