static void _elm_ews_border_maximized_apply(Ecore_Evas *ee, Evas_Object *o) { int x, y, w, h; if (ecore_evas_maximized_get(ee)) { Eina_Rectangle *r; int ex, ey, ew, eh; edje_object_signal_emit(o, "elm,state,maximized,on", "elm"); edje_object_message_signal_process(o); ecore_evas_geometry_get(ee, &x, &y, &w, &h); r = _elm_ews_wm_border_geo_find(ee); if (!r) { r = malloc(sizeof(Eina_Rectangle)); eina_hash_add(_ews_borders_geo, &ee, r); } r->x = x; r->y = y; r->w = w; r->h = h; _elm_ews_border_usable_screen_geometry_get(&x, &y, &w, &h); edje_object_parts_extends_calc(o, &ex, &ey, &ew, &eh); x -= ex; y -= ey; w -= ew - r->w; h -= eh - r->h; } else { Eina_Rectangle *r = _elm_ews_wm_border_geo_find(ee); edje_object_signal_emit(o, "elm,state,maximized,off", "elm"); if (!r) ecore_evas_geometry_get(ee, &x, &y, &w, &h); else { x = r->x; y = r->y; w = r->w; h = r->h; } } ecore_evas_move_resize(ee, x, y, w, h); _elm_ews_border_geo_apply(ee, o); }
int EcoreEvasWindow::isMaximized() const { return ecore_evas_maximized_get( _ee ); }