mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-03-20 15:51:07 +01:00
wayland: Prevent the window from errantly growing when scale to display is used
Some compositors will send a configure event immediately after a scale event, however, this event can contain the old logical size, and should be ignored, or the window will incorrectly change size when moved between displays with differing scale factors. Store the last requested logical size as the last configure size when resizing a floating window due to a scale change, so a configure event immediately following with the old size will be ignored.
This commit is contained in:
@@ -1710,6 +1710,16 @@ static void Wayland_HandlePreferredScaleChanged(SDL_WindowData *window_data, dou
|
|||||||
* the new backbuffer dimensions.
|
* the new backbuffer dimensions.
|
||||||
*/
|
*/
|
||||||
if (window_data->floating) {
|
if (window_data->floating) {
|
||||||
|
/* Some compositors will send a configure event immediately after a scale event, however,
|
||||||
|
* this event can contain the old logical size, and should be ignored, or the window can
|
||||||
|
* incorrectly change size when moved between displays with differing scale factors.
|
||||||
|
*
|
||||||
|
* Store the last requested logical size as the last configure size, so a configure event
|
||||||
|
* with the old size will be ignored.
|
||||||
|
*/
|
||||||
|
window_data->last_configure.width = window_data->requested.logical_width;
|
||||||
|
window_data->last_configure.height = window_data->requested.logical_height;
|
||||||
|
|
||||||
window_data->requested.logical_width = PixelToPoint(window_data->sdlwindow, window_data->requested.pixel_width);
|
window_data->requested.logical_width = PixelToPoint(window_data->sdlwindow, window_data->requested.pixel_width);
|
||||||
window_data->requested.logical_height = PixelToPoint(window_data->sdlwindow, window_data->requested.pixel_height);
|
window_data->requested.logical_height = PixelToPoint(window_data->sdlwindow, window_data->requested.pixel_height);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user