core/window: Do not rely on Monitor Numbering
When the monitors change meta_window_update_for_monitors_changed is called which is responsible for updating window->monitor. It however can go through the entire window placement and constraint machinery before it's able to do so. In this period window->monitor points to the old MetaMonitor where the monitor number doesn't reflect the index into the MonitorManager anymore. Avoid relying on the window->monitor->number and go through the Monitor directly. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3402 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3691>
This commit is contained in:
parent
74a01e3f39
commit
f91851154e
1 changed files with 3 additions and 5 deletions
|
@ -2227,7 +2227,7 @@ meta_window_show (MetaWindow *window)
|
|||
window->has_maximize_func)
|
||||
{
|
||||
MtkRectangle work_area;
|
||||
meta_window_get_work_area_for_monitor (window, window->monitor->number, &work_area);
|
||||
meta_window_get_work_area_current_monitor (window, &work_area);
|
||||
/* Automaximize windows that map with a size > MAX_UNMAXIMIZED_WINDOW_AREA of the work area */
|
||||
if (window->rect.width * window->rect.height > work_area.width * work_area.height * MAX_UNMAXIMIZED_WINDOW_AREA)
|
||||
{
|
||||
|
@ -3101,7 +3101,7 @@ meta_window_unmaximize (MetaWindow *window,
|
|||
MtkRectangle old_frame_rect, old_buffer_rect;
|
||||
gboolean has_target_size;
|
||||
|
||||
meta_window_get_work_area_for_monitor (window, window->monitor->number, &work_area);
|
||||
meta_window_get_work_area_current_monitor (window, &work_area);
|
||||
meta_window_get_frame_rect (window, &old_frame_rect);
|
||||
meta_window_get_buffer_rect (window, &old_buffer_rect);
|
||||
|
||||
|
@ -5837,9 +5837,7 @@ void
|
|||
meta_window_get_work_area_current_monitor (MetaWindow *window,
|
||||
MtkRectangle *area)
|
||||
{
|
||||
meta_window_get_work_area_for_monitor (window,
|
||||
window->monitor->number,
|
||||
area);
|
||||
meta_window_get_work_area_for_logical_monitor (window, window->monitor, area);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue