From: MinJeong Kim Date: Wed, 20 Apr 2016 07:11:45 +0000 (+0900) Subject: elm_win: enable floating_mode_set on wayland X-Git-Tag: accepted/tizen/common/20160426.143002~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F36%2F66736%2F3;p=platform%2Fupstream%2Felementary.git elm_win: enable floating_mode_set on wayland 1. replace "simple" border style as "floating" for floating mode window. 2. implement elm_win_floating_mode_set on wayland. Change-Id: Ia06acc0295b67392ecb1ace38b0228f103e1f462 --- diff --git a/data/themes/edc/elm/border.edc b/data/themes/edc/elm/border.edc index 3625e0f..b990379 100644 --- a/data/themes/edc/elm/border.edc +++ b/data/themes/edc/elm/border.edc @@ -1645,38 +1645,28 @@ group { name: "elm/border/base/default"; } } -group { name: "elm/border/base/simple"; +group { name: "elm/border/base/floating"; 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! + images.image: "simple-resize-marker.png" COMP; 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"; + part { name: "frame"; mouse_events: 0; type: RECT; description { state: "default" 0.0; - rel1.to: "frame"; - rel2.to: "frame"; + rel1.relative: 0.0 0.0; + rel1.offset: 17 51; + rel2.relative: 1.0 1.0; + rel2.offset: -22 -22; + color: 0 0 0 0; } } - part { name: "frame"; type: SPACER; + part { name: "focus_clip"; mouse_events: 0; type: RECT; 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; + visible: 0; } } part { name: "glow"; mouse_events: 0; @@ -1699,31 +1689,10 @@ group { name: "elm/border/base/simple"; 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"; + part { name: "client_clip"; mouse_events: 0; type: RECT; 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"; + rel1.to: "frame"; + rel2.to: "frame"; } } part { name: "top"; type:RECT; mouse_events: 0; @@ -1764,6 +1733,27 @@ group { name: "elm/border/base/simple"; visible: 0; } } + 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: "border"; mouse_events: 0; description { state: "default" 0.0; image.normal: "simple-border.png"; @@ -1910,35 +1900,15 @@ group { name: "elm/border/base/simple"; 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.tr"; type: RECT; + part { name: "e.event.resize.br"; type: RECT; description { state: "default" 0.0; - rel1.to: "top"; + rel1.to: "bottom"; rel1.relative: 1.0 0.0; - rel2.to: "top"; + rel1.offset: -23 -23; + rel2.to: "bottom"; 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; @@ -1952,33 +1922,13 @@ group { name: "elm/border/base/simple"; visible: 0; } } - part { name: "e.event.resize.b"; type: RECT; + part { name: "resize_marker"; nomouse; 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"; + image.normal: "simple-resize-marker.png"; + rel1.to: "e.event.resize.br"; + rel1.relative: 0.0 0.0; + rel2.to: "e.event.resize.br"; rel2.relative: 1.0 1.0; - rel2.offset: 23 0; - color: 0 0 0 0; } description { state: "shaded" 0.0; inherit: "default" 0.0; @@ -1991,28 +1941,6 @@ group { name: "elm/border/base/simple"; 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 { @@ -2056,8 +1984,6 @@ group { name: "elm/border/base/simple"; 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 { @@ -2065,8 +1991,6 @@ group { name: "elm/border/base/simple"; 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 { @@ -2076,8 +2000,6 @@ group { name: "elm/border/base/simple"; target: "frame"; target: "focus_clip"; target: "bottom"; - target: "e.event.resize.bl"; - target: "e.event.resize.b"; target: "e.event.resize.br"; } program { @@ -2087,8 +2009,6 @@ group { name: "elm/border/base/simple"; target: "frame"; target: "focus_clip"; target: "bottom"; - target: "e.event.resize.bl"; - target: "e.event.resize.b"; target: "e.event.resize.br"; } program { @@ -2103,7 +2023,6 @@ group { name: "elm/border/base/simple"; target: "close1"; target: "close2"; } - program { signal: "mouse,down,1"; source: "e.event.titlebar"; action: SIGNAL_EMIT "elm,action,move,start" "elm"; @@ -2113,82 +2032,10 @@ group { name: "elm/border/base/simple"; action: SIGNAL_EMIT "elm,action,move,stop" "elm"; } program { - signal: "mouse,clicked,1"; source: "e.event.close"; + signal: "mouse,up,1"; source: "e.event.close"; action: SIGNAL_EMIT "elm,action,close" "elm"; } 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"; } diff --git a/data/themes/img/simple-resize-marker.png b/data/themes/img/simple-resize-marker.png new file mode 100644 index 0000000..42bd8ac Binary files /dev/null and b/data/themes/img/simple-resize-marker.png differ diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c index 222dfb5..762432c 100644 --- a/src/lib/elm_win.c +++ b/src/lib/elm_win.c @@ -242,6 +242,7 @@ struct _Elm_Win_Data Eina_Bool theme_alpha : 1; /**< alpha value fetched by a theme. this has higher priority than application_alpha */ Eina_Bool application_alpha : 1; /**< alpha value set by an elm_win_alpha_set() api. this has lower priority than theme_alpha */ Eina_Bool obscured :1; + Eina_Bool borderless : 1; }; static const char SIG_DELETE_REQUEST[] = "delete,request"; @@ -4669,6 +4670,8 @@ _elm_win_borderless_set(Eo *obj EINA_UNUSED, Elm_Win_Data *sd, Eina_Bool borderl evas_object_show(sd->frame_obj); } + sd->borderless = borderless; + TRAP(sd, borderless_set, borderless); #ifdef HAVE_ELEMENTARY_X _elm_win_xwin_update(sd); @@ -6010,6 +6013,36 @@ elm_win_floating_mode_set(Evas_Object *obj, Eina_Bool floating) floating = !!floating; if (floating == sd->floating) return; sd->floating = floating; +#if HAVE_ELEMENTARY_WAYLAND + _elm_win_wlwindow_get(sd); + if (sd->wl.win) + { + if (floating) + { + const char *engine_name = ecore_evas_engine_name_get(sd->ee); + Eina_Bool need_frame = engine_name && + ((!strcmp(engine_name, ELM_WAYLAND_SHM)) || + (!strcmp(engine_name, ELM_WAYLAND_EGL))); + + if (need_frame) + need_frame = !sd->fullscreen; + + if (need_frame) + { + _elm_win_frame_del(sd); + _elm_win_frame_add(sd, "floating"); + } + + if (sd->frame_obj) + evas_object_show(sd->frame_obj); + } + else + { + elm_win_borderless_set(obj, sd->borderless); + } + ecore_wl_window_floating_mode_set(sd->wl.win, floating); + } +#endif #ifdef HAVE_ELEMENTARY_X _internal_elm_win_xwindow_get(sd); if (sd->x.xwin)