summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorph <39850852+Morph1984@users.noreply.github.com>2023-02-13 01:51:41 +0100
committerMorph <39850852+Morph1984@users.noreply.github.com>2023-02-13 03:58:49 +0100
commitd6677b50f68f8c1733ea91403f590b5c94fabc18 (patch)
tree4ac8ed31d589093bc2065de394e02a13aa7d8602
parentMerge pull request #9757 from german77/gyro (diff)
downloadyuzu-d6677b50f68f8c1733ea91403f590b5c94fabc18.tar
yuzu-d6677b50f68f8c1733ea91403f590b5c94fabc18.tar.gz
yuzu-d6677b50f68f8c1733ea91403f590b5c94fabc18.tar.bz2
yuzu-d6677b50f68f8c1733ea91403f590b5c94fabc18.tar.lz
yuzu-d6677b50f68f8c1733ea91403f590b5c94fabc18.tar.xz
yuzu-d6677b50f68f8c1733ea91403f590b5c94fabc18.tar.zst
yuzu-d6677b50f68f8c1733ea91403f590b5c94fabc18.zip
-rw-r--r--src/yuzu/main.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index c278d8dab..62dfc526a 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -3167,8 +3167,20 @@ void GMainWindow::ShowFullscreen() {
window->hide();
window->setWindowFlags(window->windowFlags() | Qt::FramelessWindowHint);
const auto screen_geometry = GuessCurrentScreen(window)->geometry();
+ // NB: On Windows, a borderless window will be treated the same as exclusive fullscreen
+ // when the window geometry matches the physical dimensions of the screen.
+ // However, with High DPI scaling, when the devicePixelRatioF() is > 1, the borderless
+ // window apparently is not treated as exclusive fullscreen and functions correctly.
+ // One can verify and replicate this behavior by using a high resolution (4K) display,
+ // and switching between 100% and 200% scaling in Windows' display settings.
+ // At 100%, without the addition of 1, it is treated as exclusive fullscreen.
+ // At 200%, with or without the addition of 1, it is treated as borderless windowed.
+ // Therefore, we can use (read: abuse) this difference in behavior to fix this issue for
+ // those with higher resolution displays when the Qt scaling ratio is > 1.
+ // Should this behavior be changed in the future, please revisit this workaround.
+ const bool must_add_one = devicePixelRatioF() == 1.0f;
window->setGeometry(screen_geometry.x(), screen_geometry.y(), screen_geometry.width(),
- screen_geometry.height() + 1);
+ screen_geometry.height() + (must_add_one ? 1 : 0));
window->raise();
window->showNormal();
};