mirror of
https://github.com/brl/mutter.git
synced 2024-11-27 10:30:47 -05:00
251bb45ec0
Prior to67033b0a
mutter was accidentally including sizes for configurations that were just focus state changes. This was not leading to any known problems on the client side, but it was causing issues in mutter itself when detecting whether a resize originated from the client or the server. Not including sizes in focus change configurations anymore however revealed a bug in gtk. It was storing the window size when in a fixed size mode (tiled/maximized/fullscreen), but not on any other server side resizes. It was then restoring this stored size whenever there was a new configuration without a size while in floating mode, i.e. the focus change configurations generated by mutter after67033b0a
. This change now addresses the issue67033b0a
was fixing in a way that restores the previous behavior of always including the size whenever sending a configuration. Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2091 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2238>
76 lines
2.9 KiB
C
76 lines
2.9 KiB
C
/*
|
|
* Copyright (C) 2019 Red Hat
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*
|
|
*/
|
|
|
|
#ifndef META_WAYLAND_WINDOW_CONFIGURATION_H
|
|
#define META_WAYLAND_WINDOW_CONFIGURATION_H
|
|
|
|
#include <glib.h>
|
|
#include <stdint.h>
|
|
|
|
#include "core/window-private.h"
|
|
#include "wayland/meta-wayland-types.h"
|
|
|
|
struct _MetaWaylandWindowConfiguration
|
|
{
|
|
uint32_t serial;
|
|
|
|
gboolean has_position;
|
|
int x;
|
|
int y;
|
|
|
|
gboolean has_relative_position;
|
|
int rel_x;
|
|
int rel_y;
|
|
|
|
gboolean has_size;
|
|
gboolean is_resizing;
|
|
int width;
|
|
int height;
|
|
|
|
int scale;
|
|
MetaGravity gravity;
|
|
MetaMoveResizeFlags flags;
|
|
|
|
int bounds_width;
|
|
int bounds_height;
|
|
};
|
|
|
|
MetaWaylandWindowConfiguration * meta_wayland_window_configuration_new (MetaWindow *window,
|
|
MetaRectangle rect,
|
|
int max_width,
|
|
int max_height,
|
|
int scale,
|
|
MetaMoveResizeFlags flags,
|
|
MetaGravity gravity);
|
|
|
|
MetaWaylandWindowConfiguration * meta_wayland_window_configuration_new_relative (MetaWindow *window,
|
|
int rel_x,
|
|
int rel_y,
|
|
int width,
|
|
int height,
|
|
int scale);
|
|
|
|
MetaWaylandWindowConfiguration * meta_wayland_window_configuration_new_empty (int bounds_width,
|
|
int bounds_height);
|
|
|
|
void meta_wayland_window_configuration_free (MetaWaylandWindowConfiguration *configuration);
|
|
|
|
#endif /* META_WAYLAND_WINDOW_CONFIGURATION_H */
|