{
ec->desk_group.transform = e_util_transform_new();
e_util_transform_role_set(ec->desk_group.transform, "desk_group");
- e_client_transform_core_add(ec, ec->desk_group.transform);
}
}
else
{
if (ec->desk_group.transform)
{
- e_client_transform_core_remove(ec, ec->desk_group.transform);
e_util_transform_del(ec->desk_group.transform);
ec->desk_group.transform = NULL;
}
void _e_desk_group_ec_geometry_apply(E_Desk_Group *edg, E_Client *ec)
{
+ E_Maximize max;
E_Util_Transform *transform;
- transform = ec->desk_group.transform;
- if (!transform) return;
-
if (e_comp_wl_subsurface_check(ec))
return;
- e_util_transform_move(transform, edg->x, edg->y, 0);
- e_util_transform_scale(transform, edg->scale_w, edg->scale_h, 1.0);
+ transform = ec->desk_group.transform;
- e_client_transform_core_update(ec);
+ if (edg->transform_enabled)
+ {
+ if (!transform) return;
+
+ e_util_transform_move(transform, edg->x, edg->y, 0);
+ e_util_transform_scale(transform, edg->scale_w, edg->scale_h, 1.0);
+ e_client_transform_core_add(ec, transform);
+
+ e_client_transform_core_update(ec);
+ }
+ else
+ {
+ if (transform)
+ {
+ e_util_transform_move(transform, 0, 0, 0);
+ e_util_transform_scale(transform, 1.0, 1.0, 1.0);
+ e_client_transform_core_remove(ec, transform);
+
+ e_client_transform_core_update(ec);
+ }
+
+ max = ec->maximized;
+ ec->maximized = E_MAXIMIZE_NONE;
+ e_client_maximize(ec, max);
+ }
}
void _e_desk_group_ec_geometry_restore(E_Desk_Group *edg, E_Client *ec)
return NULL;
}
+E_API void
+e_desk_group_transform_enable_set(E_Desk_Group *edg, Eina_Bool enable)
+{
+ if (!edg) return;
+
+ edg->transform_enabled = enable;
+}
+
+E_API Eina_Bool
+e_desk_group_transform_enable_get(E_Desk_Group *edg)
+{
+ if (!edg) return EINA_FALSE;
+
+ return edg->transform_enabled;
+}
+
// for debug
EINTERN void
}
else
_e_desk_group_hooks_delete++;
-}
+}
\ No newline at end of file
unsigned char enable : 1;
unsigned char visible : 1;
unsigned char active : 1;
+ unsigned char transform_enabled : 1;
Eina_List *ec_lists[E_DESK_GROUP_CLIENT_LAYER_MAX];
Eina_List *handlers;
E_API Eina_List *e_desk_group_ec_list_get(E_Desk_Group *edg);
+E_API void e_desk_group_transform_enable_set(E_Desk_Group *edg, Eina_Bool enable);
+E_API Eina_Bool e_desk_group_transform_enable_get(E_Desk_Group *edg);
+
// for debug
EINTERN void e_desk_group_info_print(E_Desk_Group *edg);