check = EINA_TRUE;
ec->transform_core.parent.matrix = parent->transform_core.result.matrix;
}
+ if (memcmp(&ec->transform_core.parent.zoom, &parent->transform_core.result.transform.zoom, sizeof(E_Util_Transform_Zoom)) != 0)
+ {
+ check = EINA_TRUE;
+ ec->transform_core.parent.zoom = parent->transform_core.result.transform.zoom;
+ }
}
else if (ec->transform_core.parent.enable)
{
ec->transform_core.parent.enable = EINA_FALSE;
e_util_transform_matrix_load_identity(&ec->transform_core.parent.matrix);
+ ec->transform_core.parent.zoom.zoom_x = 1.0;
+ ec->transform_core.parent.zoom.zoom_y = 1.0;
+ ec->transform_core.parent.zoom.cx = 0;
+ ec->transform_core.parent.zoom.cy = 0;
check = EINA_TRUE;
}
}
{
E_Util_Transform_Rect source_rect;
E_Util_Transform_Matrix matrix, boundary_matrix;
+ E_Util_Transform_Zoom zoom;
Eina_List *l;
Eina_Bool background;
E_Util_Transform *temp_trans;
{
e_util_transform_merge(&ec->transform_core.result.transform, temp_trans);
}
+ zoom = ec->transform_core.result.transform.zoom;
// 2.5 check viewport
if (e_util_transform_viewport_flag_get(&ec->transform_core.result.transform))
&matrix);
boundary_matrix = e_util_transform_matrix_multiply(&ec->transform_core.parent.matrix,
&boundary_matrix);
+
+ ec->transform_core.result.transform.use_zoom = EINA_TRUE;
+ zoom.zoom_x *= ec->transform_core.parent.zoom.zoom_x;
+ zoom.zoom_y *= ec->transform_core.parent.zoom.zoom_y;
+ zoom.cx += ec->transform_core.parent.zoom.cx;
+ zoom.cy += ec->transform_core.parent.zoom.cy;
}
// 4. apply matrix to vertices
&ec->transform_core.result.vertices);
ec->transform_core.result.boundary.vertices = e_util_transform_matrix_multiply_rect_vertex(&boundary_matrix,
&ec->transform_core.result.boundary.vertices);
+ ec->transform_core.result.transform.zoom = zoom;
// 5. apply vertices
if (ec->transform_core.result.transform.use_zoom)
}
static void
-_e_desk_client_subsurface_zoom(E_Client *ec, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy)
-{
- E_Comp_Client_Data *cdata;
- E_Client *subc;
- Eina_List *l;
-
- cdata = e_client_cdata_get(ec);
- if (!cdata) return;
-
- EINA_LIST_FOREACH(cdata->sub.list, l, subc)
- {
- _e_desk_client_zoom(subc, zoomx, zoomy, cx, cy);
- }
-
- EINA_LIST_FOREACH(cdata->sub.below_list, l, subc)
- {
- _e_desk_client_zoom(subc, zoomx, zoomy, cx, cy);
- }
-}
-
-static void
_e_desk_client_subsurf_create(void *data, E_Client *subc)
{
E_Client *ec, *parent;
static void
_e_desk_client_deskzoom_set(E_Client *ec, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy)
{
+ if (e_comp_wl_subsurface_check(ec)) return;
+
if ((zoomx == 1.0) && (zoomy == 1.0))
{
if (ec->desk_zoom.transform)
static void
_e_desk_client_zoom(E_Client *ec, double zoomx, double zoomy, Evas_Coord cx, Evas_Coord cy)
{
- Eina_Bool transformed;
-
if (e_object_is_del(E_OBJECT(ec))) return;
if (ec->is_cursor) return;
else
e_client_desk_zoom_enable_set(ec, EINA_TRUE);
- transformed = e_client_transform_core_enable_get(ec);
-
- if (transformed)
- _e_desk_client_deskzoom_set(ec, zoomx, zoomy, cx, cy);
- else
- {
- _e_desk_object_zoom(ec->frame, zoomx, zoomy, cx, cy);
- _e_desk_client_subsurface_zoom(ec, zoomx, zoomy, cx, cy);
- }
+ _e_desk_client_deskzoom_set(ec, zoomx, zoomy, cx, cy);
if (evas_object_visible_get(ec->frame))
{