summaryrefslogtreecommitdiffstats
path: root/video/out/w32_common.c
diff options
context:
space:
mode:
authorKacper Michajłow <kasper93@gmail.com>2023-08-21 23:48:00 +0200
committerDudemanguy <random342@airmail.cc>2023-09-21 23:13:19 +0000
commit0d457ffc40604c4cf57c87fa62ca588735afd714 (patch)
tree722f2f8b3886f6477b8013b375263135c9fa50ae /video/out/w32_common.c
parentfac2b31df70710316860c55d2c31af8cdb58e1a3 (diff)
downloadmpv-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.c12
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) {