elm_win: added new border style 'simple' and border style set/get APIs 57/46057/1 accepted/tizen/mobile/20150816.062130 accepted/tizen/tv/20150816.062314 accepted/tizen/wearable/20150816.062456 submit/tizen/20150815.101832
authorMinJeong Kim <minjjj.kim@samsung.com>
Thu, 13 Aug 2015 11:43:16 +0000 (20:43 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Thu, 13 Aug 2015 11:44:51 +0000 (20:44 +0900)
Change-Id: Ic805aec9563da29884cf0e17fea041b877772c91
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
data/themes/edc/elm/border.edc
data/themes/img/simple-border.png [new file with mode: 0644]
data/themes/img/simple-button-close.png [new file with mode: 0644]
src/lib/elm_win.c
src/lib/elm_win.eo

index 8d296ffb694e7223fdccdafd4ffcfc2a634b24f1..a05186b9764dc4e2d1bb9d9d6bede4daffe99546 100644 (file)
@@ -1664,3 +1664,585 @@ group { name: "elm/border/base/default";
       }
    }
 }
+
+group { name: "elm/border/base/simple";
+   images.image: "win_glow.png" COMP;
+   images.image: "glow_round_corners_small.png" COMP;
+   images.image: "simple-border.png" COMP;
+   images.image: "simple-button-close.png" COMP;
+
+   // XXX: trhis is UNTESTED!!! need wl to test!
+   parts {
+      part { name: "focus_clip"; type: RECT;
+         description { state: "default" 0.0;
+         }
+         description { state: "max" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part { name: "elm.swallow.frame_spacer"; type: SWALLOW;
+         clip_to: "focus_clip";
+         description { state: "default" 0.0;
+            rel1.to: "frame";
+            rel2.to: "frame";
+         }
+      }
+      part { name: "frame"; type: SPACER;
+         description { state: "default" 0.0;
+            rel1.offset:  17 51;
+            rel2.offset: -22 -22;
+         }
+         description { state: "max" 0.0;
+            inherit: "default" 0.0;
+            rel1.offset: 0 0;
+            rel2.offset: -1 -1;
+         }
+      }
+      part { name: "glow"; mouse_events: 0;
+         clip_to: "focus_clip";
+         description { state: "default" 0.0;
+            image.normal: "win_glow.png";
+            image.border: 9 9 9 9;
+            image.middle: 0;
+            rel1.offset: -17 -52;
+            rel1.to: "frame";
+            rel2.offset: 23 23;
+            rel2.to: "frame";
+            fill.smooth: 0;
+            color: 255 255 255 0;
+            visible: 0;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            color: 255 255 255 255;
+            visible: 1;
+         }
+      }
+      part { name: "client_clip"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.to_y: "elm.swallow.client";
+            rel2.to_y: "elm.swallow.client";
+         }
+      }
+      part { name: "elm.swallow.client"; type: SWALLOW;
+         clip_to: "client_clip";
+         description { state: "default" 0.0;
+            rel1.relative: 0.0 1.0;
+            rel1.to: "top";
+            rel2.relative: 1.0 0.0;
+            rel2.to: "bottom";
+         }
+         description { state: "shaded" 0.0;
+            inherit: "default" 0.0;
+            rel2.relative: 1.0 1.0;
+            rel2.offset: -1 -1;
+            rel2.to: "bottom";
+         }
+         description { state: "max" 0.0;
+            inherit: "default" 0.0;
+            rel2.relative: 1.0 1.0;
+            rel2.offset: -1 -1;
+            rel2.to: "bottom";
+         }
+      }
+      part { name: "top"; type:RECT; mouse_events: 0;
+         description { state: "default" 0.0;
+            rel1.offset: 0 -52 ;
+            rel1.relative: 0.0 0.0;
+            rel1.to: "frame";
+            rel2.relative: 1.0 0.0;
+            rel2.offset: 0 0;
+            rel2.to: "frame";
+            color: 0 0 0 0;
+            visible: 1;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+         }
+      }
+      part { name: "bottom"; type:RECT; mouse_events: 0;
+         description { state: "default" 0.0;
+            rel1.relative: 0.0 1.0;
+            rel1.offset: 0 0;
+            rel1.to: "frame";
+            rel2.relative: 1.0 1.0;
+            rel2.offset: 0 22;
+            rel2.to: "frame";
+            visible: 1;
+            color: 0 0 0 0;
+            fixed: 0 1;
+         }
+         description { state: "shaded" 0.0;
+            inherit: "default" 0.0;
+            min: 0 0;
+            visible: 0;
+         }
+         description { state: "max" 0.0;
+            inherit: "default" 0.0;
+            min: 0 0;
+            visible: 0;
+         }
+      }
+      part { name: "border"; mouse_events: 0;
+         description { state: "default" 0.0;
+              image.normal: "simple-border.png";
+              image.border: 17 23 52 23;
+              image.middle: 0;
+              rel1.to: "frame";
+              rel1.offset: -17 -51;
+              rel1.relative: 0.0 0.0;
+              rel2.to: "frame";
+              rel2.relative: 1.0 1.0;
+              rel2.offset: 22 22;
+              visible: 1;
+         }
+         description { state: "focused" 0.0;
+              inherit: "default" 0.0;
+              visible: 1;
+         }
+      }
+      part { name: "elm.text.title"; type: TEXT;
+         scale: 1; nomouse;
+         effect: SHADOW BOTTOM;
+         description { state: "default" 0.0;
+            color_class: "border_title";
+            rel1.relative: 0.0 0.0;
+            rel1.offset: 1 23;
+            rel1.to: "top";
+            rel2.relative: 0.0 1.0;
+            rel2.offset: -1 2;
+            rel2.to_x: "e.event.close";
+            rel2.to_y: "top";
+            align: 0.5 0.0;
+            color_class: "border_title";
+            color3: 255 255 255 255;
+            text { font: FNBD; size: 20;
+               text_class: "title_bar";
+               align: 0.5 0.0;
+               min: 0 1;
+            }
+            fixed: 0 1;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part { name: "title2"; type: TEXT;
+         scale: 1; nomouse;
+         effect: SOFT_SHADOW BOTTOM;
+         description { state: "default" 0.0;
+            color_class: "border_title_active";
+            rel1.relative: 0.0 0.0;
+            rel1.offset: 0 23;
+            rel1.to: "top";
+            rel2.relative: 0.0 1.0;
+            rel2.offset: -1 2;
+            rel2.to_x: "e.event.close";
+            rel2.to_y: "top";
+            align: 0.5 0.0;
+            color_class: "border_title_active";
+            color3: 255 255 255 255;
+            text { font: FNBD; size: 20;
+               text_source: "elm.text.title";
+               text_class: "title_bar";
+               align: 0.5 0.0;
+               min: 0 1;
+            }
+            fixed: 0 1;
+            visible: 0;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+      }
+      part { name: "clip1"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.to: "top";
+            rel2.to: "top";
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part { name: "clip2"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.to: "top";
+            rel2.to: "top";
+            visible: 0;
+         }
+         description { state: "focused" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+      }
+      part { name: "close1"; nomouse;
+         clip_to: "clip1";
+         description { state: "default" 0.0;
+            image.normal: "simple-button-close.png";
+            rel1.to: "e.event.close";
+            rel2.to: "e.event.close";
+            align: 0.5 0.5;
+            FIXED_SIZE(20, 20);
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            image.normal: "simple-button-close.png";
+         }
+      }
+      part { name: "close2"; nomouse;
+         clip_to: "clip2";
+         description { state: "default" 0.0;
+            image.normal: "simple-button-close.png";
+            rel1.to: "e.event.close";
+            rel2.to: "e.event.close";
+            align: 0.5 0.5;
+            FIXED_SIZE(20, 20);
+         }
+         description { state: "selected" 0.0;
+            inherit: "default" 0.0;
+            image.normal: "simple-button-close.png";
+         }
+      }
+      part { name: "e.event.titlebar"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.relative: 0.0 0.0;
+            rel1.offset: 0 23;
+            rel1.to: "top";
+            rel2.relative: 0.0 1.0;
+            rel2.to_x: "e.event.close";
+            rel2.to_y: "top";
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "e.event.close"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.relative: 1.0 0.0;
+            rel1.offset: 0 23;
+            rel1.to: "top";
+            rel2.relative: 1.0 1.0;
+            rel2.to: "top";
+            align: 1.0 0.5;
+            aspect: 1.0 1.0; aspect_preference: VERTICAL;
+            color: 0 0 0 0;
+            FIXED_SIZE(20, 20);
+         }
+      }
+      part { name: "e.event.resize.tl"; type: RECT;
+         description { state: "default" 0.0;
+            fixed: 1 1;
+            rel1.to: "top";
+            rel1.relative: 0.0 0.0;
+            rel1.offset: -17 0;
+            rel2.relative: 0.0 1.0;
+            rel2.to_y: "top";
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "e.event.resize.t"; type: RECT;
+         description { state: "default" 0.0;
+            fixed: 1 1;
+            rel1.relative: 0.0 0.0;
+            rel1.to: "top";
+            rel2.relative: 1.0 0.0;
+            rel2.offset: 0 23;
+            rel2.to: "top";
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "e.event.resize.tr"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.to: "top";
+            rel1.relative: 1.0 0.0;
+            rel2.to: "top";
+            rel2.relative: 1.0 1.0;
+            rel2.offset: 23 0;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "e.event.resize.bl"; type: RECT;
+         description { state: "default" 0.0;
+            fixed: 1 1;
+            rel1.to: "bottom";
+            rel1.relative: 0.0 0.0;
+            rel1.offset: -17 0;
+            rel2.to: "bottom";
+            rel2.relative: 0.0 1.0;
+            color: 0 0 0 0;
+         }
+         description { state: "shaded" 0.0;
+            inherit: "default" 0.0;
+            min: 0 0;
+            visible: 0;
+         }
+         description { state: "max" 0.0;
+            inherit: "default" 0.0;
+            min: 0 0;
+            visible: 0;
+         }
+      }
+      part { name: "e.event.resize.b"; type: RECT;
+         description { state: "default" 0.0;
+            fixed: 1 1;
+            rel1.to: "bottom";
+            rel2.to: "bottom";
+            color: 0 0 0 0;
+         }
+         description { state: "shaded" 0.0;
+            inherit: "default" 0.0;
+            min: 0 0;
+            visible: 0;
+         }
+         description { state: "max" 0.0;
+            inherit: "default" 0.0;
+            min: 0 0;
+            visible: 0;
+         }
+      }
+      part { name: "e.event.resize.br"; type: RECT;
+         description { state: "default" 0.0;
+            fixed: 1 1;
+            rel1.to: "bottom";
+            rel1.relative: 1.0 0.0;
+            rel2.to: "bottom";
+            rel2.relative: 1.0 1.0;
+            rel2.offset: 23 0;
+            color: 0 0 0 0;
+         }
+         description { state: "shaded" 0.0;
+            inherit: "default" 0.0;
+            min: 0 0;
+            visible: 0;
+         }
+         description { state: "max" 0.0;
+            inherit: "default" 0.0;
+            min: 0 0;
+            visible: 0;
+         }
+      }
+      part { name: "e.event.resize.r"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.relative: 1.0 1.0;
+            rel1.to_x: "top";
+            rel1.to_y: "e.event.resize.tr";
+            rel2.relative: 1.0 0.0;
+            rel2.to_x: "e.event.resize.br";
+            rel2.to_y: "bottom";
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "e.event.resize.l"; type: RECT;
+         description { state: "default" 0.0;
+            rel1.relative: 0.0 1.0;
+            rel1.to_x: "e.event.resize.tl";
+            rel1.to_y: "top";
+            rel2.relative: 0.0 0.0;
+            rel2.to_x: "bottom";
+            rel2.to_y: "e.event.resize.bl";
+            color: 0 0 0 0;
+         }
+      }
+   }
+   programs {
+      program {
+         signal: "elm,action,focus"; source: "elm";
+         action: STATE_SET "focused" 0.0;
+         transition: SINUSOIDAL 0.1;
+         target: "glow";
+         after: "focus2";
+      }
+      program { name: "focus2";
+         action: STATE_SET "default" 0.0;
+         transition: SINUSOIDAL 0.4;
+         target: "glow";
+      }
+      program {
+         signal: "elm,action,unfocus"; source: "elm";
+         action: STATE_SET "default" 0.0;
+         transition: SINUSOIDAL 0.1;
+         target: "glow";
+      }
+      program {
+         signal: "elm,action,focus"; source: "elm";
+         action: STATE_SET "focused" 0.0;
+         target: "top";
+         target: "elm.text.title";
+         target: "title2";
+         target: "clip1";
+         target: "clip2";
+      }
+      program {
+         signal: "elm,action,unfocus"; source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "top";
+         target: "elm.text.title";
+         target: "title2";
+         target: "clip1";
+         target: "clip2";
+      }
+      program {
+         signal: "elm,state,shaded"; source: "elm";
+         action: STATE_SET "shaded" 0.0;
+         target: "elm.swallow.client";
+         target: "bottom";
+         target: "e.event.resize.bl";
+         target: "e.event.resize.b";
+         target: "e.event.resize.br";
+      }
+      program {
+         signal: "elm,state,unshading"; source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "elm.swallow.client";
+         target: "bottom";
+         target: "e.event.resize.bl";
+         target: "e.event.resize.b";
+         target: "e.event.resize.br";
+      }
+      program {
+         signal: "elm,state,maximized"; source: "elm";
+         action: STATE_SET "max" 0.0;
+         target: "elm.swallow.client";
+         target: "frame";
+         target: "focus_clip";
+         target: "bottom";
+         target: "e.event.resize.bl";
+         target: "e.event.resize.b";
+         target: "e.event.resize.br";
+      }
+      program {
+         signal: "elm,state,unmaximized"; source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "elm.swallow.client";
+         target: "frame";
+         target: "focus_clip";
+         target: "bottom";
+         target: "e.event.resize.bl";
+         target: "e.event.resize.b";
+         target: "e.event.resize.br";
+      }
+      program {
+         signal: "mouse,down,*"; source: "e.event.lose";
+         action: STATE_SET "selected" 0.0;
+         target: "close1";
+         target: "close2";
+      }
+      program {
+         signal: "mouse,up,*"; source: "e.event.close";
+         action: STATE_SET "default" 0.0;
+         target: "close1";
+         target: "close2";
+      }
+
+      program {
+         signal: "mouse,down,1"; source: "e.event.titlebar";
+         action: SIGNAL_EMIT "elm,action,move,start" "elm";
+      }
+      program {
+         signal: "mouse,up,1"; source: "e.event.titlebar";
+         action: SIGNAL_EMIT "elm,action,move,stop" "elm";
+      }
+      program {
+         signal: "mouse,clicked,1"; source: "e.event.close";
+         action: SIGNAL_EMIT "elm,action,close" "elm";
+      }
+      program {
+         signal: "mouse,in"; source: "e.event.resize.t";
+         action: SIGNAL_EMIT "elm,action,resize,show" "elm.event.resize.t";
+      }
+      program {
+         signal: "mouse,out"; source: "e.event.resize.t";
+         action: SIGNAL_EMIT "elm,action,resize,hide" "elm.event.resize.t";
+      }
+      program { name: "resize_t_down";
+         signal: "mouse,down,1"; source: "e.event.resize.t";
+         action: SIGNAL_EMIT "elm,action,resize,start" "elm.event.resize.t";
+      }
+      program {
+         signal: "mouse,in"; source: "e.event.resize.b";
+         action: SIGNAL_EMIT "elm,action,resize,show" "elm.event.resize.b";
+      }
+      program {
+         signal: "mouse,out"; source: "e.event.resize.b";
+         action: SIGNAL_EMIT "elm,action,resize,hide" "elm.event.resize.b";
+      }
+      program {
+         signal: "mouse,down,1"; source: "e.event.resize.b";
+         action: SIGNAL_EMIT "elm,action,resize,start" "elm.event.resize.b";
+      }
+      program {
+         signal: "mouse,in"; source: "e.event.resize.l";
+         action: SIGNAL_EMIT "elm,action,resize,show" "elm.event.resize.l";
+      }
+      program {
+         signal: "mouse,out"; source: "e.event.resize.l";
+         action: SIGNAL_EMIT "elm,action,resize,hide" "elm.event.resize.l";
+      }
+      program {
+         signal: "mouse,down,1"; source: "e.event.resize.l";
+         action: SIGNAL_EMIT "elm,action,resize,start" "elm.event.resize.l";
+      }
+      program {
+         signal: "mouse,in"; source: "e.event.resize.r";
+         action: SIGNAL_EMIT "elm,action,resize,show" "elm.event.resize.r";
+      }
+      program {
+         signal: "mouse,out"; source: "e.event.resize.r";
+         action: SIGNAL_EMIT "elm,action,resize,hide" "elm.event.resize.r";
+      }
+      program {
+         signal: "mouse,down,1"; source: "e.event.resize.r";
+         action: SIGNAL_EMIT "elm,action,resize,start" "elm.event.resize.r";
+      }
+      program {
+         signal: "mouse,in"; source: "e.event.resize.tl";
+         action: SIGNAL_EMIT "elm,action,resize,show" "elm.event.resize.tl";
+      }
+      program {
+         signal: "mouse,out"; source: "e.event.resize.tl";
+         action: SIGNAL_EMIT "elm,action,resize,hide" "elm.event.resize.tl";
+      }
+      program {
+         signal: "mouse,down,1"; source: "e.event.resize.tl";
+         action: SIGNAL_EMIT "elm,action,resize,start" "elm.event.resize.tl";
+      }
+      program {
+         signal: "mouse,in"; source: "e.event.resize.tr";
+         action: SIGNAL_EMIT "elm,action,resize,show" "elm.event.resize.tr";
+      }
+      program {
+         signal: "mouse,out"; source: "e.event.resize.tr";
+         action: SIGNAL_EMIT "elm,action,resize,hide" "elm.event.resize.tr";
+      }
+      program {
+         signal: "mouse,down,1"; source: "e.event.resize.tr";
+         action: SIGNAL_EMIT "elm,action,resize,start" "elm.event.resize.tr";
+      }
+      program {
+         signal: "mouse,in"; source: "e.event.resize.bl";
+         action: SIGNAL_EMIT "elm,action,resize,show" "elm.event.resize.bl";
+      }
+      program {
+         signal: "mouse,out"; source: "e.event.resize.bl";
+         action: SIGNAL_EMIT "elm,action,resize,hide" "elm.event.resize.bl";
+      }
+      program {
+         signal: "mouse,down,1"; source: "e.event.resize.bl";
+         action: SIGNAL_EMIT "elm,action,resize,start" "elm.event.resize.bl";
+      }
+      program {
+         signal: "mouse,in"; source: "e.event.resize.br";
+         action: SIGNAL_EMIT "elm,action,resize,show" "elm.event.resize.br";
+      }
+      program {
+         signal: "mouse,out"; source: "e.event.resize.br";
+         action: SIGNAL_EMIT "elm,action,resize,hide" "elm.event.resize.br";
+      }
+      program {
+         signal: "mouse,down,1"; source: "e.event.resize.br";
+         action: SIGNAL_EMIT "elm,action,resize,start" "elm.event.resize.br";
+      }
+   }
+}
diff --git a/data/themes/img/simple-border.png b/data/themes/img/simple-border.png
new file mode 100644 (file)
index 0000000..1bda42e
Binary files /dev/null and b/data/themes/img/simple-border.png differ
diff --git a/data/themes/img/simple-button-close.png b/data/themes/img/simple-button-close.png
new file mode 100644 (file)
index 0000000..ae241c2
Binary files /dev/null and b/data/themes/img/simple-button-close.png differ
index 0ea360a8ed2e6d90a46be1f2b525e1e116c40bc7..e003c3fc9e1609ce74e017419078fdbcfea7bda1 100644 (file)
@@ -174,6 +174,7 @@ struct _Elm_Win_Data
    const char  *title;
    const char  *icon_name;
    const char  *role;
+   const char  *frame_style;
 
    Evas_Object *main_menu;
 
@@ -1798,6 +1799,7 @@ _elm_win_evas_object_smart_del(Eo *obj, Elm_Win_Data *sd)
    eina_stringshare_del(sd->title);
    eina_stringshare_del(sd->icon_name);
    eina_stringshare_del(sd->role);
+   eina_stringshare_del(sd->frame_style);
    evas_object_del(sd->icon);
    evas_object_del(sd->main_menu);
 
@@ -3578,6 +3580,7 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_Type t
    _elm_win_list = eina_list_append(_elm_win_list, obj);
    _elm_win_count++;
 
+   sd->frame_style = eina_stringshare_add("default");
    if ((engine) && ((!strcmp(engine, ELM_SOFTWARE_FB)) || (!strcmp(engine, ELM_DRM))))
      {
         TRAP(sd, fullscreen_set, 1);
@@ -3586,7 +3589,7 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, const char *name, Elm_Win_Type t
             ((engine) &&
              ((!strcmp(engine, ELM_WAYLAND_SHM) ||
               (!strcmp(engine, ELM_WAYLAND_EGL))))))
-     _elm_win_frame_add(sd, "default");
+     _elm_win_frame_add(sd, sd->frame_style);
 
    if (_elm_config->focus_highlight_enable)
      elm_win_focus_highlight_enabled_set(obj, EINA_TRUE);
@@ -3903,7 +3906,7 @@ _elm_win_borderless_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd, Eina_Bool borderl
    else
      {
         if (need_frame)
-          _elm_win_frame_add(sd, "default");
+          _elm_win_frame_add(sd, sd->frame_style);
 
         if (sd->frame_obj)
           evas_object_show(sd->frame_obj);
@@ -3921,6 +3924,43 @@ _elm_win_borderless_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
    return ecore_evas_borderless_get(sd->ee);
 }
 
+EOLIAN static void
+_elm_win_border_style_set(Eo *obj, Elm_Win_Data *sd, const char *style)
+{
+   Elm_Theme *theme;
+   char buf[1024];
+
+   if (!style) return;
+   if (!strcmp(sd->frame_style, style))
+     return;
+
+   theme = elm_widget_theme_get(obj);
+   if (!theme) theme = elm_theme_default_get();
+   if (theme)
+     {
+        snprintf(buf, sizeof(buf), "elm/border/base/%s", style);
+        if (!elm_theme_group_path_find(theme, buf))
+          return;
+     }
+
+   eina_stringshare_replace(&(sd->frame_style), style);
+
+   if (sd->frame_obj)
+     {
+        _elm_win_frame_del(sd);
+        _elm_win_frame_add(sd, sd->frame_style);
+
+        if (sd->frame_obj)
+          evas_object_show(sd->frame_obj);
+     }
+}
+
+EOLIAN static const char*
+_elm_win_border_style_get(Eo *obj EINA_UNUSED, Elm_Win_Data *sd)
+{
+   return sd->frame_style;
+}
+
 EOLIAN static void
 _elm_win_shaped_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd, Eina_Bool shaped)
 {
@@ -4005,7 +4045,7 @@ _elm_win_fullscreen_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd, Eina_Bool fullscr
         else
           {
              if (need_frame)
-               _elm_win_frame_add(sd, "default");
+               _elm_win_frame_add(sd, sd->frame_style);
 
              if (sd->frame_obj)
                evas_object_show(sd->frame_obj);
index 424b2b0b0df3c9826de2a3e7e49e793da980b4cc..3a9c78258538e7de1fec97191a46b2a09bc1eae1 100644 (file)
@@ -332,6 +332,27 @@ class Elm_Win (Elm_Widget, Elm_Interface_Atspi_Window,
             bool borderless; /*@ If true, the window is borderless */
          }
       }
+      border_style {
+         set {
+            /*@
+            Set the border style of a window.
+
+            Sets the specific style of border to decorate window.
+
+            @ingroup Win */
+         }
+         get {
+            /*@
+            Get the border style of a window.
+
+            @return The style set
+
+            @ingroup Win */
+         }
+         values {
+            const(char)* style; /*@ The style to set */
+         }
+      }
       screen_constrain {
          set {
             /*@