int w, h, pw, ph;
int zx, zy, zw, zh;
int ecx, ecy, ecw, ech;
+ int desk_x, desk_y, desk_w, desk_h;
Eina_Bool override = ec->maximize_override;
if (!ec->zone) return;
zx = zy = zw = zh = 0;
ec->maximize_override = 1;
+ if (ec->desk_group.enable && ec->desk_group.desk_group != NULL)
+ {
+ desk_x = ec->desk_group.desk_group->x;
+ desk_y = ec->desk_group.desk_group->y;
+ desk_w = ec->desk_group.desk_group->w;
+ desk_h = ec->desk_group.desk_group->h;
+ }
+ else
+ {
+ desk_x = ec->desk->geom.x;
+ desk_y = ec->desk->geom.y;
+ desk_w = ec->desk->geom.w;
+ desk_h = ec->desk->geom.h;
+ }
+
switch (max & E_MAXIMIZE_TYPE)
{
case E_MAXIMIZE_NONE:
break;
case E_MAXIMIZE_FULLSCREEN:
- w = ec->desk->geom.w;
- h = ec->desk->geom.h;
+ w = desk_w;
+ h = desk_h;
e_client_resize_limit(ec, &w, &h);
/* center x-direction */
- x1 = ec->desk->geom.x + (ec->desk->geom.w - w) / 2;
+ x1 = desk_x + (desk_w - w) / 2;
/* center y-direction */
- yy1 = ec->desk->geom.y + (ec->desk->geom.h - h) / 2;
+ yy1 = desk_y + (desk_h - h) / 2;
switch (max & E_MAXIMIZE_DIRECTION)
{
break;
case E_MAXIMIZE_LEFT:
- e_client_maximized_geometry_set(ec, ec->desk->geom.x, ec->desk->geom.y, w / 2, h);
+ e_client_maximized_geometry_set(ec, desk_x, desk_y, w / 2, h);
break;
case E_MAXIMIZE_RIGHT:
- e_client_maximized_geometry_set(ec, x1, ec->desk->geom.y, w / 2, h);
+ e_client_maximized_geometry_set(ec, x1, desk_y, w / 2, h);
break;
}
break;
// base_output_resolution
if (ec->base_output_resolution.use)
{
- zx = ec->desk->geom.x;
- zy = ec->desk->geom.y;
+ zx = desk_x;
+ zy = desk_y;
zw = ec->base_output_resolution.w;
zh = ec->base_output_resolution.h;
}
}
else
{
- x1 = ec->desk->geom.x;
- yy1 = ec->desk->geom.y;
- x2 = ec->desk->geom.x + ec->desk->geom.w;
- y2 = ec->desk->geom.y + ec->desk->geom.h;
+ x1 = desk_x;
+ yy1 = desk_y;
+ x2 = desk_x + desk_w;
+ y2 = desk_y + desk_h;
e_maximize_client_shelf_fill(ec, &x1, &yy1, &x2, &y2, max);
zx = x1, zy = yy1;
zw = x2 - x1;
break;
case E_MAXIMIZE_FILL:
- x1 = ec->desk->geom.x;
- yy1 = ec->desk->geom.y;
- x2 = ec->desk->geom.x + ec->desk->geom.w;
- y2 = ec->desk->geom.y + ec->desk->geom.h;
+ x1 = desk_x;
+ yy1 = desk_y;
+ x2 = desk_x + desk_w;
+ y2 = desk_y + desk_h;
/* walk through all shelves */
e_maximize_client_shelf_fill(ec, &x1, &yy1, &x2, &y2, max);
break;
case E_MAXIMIZE_LEFT:
- e_client_maximized_geometry_set(ec, ec->desk->geom.x, ec->desk->geom.y, w / 2, h);
+ e_client_maximized_geometry_set(ec, desk_x, desk_y, w / 2, h);
break;
case E_MAXIMIZE_RIGHT:
- e_client_maximized_geometry_set(ec, x1, ec->desk->geom.y, w / 2, h);
+ e_client_maximized_geometry_set(ec, x1, desk_y, w / 2, h);
break;
}
break;
E_API void
e_client_maximize(E_Client *ec, E_Maximize max)
{
+ int desk_x, desk_y;
+
E_OBJECT_CHECK(ec);
E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE);
return;
}
+ if (ec->desk_group.enable && ec->desk_group.desk_group != NULL)
+ {
+ desk_x = ec->desk_group.desk_group->x;
+ desk_y = ec->desk_group.desk_group->y;
+ }
+ else
+ {
+ desk_x = ec->desk->geom.x;
+ desk_y = ec->desk->geom.y;
+ }
+
evas_object_smart_callback_call(ec->frame, "maximize_pre", NULL);
if (ec->fullscreen)
if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL))
{
/* Horizontal hasn't been set */
- ec->saved.x = ec->client.x - ec->desk->geom.x;
+ ec->saved.x = ec->client.x - desk_x;
ec->saved.w = ec->client.w;
}
if (!(ec->maximized & E_MAXIMIZE_VERTICAL))
{
/* Vertical hasn't been set */
- ec->saved.y = ec->client.y - ec->desk->geom.y;
+ ec->saved.y = ec->client.y - desk_y;
ec->saved.h = ec->client.h;
}