summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authordivyesh purohit <div.purohit@samsung.com>2016-01-04 15:08:49 -0800
committerCedric BAIL <cedric@osg.samsung.com>2016-01-04 15:08:52 -0800
commitd19f943d8dc94584c529d7b9423de5ee3eb3a211 (patch)
tree2ecf1a93bf2130df7db68e1889d0c2fd756af7f6 /data
parent0e8baac884cf42159966fe199e6bc85edfb929c4 (diff)
downloadelementary-d19f943d8dc94584c529d7b9423de5ee3eb3a211.tar.gz
hoversel: fix hover position in hoversel, when it goes out of the viewport
Summary: Hoversel Widget is designed in such a way that it accepts top/bottom/left/right directions , internally it uses hover widget which does not take care if its content goes of it's parent (Elm_Win in most cases) . this patch ensures that the drop-down content remains restricted in visible hover_parent. it would fix T2965 Signed-off-by: divyesh purohit <div.purohit@samsung.com> Signed-off-by: Jee-Yong Um <conr2d@gmail.com> Test Plan: Open entry widget and right click to show a hoversel widget, check if the hoversel or hover content goes out of the window. this is what hoversel would look like after this patch {F27551} Screenshots of top-left / top-right/ bottom-left and bottom-right corners in entry after this patch {F27553} {F27554} {F27555} {F27557} Reviewers: shilpasingh, conr2d, raster, cedric, Hermet Subscribers: rajeshps, govi Projects: #elementary Maniphest Tasks: T2965 Differential Revision: https://phab.enlightenment.org/D3513 Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Diffstat (limited to 'data')
-rw-r--r--data/themes/edc/elm/button.edc4
-rw-r--r--data/themes/edc/elm/hover.edc169
2 files changed, 140 insertions, 33 deletions
diff --git a/data/themes/edc/elm/button.edc b/data/themes/edc/elm/button.edc
index 8b9811c56..2134d41e3 100644
--- a/data/themes/edc/elm/button.edc
+++ b/data/themes/edc/elm/button.edc
@@ -1069,7 +1069,7 @@ group { name: "elm/button/base/hoversel_vertical_entry/default";
image { "base"; nomouse;
desc { "default";
fixed: 1 1;
- rel1.offset: -6 0;
+ rel1.offset: 0 0;
image.normal: "vgrad_med_dark.png";
fill.smooth: 0;
TILED_HORIZ(120)
@@ -1174,7 +1174,7 @@ group { name: "elm/button/base/hoversel_vertical_entry/default";
color_class: "hoversel_text";
color3: 255 255 255 255;
text { font: FN; size: 10;
- align: -1 0.5;
+ align: 0.0 0.5;
min: 0 0;
text_class: "button";
}
diff --git a/data/themes/edc/elm/hover.edc b/data/themes/edc/elm/hover.edc
index 7466f0d84..8a7ed497f 100644
--- a/data/themes/edc/elm/hover.edc
+++ b/data/themes/edc/elm/hover.edc
@@ -445,6 +445,24 @@ group { name: "elm/hover/base/hoversel_vertical/default";
// max_size limits the maximum size of expanded hoversel
// when it's scrollable.
//data.item: "max_size" "60";
+ script {
+ public visible = 0;
+ public right = 0;
+ public topshow2() {
+ if (get_int(right) == 0)
+ run_program(PROGRAM:"topshow_default");
+ else
+ run_program(PROGRAM:"topshow_right");
+ set_int(visible, 1);
+ }
+ public bottomshow2() {
+ if (get_int(right) == 0)
+ run_program(PROGRAM:"bottomshow_default");
+ else
+ run_program(PROGRAM:"bottomshow_right");
+ set_int(visible, 1);
+ }
+ }
parts {
part { name: "elm.swallow.offset"; type: SWALLOW;
description { state: "default" 0.0;
@@ -466,11 +484,11 @@ group { name: "elm/hover/base/hoversel_vertical/default";
description { state: "default" 0.0;
rel1.to_x: "limit0";
rel1.to_y: "elm.swallow.slot.top";
- rel1.offset: -10 -6;
+ rel1.offset: -2 -4;
rel2.to_x: "limit1";
rel2.to_y: "elm.swallow.slot.middle";
rel2.relative: 1.0 0.0;
- rel2.offset: 9 5;
+ rel2.offset: 9 4;
image {
normal: "button_normal.png";
border: 7 7 7 7;
@@ -481,10 +499,10 @@ group { name: "elm/hover/base/hoversel_vertical/default";
rel1.to_x: "limit0";
rel1.to_y: "elm.swallow.slot.middle";
rel1.relative: 0.0 1.0;
- rel1.offset: -10 -4;
+ rel1.offset: -2 -4;
rel2.to_x: "limit1";
rel2.to_y: "elm.swallow.slot.bottom";
- rel2.offset: 9 5;
+ rel2.offset: 9 4;
image {
normal: "button_normal.png";
border: 7 7 7 7;
@@ -558,7 +576,7 @@ group { name: "elm/hover/base/hoversel_vertical/default";
clip_to: "topclip";
description { state: "default" 0.0;
visible: 1;
- align: 0.5 0.0;
+ align: 0.0 0.0;
rel1.to: "elm.swallow.slot.middle";
rel1.relative: 0.0 0.0;
rel1.offset: 0 -1;
@@ -568,7 +586,17 @@ group { name: "elm/hover/base/hoversel_vertical/default";
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
- align: 0.5 1.0;
+ align: 0.0 1.0;
+ }
+ description { state: "right" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 0.0;
+ rel2.offset: -9 0;
+ }
+ description { state: "right_visible" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 1.0;
+ rel2.offset: -9 0;
}
}
part { name: "bottomclip"; type: RECT;
@@ -580,7 +608,7 @@ group { name: "elm/hover/base/hoversel_vertical/default";
part { name: "elm.swallow.slot.bottom"; type: SWALLOW;
clip_to: "bottomclip";
description { state: "default" 0.0;
- align: 0.5 1.0;
+ align: 0.0 1.0;
rel1.to: "elm.swallow.slot.middle";
rel1.relative: 0.0 1.0;
rel1.offset: 0 2;
@@ -590,7 +618,17 @@ group { name: "elm/hover/base/hoversel_vertical/default";
}
description { state: "visible" 0.0;
inherit: "default" 0.0;
- align: 0.5 0.0;
+ align: 0.0 0.0;
+ }
+ description { state: "right" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 1.0;
+ rel2.offset: -9 0;
+ }
+ description { state: "right_visible" 0.0;
+ inherit: "default" 0.0;
+ align: 1.0 0.0;
+ rel2.offset: -9 0;
}
}
part { name: "elm.swallow.slot.middle";
@@ -621,45 +659,114 @@ group { name: "elm/hover/base/hoversel_vertical/default";
program { name: "hidefinished";
action: SIGNAL_EMIT "elm,action,hide,finished" "elm";
}
-
program { name: "topshow";
signal: "elm,action,slot,top,show"; source: "elm";
+ script {
+ set_state(PART:"limit0", "visible", 0.0);
+ set_state(PART:"limit1", "visible", 0.0);
+ set_state(PART:"button_image", "default", 0.0);
+ topshow2();
+ }
+ }
+ program { name: "topshow_default";
action: STATE_SET "visible" 0.0;
- transition: DECELERATE 0.5;
target: "elm.swallow.slot.top";
+ transition: DECELERATE 0.5;
}
- program { name: "topshow3";
- signal: "elm,action,slot,top,show"; source: "elm";
- action: STATE_SET "default" 0.0;
- target: "button_image";
- target: "limit0";
- target: "limit1";
+ program { name: "topshow_right";
+ action: STATE_SET "right_visible" 0.0;
+ target: "elm.swallow.slot.top";
+ transition: DECELERATE 0.5;
}
program { name: "tophide";
- signal: "elm,action,slot,top,hide"; source: "elm";
+ signal: "elm,action,slot,top,hide";
+ source: "elm";
+ script {
+ if (get_int(right) == 0)
+ run_program(PROGRAM:"tophide_default");
+ else
+ run_program(PROGRAM:"tophide_right");
+ set_int(visible, 0);
+ }
+ }
+ program { name: "tophide_default";
action: STATE_SET "default" 0.0;
+ target: "elm.swallow.slot.top";
transition: DECELERATE 0.5;
+ }
+ program { name: "tophide_right";
+ action: STATE_SET "right" 0.0;
target: "elm.swallow.slot.top";
+ transition: DECELERATE 0.5;
}
-
program { name: "bottomshow";
signal: "elm,action,slot,bottom,show"; source: "elm";
+ script {
+ set_state(PART:"limit0", "bottom", 0.0);
+ set_state(PART:"limit1", "bottom", 0.0);
+ set_state(PART:"button_image", "bottom", 0.0);
+ bottomshow2();
+ }
+ }
+ program { name: "bottomshow_default";
action: STATE_SET "visible" 0.0;
- transition: DECELERATE 0.5;
target: "elm.swallow.slot.bottom";
+ transition: DECELERATE 0.5;
}
- program { name: "bottomshow3";
- signal: "elm,action,slot,bottom,show"; source: "elm";
- action: STATE_SET "bottom" 0.0;
- target: "button_image";
- target: "limit0";
- target: "limit1";
+ program { name: "bottomshow_right";
+ action: STATE_SET "right_visible" 0.0;
+ target: "elm.swallow.slot.bottom";
+ transition: DECELERATE 0.5;
}
program { name: "bottomhide";
signal: "elm,action,slot,bottom,hide"; source: "elm";
+ script {
+ if (get_int(right) == 0) {
+ run_program(PROGRAM:"bottomhide_default");
+ }
+ else {
+ run_program(PROGRAM:"bottomhide_right");
+ }
+ set_int(visible, 0);
+ }
+ }
+ program { name: "bottomhide_default";
action: STATE_SET "default" 0.0;
+ target: "elm.swallow.slot.bottom";
transition: DECELERATE 0.5;
+ }
+ program { name: "bottomhide_right";
+ action: STATE_SET "right" 0.0;
target: "elm.swallow.slot.bottom";
+ transition: DECELERATE 0.5;
+ }
+ program { name: "align_right";
+ signal: "elm,state,align,right"; source: "elm";
+ script {
+ set_int(right, 1);
+ if (get_int(visible) == 0) {
+ set_state(PART:"elm.swallow.slot.top", "right", 0.0);
+ set_state(PART:"elm.swallow.slot.bottom", "right", 0.0);
+ }
+ else {
+ set_state(PART:"elm.swallow.slot.top", "right_visible", 0.0);
+ set_state(PART:"elm.swallow.slot.bottom", "right_visible", 0.0);
+ }
+ }
+ }
+ program { name: "align_default";
+ signal: "elm,state,align,default"; source: "elm";
+ script {
+ set_int(right, 0);
+ if (get_int(visible) == 0) {
+ set_state(PART:"elm.swallow.slot.top", "default", 0.0);
+ set_state(PART:"elm.swallow.slot.bottom", "default", 0.0);
+ }
+ else {
+ set_state(PART:"elm.swallow.slot.top", "visible", 0.0);
+ set_state(PART:"elm.swallow.slot.bottom", "visible", 0.0);
+ }
+ }
}
}
}
@@ -701,7 +808,7 @@ group { name: "elm/hover/base/hoversel_horizontal/default";
description { state: "default" 0.0;
rel1.to_x: "elm.swallow.slot.left";
rel1.to_y: "elm.swallow.slot.left";
- rel1.offset: -10 -10;
+ rel1.offset: -10 0;
rel2.to_x: "elm.swallow.slot.middle";
rel2.to_y: "elm.swallow.slot.left";
rel2.relative: 0.0 1.0;
@@ -716,7 +823,7 @@ group { name: "elm/hover/base/hoversel_horizontal/default";
rel1.to_x: "elm.swallow.slot.middle";
rel1.to_y: "elm.swallow.slot.right";
rel1.relative: 1.0 0.0;
- rel1.offset: -5 -10;
+ rel1.offset: -5 0;
rel2.to_x: "elm.swallow.slot.right";
rel2.to_y: "elm.swallow.slot.right";
rel2.offset: 10 9;
@@ -737,7 +844,7 @@ group { name: "elm/hover/base/hoversel_horizontal/default";
part { name: "elm.swallow.slot.left"; type: SWALLOW;
clip_to: "leftclip";
description { state: "default" 0.0;
- align: 0.0 0.5;
+ align: 0.0 0.0;
rel1.to: "elm.swallow.slot.middle";
rel1.relative: 0.0 0.0;
rel1.offset: -1 0;
@@ -749,7 +856,7 @@ group { name: "elm/hover/base/hoversel_horizontal/default";
inherit: "default" 0.0;
rel1.offset: -7 0;
rel2.offset: -7 -1;
- align: 1.0 0.5;
+ align: 1.0 0.0;
}
}
part { name: "rightclip"; type: RECT;
@@ -761,7 +868,7 @@ group { name: "elm/hover/base/hoversel_horizontal/default";
part { name: "elm.swallow.slot.right"; type: SWALLOW;
clip_to: "rightclip";
description { state: "default" 0.0;
- align: 1.0 0.5;
+ align: 1.0 0.0;
rel1.to: "elm.swallow.slot.middle";
rel1.relative: 1.0 0.0;
rel1.offset: 0 0;
@@ -773,7 +880,7 @@ group { name: "elm/hover/base/hoversel_horizontal/default";
inherit: "default" 0.0;
rel1.offset: 6 0;
rel2.offset: -6 -1;
- align: 0.0 0.5;
+ align: 0.0 0.0;
}
}
part { name: "elm.swallow.slot.middle"; type: SWALLOW;