]> git.sur5r.net Git - i3/i3/commit
Fix aspect ratio bugs
authorOrestis Floros <orestisf1993@gmail.com>
Mon, 1 Oct 2018 16:47:33 +0000 (19:47 +0300)
committerOrestis Floros <orestisf1993@gmail.com>
Mon, 12 Nov 2018 16:45:00 +0000 (18:45 +0200)
commit29f2510fa9484a5fa235de9a1c5c937292151888
tree1d516cb3af3f7b614d3a0a809a0ed202d1c3ab6e
parentf397698d43e3dd4f4625e1fed1b1d0470d0acdf6
Fix aspect ratio bugs

- ICCCM says: > If a base size is not provided, the minimum size is to
be used in its place and vice versa.
i3 didn't obey the "vice versa" part. Min size and base size are both
saved without replacements in window_update_normal_hints,
floating_check_size makes the needed replacements if either was not
provided.
- Aspect ratio is now saved correctly in manage_window because
window_update_normal_hints is called.
- i3 didn't save the aspect ratio if the window conformed the given
aspect ratio range when handle_normal_hints was called. If the window
was resized to a size outside of the given bounds, i3 didn't correct it.
- Aspect ratio now affects only tiling windows, like the rest of the
normal size hints
- The aspect ratio calculation is now done without a loop

A real life example of how these changes affect the workflow:
An mpv window, when playing a video, sets its min == max aspect ratio
during mapping. i3 ignored these hints. When resized, the window's
aspect ratio was not preserved. With this commit, resizing floating mpv
windows will always preserve the aspect ratio.
13 files changed:
include/data.h
include/floating.h
include/window.h
src/commands.c
src/con.c
src/floating.c
src/handlers.c
src/load_layout.c
src/manage.c
src/render.c
src/scratchpad.c
src/window.c
testcases/t/133-size-hints.t