window/wayland: Calculate position also for acked fullscreen configs
An acked fullscreen window also need to have its position updated in response to a configure ack, so that it's moved to the right position (e.g. correct monitor). Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2338>
This commit is contained in:
parent
2a62e690a2
commit
47c8063b30
@ -370,9 +370,10 @@ setup_constraint_info (ConstraintInfo *info,
|
|||||||
info->action_type = ACTION_RESIZE;
|
info->action_type = ACTION_RESIZE;
|
||||||
else if (flags & META_MOVE_RESIZE_MOVE_ACTION)
|
else if (flags & META_MOVE_RESIZE_MOVE_ACTION)
|
||||||
info->action_type = ACTION_MOVE;
|
info->action_type = ACTION_MOVE;
|
||||||
|
else if (flags & META_MOVE_RESIZE_WAYLAND_FINISH_MOVE_RESIZE)
|
||||||
|
info->action_type = ACTION_MOVE;
|
||||||
else
|
else
|
||||||
g_error ("BAD, BAD developer! No treat for you! (Fix your calls to "
|
g_assert_not_reached ();
|
||||||
"meta_window_move_resize_internal()).");
|
|
||||||
|
|
||||||
info->is_user_action = (flags & META_MOVE_RESIZE_USER_ACTION);
|
info->is_user_action = (flags & META_MOVE_RESIZE_USER_ACTION);
|
||||||
|
|
||||||
|
@ -47,6 +47,8 @@ meta_wayland_window_configuration_new (MetaWindow *window,
|
|||||||
.scale = scale,
|
.scale = scale,
|
||||||
.gravity = gravity,
|
.gravity = gravity,
|
||||||
.flags = flags,
|
.flags = flags,
|
||||||
|
|
||||||
|
.is_fullscreen = meta_window_is_fullscreen (window),
|
||||||
};
|
};
|
||||||
|
|
||||||
if (flags & META_MOVE_RESIZE_MOVE_ACTION ||
|
if (flags & META_MOVE_RESIZE_MOVE_ACTION ||
|
||||||
|
@ -50,6 +50,8 @@ struct _MetaWaylandWindowConfiguration
|
|||||||
|
|
||||||
int bounds_width;
|
int bounds_width;
|
||||||
int bounds_height;
|
int bounds_height;
|
||||||
|
|
||||||
|
gboolean is_fullscreen;
|
||||||
};
|
};
|
||||||
|
|
||||||
MetaWaylandWindowConfiguration * meta_wayland_window_configuration_new (MetaWindow *window,
|
MetaWaylandWindowConfiguration * meta_wayland_window_configuration_new (MetaWindow *window,
|
||||||
|
@ -939,9 +939,9 @@ meta_window_wayland_get_geometry_scale (MetaWindow *window)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
calculate_offset (MetaWaylandWindowConfiguration *configuration,
|
calculate_position (MetaWaylandWindowConfiguration *configuration,
|
||||||
MetaRectangle *geometry,
|
MetaRectangle *geometry,
|
||||||
MetaRectangle *rect)
|
MetaRectangle *rect)
|
||||||
{
|
{
|
||||||
int offset_x;
|
int offset_x;
|
||||||
int offset_y;
|
int offset_y;
|
||||||
@ -1043,16 +1043,19 @@ meta_window_wayland_finish_move_resize (MetaWindow *window,
|
|||||||
rect.x = parent->rect.x + acked_configuration->rel_x;
|
rect.x = parent->rect.x + acked_configuration->rel_x;
|
||||||
rect.y = parent->rect.y + acked_configuration->rel_y;
|
rect.y = parent->rect.y + acked_configuration->rel_y;
|
||||||
}
|
}
|
||||||
else if (acked_configuration->has_position)
|
else
|
||||||
{
|
{
|
||||||
calculate_offset (acked_configuration, &new_geom, &rect);
|
if (acked_configuration->is_fullscreen)
|
||||||
|
flags |= META_MOVE_RESIZE_CONSTRAIN;
|
||||||
|
if (acked_configuration->has_position)
|
||||||
|
calculate_position (acked_configuration, &new_geom, &rect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (acked_configuration && acked_configuration->has_position)
|
if (acked_configuration && acked_configuration->has_position)
|
||||||
calculate_offset (acked_configuration, &new_geom, &rect);
|
calculate_position (acked_configuration, &new_geom, &rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
rect.x += dx;
|
rect.x += dx;
|
||||||
|
Loading…
Reference in New Issue
Block a user