_e_client_maximize(E_Client *ec, E_Maximize max)
{
int x1, yy1, x2, y2;
- 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;
E_Zone *zone;
desk_w = ec->desk_area.desk_area->w;
desk_h = ec->desk_area.desk_area->h;
}
- else
- {
+ 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:
- /* Ignore */
- break;
+ /* Ignore */
+ break;
case E_MAXIMIZE_FULLSCREEN:
- w = desk_w;
- h = desk_h;
-
- e_client_resize_limit(ec, &w, &h);
- /* center x-direction */
- x1 = desk_x + (desk_w - w) / 2;
- /* center y-direction */
- yy1 = desk_y + (desk_h - h) / 2;
-
- switch (max & E_MAXIMIZE_DIRECTION)
- {
- case E_MAXIMIZE_BOTH:
- e_client_maximized_geometry_set(ec, x1, yy1, w, h);
- break;
+ case E_MAXIMIZE_FILL:
+ if (ec->base_output_resolution.use)
+ {
+ zx = desk_x;
+ zy = desk_y;
+ zw = ec->base_output_resolution.w;
+ zh = ec->base_output_resolution.h;
+ }
+ else
+ {
+ e_zone_desk_useful_geometry_get(zone, ec->desk, &zx, &zy, &zw, &zh, EINA_FALSE);
+ }
+
+ switch (max & E_MAXIMIZE_DIRECTION)
+ {
+ case E_MAXIMIZE_BOTH:
+ e_client_maximized_geometry_set(ec, zx, zy, zw, zh);
+ break;
- case E_MAXIMIZE_VERTICAL:
- e_client_maximized_geometry_set(ec, ec->x, yy1, ec->w, h);
- break;
+ case E_MAXIMIZE_VERTICAL:
+ e_client_maximized_geometry_set(ec, ec->x, zy, ec->w, zh);
+ break;
- case E_MAXIMIZE_HORIZONTAL:
- e_client_maximized_geometry_set(ec, x1, ec->y, w, ec->h);
- break;
+ case E_MAXIMIZE_HORIZONTAL:
+ e_client_maximized_geometry_set(ec, zx, ec->y, zw, ec->h);
+ break;
- case E_MAXIMIZE_LEFT:
- e_client_maximized_geometry_set(ec, desk_x, desk_y, w / 2, h);
- break;
+ case E_MAXIMIZE_LEFT:
+ e_client_maximized_geometry_set(ec, zx, zy, zw / 2, zh);
+ break;
- case E_MAXIMIZE_RIGHT:
- e_client_maximized_geometry_set(ec, x1, desk_y, w / 2, h);
- break;
- }
- break;
+ case E_MAXIMIZE_RIGHT:
+ e_client_maximized_geometry_set(ec, zx + zw / 2, zy, zw / 2, zh);
+ break;
+ }
+ break;
case E_MAXIMIZE_SMART:
case E_MAXIMIZE_EXPAND:
- if (ec->desk->visible)
- {
- // base_output_resolution
- if (ec->base_output_resolution.use)
- {
- zx = desk_x;
- zy = desk_y;
- zw = ec->base_output_resolution.w;
- zh = ec->base_output_resolution.h;
- }
- else
- {
- e_zone_desk_useful_geometry_get(zone, ec->desk, &zx, &zy, &zw, &zh, EINA_TRUE);
- }
- }
- else
- {
- 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;
- zh = y2 - yy1;
- }
- w = zw, h = zh;
-
- evas_object_smart_callback_call(ec->frame, "maximize", NULL);
- e_comp_object_frame_xy_unadjust(ec->frame, ec->x, ec->y, &ecx, &ecy);
- e_comp_object_frame_wh_unadjust(ec->frame, ec->w, ec->h, &ecw, &ech);
-
- if (ecw < zw)
- w = ecw;
-
- if (ech < zh)
- h = ech;
-
- if (ecx < zx) // window left not useful coordinates
- x1 = zx;
- else if (ecx + ecw > zx + zw) // window right not useful coordinates
- x1 = zx + zw - ecw;
- else // window normal position
- x1 = ecx;
-
- if (ecy < zy) // window top not useful coordinates
- yy1 = zy;
- else if (ecy + ech > zy + zh) // window bottom not useful coordinates
- yy1 = zy + zh - ech;
- else // window normal position
- yy1 = ecy;
-
- switch (max & E_MAXIMIZE_DIRECTION)
- {
- case E_MAXIMIZE_BOTH:
- e_client_maximized_geometry_set(ec, zx, zy, zw, zh);
- break;
-
- case E_MAXIMIZE_VERTICAL:
- e_client_maximized_geometry_set(ec, ec->x, zy, ec->w, zh);
- break;
-
- case E_MAXIMIZE_HORIZONTAL:
- e_client_maximized_geometry_set(ec, zx, ec->y, zw, ec->h);
- break;
-
- case E_MAXIMIZE_LEFT:
- e_client_maximized_geometry_set(ec, zx, zy, zw / 2, zh);
- break;
-
- case E_MAXIMIZE_RIGHT:
- e_client_maximized_geometry_set(ec, zx + zw / 2, zy, zw / 2, zh);
- break;
- }
-
- break;
+ if (ec->desk->visible)
+ {
+ // base_output_resolution
+ if (ec->base_output_resolution.use)
+ {
+ zx = desk_x;
+ zy = desk_y;
+ zw = ec->base_output_resolution.w;
+ zh = ec->base_output_resolution.h;
+ }
+ else
+ {
+ e_zone_desk_useful_geometry_get(zone, ec->desk, &zx, &zy, &zw, &zh, EINA_TRUE);
+ }
+ }
+ else
+ {
+ 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;
+ zh = y2 - yy1;
+ }
+
+ evas_object_smart_callback_call(ec->frame, "maximize", NULL);
+
+ switch (max & E_MAXIMIZE_DIRECTION)
+ {
+ case E_MAXIMIZE_BOTH:
+ e_client_maximized_geometry_set(ec, zx, zy, zw, zh);
+ break;
- case E_MAXIMIZE_FILL:
- 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);
-
- /* walk through all windows */
- e_maximize_client_client_fill(ec, &x1, &yy1, &x2, &y2, max);
-
- w = x2 - x1;
- h = y2 - yy1;
- pw = w;
- ph = h;
- e_client_resize_limit(ec, &w, &h);
- /* center x-direction */
- x1 = x1 + (pw - w) / 2;
- /* center y-direction */
- yy1 = yy1 + (ph - h) / 2;
-
- switch (max & E_MAXIMIZE_DIRECTION)
- {
- case E_MAXIMIZE_BOTH:
- e_client_maximized_geometry_set(ec, x1, yy1, w, h);
- break;
+ case E_MAXIMIZE_VERTICAL:
+ e_client_maximized_geometry_set(ec, ec->x, zy, ec->w, zh);
+ break;
- case E_MAXIMIZE_VERTICAL:
- e_client_maximized_geometry_set(ec, ec->x, yy1, ec->w, h);
- break;
+ case E_MAXIMIZE_HORIZONTAL:
+ e_client_maximized_geometry_set(ec, zx, ec->y, zw, ec->h);
+ break;
- case E_MAXIMIZE_HORIZONTAL:
- e_client_maximized_geometry_set(ec, x1, ec->y, w, ec->h);
- break;
+ case E_MAXIMIZE_LEFT:
+ e_client_maximized_geometry_set(ec, zx, zy, zw / 2, zh);
+ break;
- case E_MAXIMIZE_LEFT:
- e_client_maximized_geometry_set(ec, desk_x, desk_y, w / 2, h);
- break;
+ case E_MAXIMIZE_RIGHT:
+ e_client_maximized_geometry_set(ec, zx + zw / 2, zy, zw / 2, zh);
+ break;
+ }
- case E_MAXIMIZE_RIGHT:
- e_client_maximized_geometry_set(ec, x1, desk_y, w / 2, h);
- break;
- }
- break;
+ break;
}
+
if (ec->maximize_override)
ec->maximize_override = override;
}
_e_zone_client_maximize(E_Zone *zone, E_Desk *desk, E_Client *ec, E_Maximize max)
{
int x1, yy1, x2, y2;
- 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;
desk_w = ec->desk_area.desk_area->w;
desk_h = ec->desk_area.desk_area->h;
}
- else
- {
+ else
+ {
desk_x = desk->geom.x;
desk_y = desk->geom.y;
desk_w = desk->geom.w;
desk_h = desk->geom.h;
- }
+ }
switch (max & E_MAXIMIZE_TYPE)
{
case E_MAXIMIZE_NONE:
- /* Ignore */
- break;
+ /* Ignore */
+ break;
case E_MAXIMIZE_FULLSCREEN:
- w = desk_w;
- h = desk_h;
-
- e_client_resize_limit(ec, &w, &h);
- /* center x-direction */
- x1 = desk_x + (desk_w - w) / 2;
- /* center y-direction */
- yy1 = desk_y + (desk_h - h) / 2;
+ case E_MAXIMIZE_FILL:
+ if (ec->base_output_resolution.use)
+ {
+ zx = desk_x;
+ zy = desk_y;
+ zw = ec->base_output_resolution.w;
+ zh = ec->base_output_resolution.h;
+ }
+ else
+ {
+ e_zone_desk_useful_geometry_get(zone, desk, &zx, &zy, &zw, &zh, EINA_FALSE);
+ }
- switch (max & E_MAXIMIZE_DIRECTION)
- {
- case E_MAXIMIZE_BOTH:
- e_client_maximized_geometry_set(ec, x1, yy1, w, h);
- break;
+ switch (max & E_MAXIMIZE_DIRECTION)
+ {
+ case E_MAXIMIZE_BOTH:
+ e_client_maximized_geometry_set(ec, zx, zy, zw, zh);
+ break;
- case E_MAXIMIZE_VERTICAL:
- e_client_maximized_geometry_set(ec, ec->x, yy1, ec->w, h);
- break;
+ case E_MAXIMIZE_VERTICAL:
+ e_client_maximized_geometry_set(ec, ec->x, zy, ec->w, zh);
+ break;
- case E_MAXIMIZE_HORIZONTAL:
- e_client_maximized_geometry_set(ec, x1, ec->y, w, ec->h);
- break;
+ case E_MAXIMIZE_HORIZONTAL:
+ e_client_maximized_geometry_set(ec, zx, ec->y, zw, ec->h);
+ break;
- case E_MAXIMIZE_LEFT:
- e_client_maximized_geometry_set(ec, desk_x, desk_y, w / 2, h);
- break;
+ case E_MAXIMIZE_LEFT:
+ e_client_maximized_geometry_set(ec, zx, zy, zw / 2, zh);
+ break;
- case E_MAXIMIZE_RIGHT:
- e_client_maximized_geometry_set(ec, x1, desk_y, w / 2, h);
- break;
- }
- break;
+ case E_MAXIMIZE_RIGHT:
+ e_client_maximized_geometry_set(ec, zx + zw / 2, zy, zw / 2, zh);
+ break;
+ }
+ break;
case E_MAXIMIZE_SMART:
case E_MAXIMIZE_EXPAND:
- if (desk->visible)
- {
- // base_output_resolution
- if (ec->base_output_resolution.use)
- {
- zx = desk_x;
- zy = desk_y;
- zw = ec->base_output_resolution.w;
- zh = ec->base_output_resolution.h;
- }
- else
- {
- e_zone_desk_useful_geometry_get(zone, desk, &zx, &zy, &zw, &zh, EINA_TRUE);
- }
- }
- else
- {
- 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;
- zh = y2 - yy1;
- }
- w = zw, h = zh;
-
- evas_object_smart_callback_call(ec->frame, "maximize", NULL);
- e_comp_object_frame_xy_unadjust(ec->frame, ec->x, ec->y, &ecx, &ecy);
- e_comp_object_frame_wh_unadjust(ec->frame, ec->w, ec->h, &ecw, &ech);
-
- if (ecw < zw)
- w = ecw;
-
- if (ech < zh)
- h = ech;
-
- if (ecx < zx) // window left not useful coordinates
- x1 = zx;
- else if (ecx + ecw > zx + zw) // window right not useful coordinates
- x1 = zx + zw - ecw;
- else // window normal position
- x1 = ecx;
-
- if (ecy < zy) // window top not useful coordinates
- yy1 = zy;
- else if (ecy + ech > zy + zh) // window bottom not useful coordinates
- yy1 = zy + zh - ech;
- else // window normal position
- yy1 = ecy;
-
- switch (max & E_MAXIMIZE_DIRECTION)
- {
- case E_MAXIMIZE_BOTH:
- e_client_maximized_geometry_set(ec, zx, zy, zw, zh);
- break;
-
- case E_MAXIMIZE_VERTICAL:
- e_client_maximized_geometry_set(ec, ec->x, zy, ec->w, zh);
- break;
-
- case E_MAXIMIZE_HORIZONTAL:
- e_client_maximized_geometry_set(ec, zx, ec->y, zw, ec->h);
- break;
-
- case E_MAXIMIZE_LEFT:
- e_client_maximized_geometry_set(ec, zx, zy, zw / 2, zh);
- break;
-
- case E_MAXIMIZE_RIGHT:
- e_client_maximized_geometry_set(ec, zx + zw / 2, zy, zw / 2, zh);
- break;
- }
+ if (desk->visible)
+ {
+ // base_output_resolution
+ if (ec->base_output_resolution.use)
+ {
+ zx = desk_x;
+ zy = desk_y;
+ zw = ec->base_output_resolution.w;
+ zh = ec->base_output_resolution.h;
+ }
+ else
+ {
+ e_zone_desk_useful_geometry_get(zone, desk, &zx, &zy, &zw, &zh, EINA_TRUE);
+ }
+ }
+ else
+ {
+ 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;
+ zh = y2 - yy1;
+ }
- break;
+ evas_object_smart_callback_call(ec->frame, "maximize", NULL);
- case E_MAXIMIZE_FILL:
- 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);
-
- /* walk through all windows */
- e_maximize_client_client_fill(ec, &x1, &yy1, &x2, &y2, max);
-
- w = x2 - x1;
- h = y2 - yy1;
- pw = w;
- ph = h;
- e_client_resize_limit(ec, &w, &h);
- /* center x-direction */
- x1 = x1 + (pw - w) / 2;
- /* center y-direction */
- yy1 = yy1 + (ph - h) / 2;
-
- switch (max & E_MAXIMIZE_DIRECTION)
- {
- case E_MAXIMIZE_BOTH:
- e_client_maximized_geometry_set(ec, x1, yy1, w, h);
- break;
+ switch (max & E_MAXIMIZE_DIRECTION)
+ {
+ case E_MAXIMIZE_BOTH:
+ e_client_maximized_geometry_set(ec, zx, zy, zw, zh);
+ break;
- case E_MAXIMIZE_VERTICAL:
- e_client_maximized_geometry_set(ec, ec->x, yy1, ec->w, h);
- break;
+ case E_MAXIMIZE_VERTICAL:
+ e_client_maximized_geometry_set(ec, ec->x, zy, ec->w, zh);
+ break;
- case E_MAXIMIZE_HORIZONTAL:
- e_client_maximized_geometry_set(ec, x1, ec->y, w, ec->h);
- break;
+ case E_MAXIMIZE_HORIZONTAL:
+ e_client_maximized_geometry_set(ec, zx, ec->y, zw, ec->h);
+ break;
- case E_MAXIMIZE_LEFT:
- e_client_maximized_geometry_set(ec, desk_x, desk_y, w / 2, h);
- break;
+ case E_MAXIMIZE_LEFT:
+ e_client_maximized_geometry_set(ec, zx, zy, zw / 2, zh);
+ break;
- case E_MAXIMIZE_RIGHT:
- e_client_maximized_geometry_set(ec, x1, desk_y, w / 2, h);
- break;
- }
- break;
+ case E_MAXIMIZE_RIGHT:
+ e_client_maximized_geometry_set(ec, zx + zw / 2, zy, zw / 2, zh);
+ break;
+ }
+ break;
}
+
if (ec->maximize_override)
ec->maximize_override = override;
}