MetaWindowActor: Go back to freezing affecting actor geometry

We do, in fact, need freezing to affect window geometry, so that
move-resize operations (such as an interactive resize from the
left, or a resize of a popup centered by the application) occur
atomically.

So to make map effects work properly, only exclude the initial
placement of a window from freezing. (In the future, we may want
to consider whether pure moves of a window being done in response
to a user drag should also be excluded from freezing.)

Rename meta_window_sync_actor_position() to
meta_window_sync_actor_geometry() for clarity.

https://bugzilla.gnome.org/show_bug.cgi?id=693922
This commit is contained in:
Owen W. Taylor
2013-02-15 21:27:00 -05:00
parent e8b0c11703
commit d900d83522
5 changed files with 31 additions and 12 deletions

View File

@ -4775,6 +4775,7 @@ meta_window_move_resize_internal (MetaWindow *window,
gboolean is_configure_request;
gboolean do_gravity_adjust;
gboolean is_user_action;
gboolean did_placement;
gboolean configure_frame_first;
gboolean use_static_gravity;
/* used for the configure request, but may not be final
@ -4848,6 +4849,8 @@ meta_window_move_resize_internal (MetaWindow *window,
new_rect.x, new_rect.y);
}
did_placement = !window->placed && window->calc_placement;
meta_window_constrain (window,
window->frame ? &borders : NULL,
flags,
@ -5161,7 +5164,8 @@ meta_window_move_resize_internal (MetaWindow *window,
save_user_window_placement (window);
if (need_move_frame || need_resize_frame ||
need_move_client || need_resize_client)
need_move_client || need_resize_client ||
did_placement)
{
int newx, newy;
meta_window_get_position (window, &newx, &newy);
@ -5172,7 +5176,8 @@ meta_window_move_resize_internal (MetaWindow *window,
window->user_rect.width, window->user_rect.height);
if (window->display->compositor)
meta_compositor_sync_window_geometry (window->display->compositor,
window);
window,
did_placement);
}
else
{
@ -5506,7 +5511,7 @@ meta_window_configure_notify (MetaWindow *window,
meta_warning ("Unhandled change of windows override redirect status\n");
if (window->display->compositor)
meta_compositor_sync_window_geometry (window->display->compositor, window);
meta_compositor_sync_window_geometry (window->display->compositor, window, FALSE);
}
void