diff --git a/doc/newsfragments/fix-windows-high-dpi.bugfix b/doc/newsfragments/fix-windows-high-dpi.bugfix new file mode 100644 index 00000000000..a7bddac1339 --- /dev/null +++ b/doc/newsfragments/fix-windows-high-dpi.bugfix @@ -0,0 +1,2 @@ +Fix running on a windows monitor with Scale set to more than 100%. +(https://github.com/debauchee/barrier/issues/94, https://github.com/debauchee/barrier/issues/273, https://github.com/debauchee/barrier/issues/1363, https://github.com/debauchee/barrier/issues/1405, https://github.com/debauchee/barrier/issues/1462) \ No newline at end of file diff --git a/src/lib/barrier/win32/AppUtilWindows.cpp b/src/lib/barrier/win32/AppUtilWindows.cpp index b19cf15f59e..e901b95dc58 100644 --- a/src/lib/barrier/win32/AppUtilWindows.cpp +++ b/src/lib/barrier/win32/AppUtilWindows.cpp @@ -138,6 +138,10 @@ AppUtilWindows::run(int argc, char** argv) throw std::runtime_error("Barrier only supports Windows XP SP3 and above."); } + // This changes the behavior of future calls to GetSystemMetrics() + // so that the size or position in raw pixels is returned instead of a scaled value + // (when a windows display has a Scale of > 100% set). + SetProcessDPIAware(); // record window instance for tray icon, etc ArchMiscWindows::setInstanceWin32(GetModuleHandle(NULL));