diff --git a/data/elementary/themes/edc/elm/frame.edc b/data/elementary/themes/edc/elm/frame.edc index 3000d906b2..fe7bb800e7 100644 --- a/data/elementary/themes/edc/elm/frame.edc +++ b/data/elementary/themes/edc/elm/frame.edc @@ -11,15 +11,20 @@ group { name: "elm/frame/base/default"; } } WIN_SHAD("base", "shadow", "win_shad_flat.png", 10, 10, 7, 14, 0.25); - part { name: "base"; type: RECT; + part { name: "base"; type: SPACER; scale: 1; description { state: "default" 0.0; rel1.offset: 6 6; rel2.offset: -7 -7; - color: 80 80 80 255; offscale; } } + part { name: "top_bg"; type: RECT; + description { state: "default" 0.0; + rel.to: "top"; + color: 80 80 80 255; + } + } part { name: "top"; type: SPACER; scale: 1; description { state: "default" 0.0; @@ -33,15 +38,14 @@ group { name: "elm/frame/base/default"; part { name: "elm.text"; type: TEXT; scale: 1; description { state: "default" 0.0; + rel.to: "base"; rel1.offset: 4 4; - rel1.to: "base"; rel2.relative: 1.0 0.0; rel2.offset: -5 4; - rel2.to: "base"; align: 0.0 0.0; color: 255 255 255 255; text { font: FNBD; size: 10; - align: 0.0 0.0; + align: 0.0 0.5; min: 0 1; } fixed: 0 1; @@ -133,6 +137,117 @@ group { name: "elm/frame/base/default"; } } +group { name: "elm/frame/base/icon"; + inherit: "elm/frame/base/default"; + parts { + part { name: "elm.swallow.icon"; type: SWALLOW; + insert_after: "top_bg"; + scale: 1; + description { state: "default" 0.0; + rel.to: "base"; + rel1.to_y: "elm.text"; + rel2.to_y: "elm.text"; + rel1.offset: 4 0; + rel2.relative: 0.0 0.0; + rel2.offset: 4 -1; + align: 0.0 0.5; + min: 15 15; + offscale; + } + } + part { name: "elm.text"; + description { state: "default" 0.0; + rel1.to_x: "elm.swallow.icon"; + rel1.relative: 1.0 0.0; + min: 0 15; + } + } + } +} + +group { name: "elm/frame/base/border"; + inherit: "elm/frame/base/icon"; + parts { + part { name: "top_bg"; + description { state: "default" 0.0; + color: 32 32 32 255; + } + } + part { name: "elm.text"; + description { state: "default" 0.0; + rel2.to_x: "close"; + rel2.relative: 0.0 0.0; + min: 0 15; + } + } + part { name: "close"; + scale: 1; + description { state: "default" 0.0; + rel.to: "base"; + rel1.to_y: "elm.text"; + rel2.to_y: "elm.text"; + rel1.offset: -5 0; + rel1.relative: 1.0 0.0; + rel2.offset: -5 -1; + align: 1.0 0.5; + min: 15 15; + max: 15 15; + offscale; + image.normal: "i-close"; + color: 255 255 255 255; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + color: 220 220 220 255; + } + } + program { signal: "mouse,down,1"; source: "close"; + action: STATE_SET "clicked" 0.0; + target: "close"; + } + program { signal: "mouse,up,1"; source: "close"; + action: STATE_SET "default" 0.0; + target: "close"; + } + program { signal: "mouse,clicked,1"; source: "close"; + action: SIGNAL_EMIT "elm,action,click,close" "elm"; + } + } +} + +group { name: "elm/frame/base/overlay"; + inherit: "elm/frame/base/default"; + parts { + part { name: "bg"; + description { state: "default" 0.0; + color: 0 0 0 160; + } + } + } +} + +group { name: "elm/frame/base/icon_overlay"; + inherit: "elm/frame/base/icon"; + parts { + part { name: "bg"; + description { state: "default" 0.0; + color: 0 0 0 160; + } + } + } +} + +group { name: "elm/frame/base/border_overlay"; + inherit: "elm/frame/base/border"; + parts { + part { name: "bg"; + description { state: "default" 0.0; + color: 0 0 0 160; + } + } + } +} + group { name: "elm/frame/base/pad_small"; parts { part { name: "b0"; type: SPACER; diff --git a/src/bin/elementary/test_scaling.c b/src/bin/elementary/test_scaling.c index 84b20c6130..d616fe12fb 100644 --- a/src/bin/elementary/test_scaling.c +++ b/src/bin/elementary/test_scaling.c @@ -89,6 +89,21 @@ test_scaling2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ evas_object_show(fr); fr = elm_frame_add(win); + elm_object_style_set(fr, "icon"); + elm_object_text_set(fr, "Scale: 0.75"); + lb = elm_label_add(win); + elm_object_text_set(lb, + "Parent frame scale
" + "is 0.75. Child should
" + "inherit it."); + elm_object_content_set(fr, lb); + elm_object_scale_set(fr, 0.75); + evas_object_show(lb); + elm_box_pack_end(bx, fr); + evas_object_show(fr); + + fr = elm_frame_add(win); + elm_object_style_set(fr, "border"); elm_object_text_set(fr, "Scale: 1.0"); lb = elm_label_add(win); elm_object_text_set(lb, @@ -102,6 +117,21 @@ test_scaling2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ evas_object_show(fr); fr = elm_frame_add(win); + elm_object_style_set(fr, "overlay"); + elm_object_text_set(fr, "Scale: 1.5"); + lb = elm_label_add(win); + elm_object_text_set(lb, + "Parent frame scale
" + "is 1.5. Child should
" + "inherit it."); + elm_object_content_set(fr, lb); + evas_object_show(lb); + elm_object_scale_set(fr, 1.5); + elm_box_pack_end(bx, fr); + evas_object_show(fr); + + fr = elm_frame_add(win); + elm_object_style_set(fr, "icon_overlay"); elm_object_text_set(fr, "Scale: 2.0"); lb = elm_label_add(win); elm_object_text_set(lb, @@ -114,6 +144,20 @@ test_scaling2(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ elm_box_pack_end(bx, fr); evas_object_show(fr); + fr = elm_frame_add(win); + elm_object_style_set(fr, "border_overlay"); + elm_object_text_set(fr, "Scale: 3.0"); + lb = elm_label_add(win); + elm_object_text_set(lb, + "Parent frame scale
" + "is 3.0. Child should
" + "inherit it."); + elm_object_content_set(fr, lb); + evas_object_show(lb); + elm_object_scale_set(fr, 3.0); + elm_box_pack_end(bx, fr); + evas_object_show(fr); + evas_object_resize(win, 320, 320); evas_object_show(win); } diff --git a/src/lib/elementary/efl_ui_frame.c b/src/lib/elementary/efl_ui_frame.c index 0e6f230d5b..c7ac5c2232 100644 --- a/src/lib/elementary/efl_ui_frame.c +++ b/src/lib/elementary/efl_ui_frame.c @@ -94,6 +94,15 @@ _on_frame_clicked(void *data, evas_object_smart_callback_call(data, "clicked", NULL); } +static void +_on_frame_close(void *data, + Evas_Object *obj EINA_UNUSED, + const char *sig EINA_UNUSED, + const char *src EINA_UNUSED) +{ + evas_object_smart_callback_call(data, "close", NULL); +} + /* using deferred sizing evaluation, just like the parent */ EOLIAN static void _efl_ui_frame_efl_canvas_group_group_calculate(Eo *obj, Efl_Ui_Frame_Data *sd) @@ -139,6 +148,9 @@ _efl_ui_frame_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Frame_Data *_pd EINA_UN edje_object_signal_callback_add (wd->resize_obj, "elm,action,click", "elm", _on_frame_clicked, obj); + edje_object_signal_callback_add + (wd->resize_obj, "elm,action,close", "elm", + _on_frame_close, obj); } else { diff --git a/src/lib/elementary/elm_frame.h b/src/lib/elementary/elm_frame.h index a5c3c921c0..f57ae667ba 100644 --- a/src/lib/elementary/elm_frame.h +++ b/src/lib/elementary/elm_frame.h @@ -29,6 +29,7 @@ * @ref Elm_Layout : * - @c "clicked" - The user has clicked the frame's label * - @c "language,changed" - the program's language changed (since 1.9) + * - @c "close" - The user has clicked the close button if there is one * * Default content parts of the frame widget that you can use for are: * @li "default" - A content of the frame