This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository enlightenment.
View the commit online.
commit 4e5c564f7c07f39365b67a7afa519677c1b3d185
Author: Alastair Poole <[email protected]>
AuthorDate: Sat Apr 18 10:10:06 2026 +0100
e_comp: Add Roll Up shading transition with smooth vertical scroll effect
---
src/bin/e_client.h | 3 +-
src/bin/e_comp_object.c | 46 ++++++++++++++++++++++
src/bin/e_config.c | 2 +-
.../e_int_config_window_display.c | 4 ++
4 files changed, 53 insertions(+), 2 deletions(-)
diff --git a/src/bin/e_client.h b/src/bin/e_client.h
index 2130e9d67..1083eb7f6 100644
--- a/src/bin/e_client.h
+++ b/src/bin/e_client.h
@@ -31,7 +31,8 @@ typedef enum _E_Transition
E_TRANSITION_DECELERATE_LOTS = 5,
E_TRANSITION_SINUSOIDAL_LOTS = 6,
E_TRANSITION_BOUNCE = 7,
- E_TRANSITION_BOUNCE_LOTS = 8
+ E_TRANSITION_BOUNCE_LOTS = 8,
+ E_TRANSITION_ROLL_UP = 9
} E_Transition;
typedef enum _E_Stacking
diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index f812642b2..55e15a53e 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -1956,6 +1956,7 @@ static Eina_Bool
_e_comp_object_shade_animator(void *data)
{
E_Comp_Object *cw = data;
+ Eina_Bool roll = EINA_FALSE;
Eina_Bool move = EINA_FALSE;
int x, y, w, h;
double dt, val;
@@ -2024,6 +2025,13 @@ _e_comp_object_shade_animator(void *data)
ecore_animator_pos_map(val, ECORE_POS_MAP_BOUNCE, 1.2, 5.0);
if (!cw->ec->shaded) cw->shade.val = 1.0 - cw->shade.val;
}
+ else if (e_config->border_shade_transition == E_TRANSITION_ROLL_UP)
+ {
+ cw->shade.val =
+ ecore_animator_pos_map(val, ECORE_POS_MAP_LINEAR, 0.0, 0.0);
+ if (!cw->ec->shaded) cw->shade.val = 1.0 - cw->shade.val;
+ roll = EINA_TRUE;
+ }
else
{
cw->shade.val =
@@ -2056,11 +2064,49 @@ _e_comp_object_shade_animator(void *data)
if (move) evas_object_move(cw->smart_obj, x, y);
evas_object_resize(cw->smart_obj, w, h);
+ if (roll &&
+ ((cw->shade.dir == E_DIRECTION_UP) || (cw->shade.dir == E_DIRECTION_DOWN)))
+ {
+ Evas_Map *m;
+ int ow, oh;
+ int vish;
+ double offset;
+ double p;
+
+ evas_object_geometry_get(cw->obj, NULL, NULL, &ow, &oh);
+ if ((ow > 0) && (oh > 0))
+ {
+ p = cw->shade.val;
+ if (p < 0.0) p = 0.0;
+ else if (p > 1.0) p = 1.0;
+ /* lock UV scroll to the exact visible shaded height to avoid jitter */
+ vish = MAX(1, h - cw->client_inset.t);
+ if (vish > cw->ec->client.h) vish = cw->ec->client.h;
+ offset = (double)(cw->ec->client.h - vish);
+
+ m = evas_map_new(4);
+ evas_map_util_points_populate_from_object(m, cw->obj);
+ /* Keep geometry unchanged and shift only texture sampling upward. */
+ evas_map_point_image_uv_set(m, 0, 0, offset);
+ evas_map_point_image_uv_set(m, 1, ow, offset);
+ evas_map_point_image_uv_set(m, 2, ow, oh + offset);
+ evas_map_point_image_uv_set(m, 3, 0, oh + offset);
+ evas_map_smooth_set(m, EINA_TRUE);
+ evas_object_map_set(cw->obj, m);
+ evas_object_map_enable_set(cw->obj, EINA_TRUE);
+ evas_map_free(m);
+ }
+ else
+ evas_object_map_enable_set(cw->obj, EINA_FALSE);
+ }
+ else
+ evas_object_map_enable_set(cw->obj, EINA_FALSE);
/* we're done */
if (EINA_DBL_EQ(val, 1))
{
cw->shade.anim = NULL;
+ evas_object_map_enable_set(cw->obj, EINA_FALSE);
evas_object_smart_callback_call(cw->smart_obj, "shade_done", NULL);
if (cw->ec->shaded)
diff --git a/src/bin/e_config.c b/src/bin/e_config.c
index 1f73878c5..fb87f8c8f 100644
--- a/src/bin/e_config.c
+++ b/src/bin/e_config.c
@@ -1830,7 +1830,7 @@ e_config_load(void)
E_CONFIG_LIMIT(e_config->window_maximize_transition, 0, E_EFX_EFFECT_SPEED_SINUSOIDAL);
E_CONFIG_LIMIT(e_config->window_maximize_time, 0.0, 1.0);
E_CONFIG_LIMIT(e_config->border_shade_animate, 0, 1);
- E_CONFIG_LIMIT(e_config->border_shade_transition, 0, 8);
+ E_CONFIG_LIMIT(e_config->border_shade_transition, 0, 9);
E_CONFIG_LIMIT(e_config->border_shade_speed, 1.0, 20000.0);
E_CONFIG_LIMIT(e_config->priority, 0, 19);
E_CONFIG_LIMIT(e_config->zone_desks_x_count, 1, 64);
diff --git a/src/modules/conf_window_manipulation/e_int_config_window_display.c b/src/modules/conf_window_manipulation/e_int_config_window_display.c
index 4daf61847..61fd336f8 100644
--- a/src/modules/conf_window_manipulation/e_int_config_window_display.c
+++ b/src/modules/conf_window_manipulation/e_int_config_window_display.c
@@ -248,6 +248,10 @@ _basic_create(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_Dialog_Data
e_widget_check_widget_disable_on_unchecked_add(oc, ow);
e_widget_list_object_append(ol, ow, 1, 1, 0.5);
+ ow = e_widget_radio_add(evas, _("Roll up"), E_TRANSITION_ROLL_UP, rg);
+ e_widget_check_widget_disable_on_unchecked_add(oc, ow);
+ e_widget_list_object_append(ol, ow, 1, 1, 0.5);
+
e_widget_toolbook_page_append(otb, NULL, _("Shading"), ol,
1, 1, 1, 0, 0.0, 0.0);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.