diff --git a/src/bin/e_client.c b/src/bin/e_client.c index a35c5eeaa..9aaad42ef 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -3327,13 +3327,13 @@ e_client_maximize(E_Client *ec, E_Maximize max) if (!(ec->maximized & E_MAXIMIZE_HORIZONTAL)) { /* Horizontal hasn't been set */ - ec->saved.x = ec->client.x; + ec->saved.x = ec->client.x - ec->zone->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->saved.y = ec->client.y - ec->zone->y; ec->saved.h = ec->client.h; } @@ -3393,8 +3393,8 @@ e_client_unmaximize(E_Client *ec, E_Maximize max) evas_object_smart_callback_call(ec->frame, "unmaximize", NULL); ec->maximized = E_MAXIMIZE_NONE; e_client_util_move_resize_without_frame(ec, - ec->saved.x, - ec->saved.y, + ec->saved.x + ec->zone->x, + ec->saved.y + ec->zone->y, ec->saved.w, ec->saved.h); ec->saved.x = ec->saved.y = ec->saved.w = ec->saved.h = 0; e_hints_window_size_unset(ec); @@ -3484,8 +3484,8 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy) } else { - ec->saved.x = ec->x - ec->zone->x; - ec->saved.y = ec->y - ec->zone->y; + ec->saved.x = ec->client.x - ec->zone->x; + ec->saved.y = ec->client.y - ec->zone->y; ec->saved.w = ec->client.w; ec->saved.h = ec->client.h; } @@ -3511,7 +3511,7 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy) if ((eina_list_count(ec->comp->zones) > 1) || (policy == E_FULLSCREEN_RESIZE) || (!ecore_x_randr_query())) { - evas_object_geometry_set(ec->frame, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h); + e_comp_object_util_fullscreen(ec->frame); } else if (policy == E_FULLSCREEN_ZOOM) { diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 9188a0b0f..c326a10e2 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -688,8 +688,8 @@ _e_comp_intercept_move(void *data, Evas_Object *obj, int x, int y) if ((!cw->ec->shading) && (!cw->ec->shaded)) { cw->ec->changes.need_unmaximize = 1; - cw->ec->saved.x = ix; - cw->ec->saved.y = iy; + cw->ec->saved.x = ix - cw->ec->zone->x; + cw->ec->saved.y = iy - cw->ec->zone->y; cw->ec->saved.w = cw->ec->client.w; cw->ec->saved.h = cw->ec->client.h; EC_CHANGED(cw->ec); @@ -734,8 +734,8 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, int w, int h) cw->ec->changes.need_unmaximize = 1; cw->ec->saved.w = iw; cw->ec->saved.h = ih; - cw->ec->saved.x = cw->ec->client.x; - cw->ec->saved.y = cw->ec->client.y; + cw->ec->saved.x = cw->ec->client.x - cw->ec->zone->x; + cw->ec->saved.y = cw->ec->client.y - cw->ec->zone->y; EC_CHANGED(cw->ec); return; } diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index fd8eca213..21ebb1d9d 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -1426,8 +1426,17 @@ _e_comp_x_configure_request(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore { if ((ec->maximized & E_MAXIMIZE_TYPE) != E_MAXIMIZE_NONE) { + E_Zone *zone; + ec->saved.x = x; ec->saved.y = y; + + zone = e_comp_zone_xy_get(ec->comp, x, y); + if (zone && (zone->x || zone->y)) + { + ec->saved.x -= zone->x; + ec->saved.y -= zone->y; + } } else {