diff options
author | Kacper Michajłow <kasper93@gmail.com> | 2023-08-21 23:48:00 +0200 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2023-09-21 23:13:19 +0000 |
commit | 0d457ffc40604c4cf57c87fa62ca588735afd714 (patch) | |
tree | 722f2f8b3886f6477b8013b375263135c9fa50ae /video/out/w32_common.c | |
parent | fac2b31df70710316860c55d2c31af8cdb58e1a3 (diff) | |
download | mpv-0d457ffc40604c4cf57c87fa62ca588735afd714.tar.bz2 mpv-0d457ffc40604c4cf57c87fa62ca588735afd714.tar.xz |
win32: fix fit_window_on_screen to account for invisible borders
Fixes too small initial window size.
Diffstat (limited to 'video/out/w32_common.c')
-rw-r--r-- | video/out/w32_common.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/video/out/w32_common.c b/video/out/w32_common.c index a26c56e8da..ee00972ba3 100644 --- a/video/out/w32_common.c +++ b/video/out/w32_common.c @@ -877,6 +877,18 @@ static void fit_window_on_screen(struct vo_w32_state *w32) if (w32->opts->border) subtract_window_borders(w32, w32->window, &screen); + // Check for invisible borders and adjust the work area size + RECT frame, window; + if (GetWindowRect(w32->window, &window) && + SUCCEEDED(DwmGetWindowAttribute(w32->window, DWMWA_EXTENDED_FRAME_BOUNDS, + &frame, sizeof(RECT)))) + { + screen.left -= frame.left - window.left; + screen.top -= frame.top - window.top; + screen.right += window.right - frame.right; + screen.bottom += window.bottom - frame.bottom; + } + bool adjusted = fit_rect_size(&w32->windowrc, rect_w(screen), rect_h(screen)); if (w32->windowrc.top < screen.top) { |