From: Rémi Bernon rbernon@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57175 --- programs/winecfg/resource.h | 1 + programs/winecfg/winecfg.rc | 3 ++- programs/winecfg/x11drvdlg.c | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h index cd7eaaf711e..d785551f317 100644 --- a/programs/winecfg/resource.h +++ b/programs/winecfg/resource.h @@ -125,6 +125,7 @@ #define IDC_ENABLE_MANAGED 1100 #define IDC_ENABLE_DECORATED 1101 #define IDC_FULLSCREEN_GRAB 1102 +#define IDC_FORCE_DPI_AWARENESS 1103
#define IDC_RES_TRACKBAR 1107 #define IDC_RES_DPIEDIT 1108 diff --git a/programs/winecfg/winecfg.rc b/programs/winecfg/winecfg.rc index 779a2f900e3..cd5b6d17d70 100644 --- a/programs/winecfg/winecfg.rc +++ b/programs/winecfg/winecfg.rc @@ -181,11 +181,12 @@ BEGIN EDITTEXT IDC_DESKTOP_WIDTH,84,68,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED EDITTEXT IDC_DESKTOP_HEIGHT,137,68,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED
- GROUPBOX "Screen resolution",IDC_STATIC,8,95,244,84 + GROUPBOX "Screen resolution",IDC_STATIC,8,95,244,94 CONTROL "", IDC_RES_TRACKBAR, "msctls_trackbar32",WS_TABSTOP,12,105,171,15 EDITTEXT IDC_RES_DPIEDIT,188,105,23,13,ES_NUMBER|WS_TABSTOP LTEXT "#msgctxt#unit: dots/inch#dpi",IDC_STATIC,215,107,30,8 LTEXT "This is a sample text using 10 point Tahoma",IDC_RES_FONT_PREVIEW,15,124,230,49 + CONTROL "Force per-monitor DPI awareness for every application",IDC_FORCE_DPI_AWARENESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,173,230,10 END
IDD_DLLCFG DIALOG 0, 0, 260, 220 diff --git a/programs/winecfg/x11drvdlg.c b/programs/winecfg/x11drvdlg.c index aea52717a78..594b7292c55 100644 --- a/programs/winecfg/x11drvdlg.c +++ b/programs/winecfg/x11drvdlg.c @@ -138,6 +138,13 @@ static void init_dialog(HWND dialog) SendDlgItemMessageW(dialog, IDC_DESKTOP_HEIGHT, EM_LIMITTEXT, RES_MAXLEN, 0); }
+ buf = get_reg_key(config_key, keypath(L"X11 Driver"), L"ForceDpiAwareness", L"Y"); + if (IS_OPTION_TRUE(*buf)) + CheckDlgButton(dialog, IDC_FORCE_DPI_AWARENESS, BST_CHECKED); + else + CheckDlgButton(dialog, IDC_FORCE_DPI_AWARENESS, BST_UNCHECKED); + free(buf); + buf = get_reg_key(config_key, keypath(L"X11 Driver"), L"GrabFullscreen", L"N"); if (IS_OPTION_TRUE(*buf)) CheckDlgButton(dialog, IDC_FULLSCREEN_GRAB, BST_CHECKED); @@ -227,6 +234,14 @@ static void on_fullscreen_grab_clicked(HWND dialog) set_reg_key(config_key, keypath(L"X11 Driver"), L"GrabFullscreen", L"N"); }
+static void on_force_dpi_awareness_clicked(HWND dialog) +{ + if (IsDlgButtonChecked(dialog, IDC_FORCE_DPI_AWARENESS) == BST_CHECKED) + set_reg_key(config_key, keypath(L"X11 Driver"), L"ForceDpiAwareness", L"Y"); + else + set_reg_key(config_key, keypath(L"X11 Driver"), L"ForceDpiAwareness", L"N"); +} + static INT read_logpixels_reg(void) { DWORD dwLogPixels; @@ -383,6 +398,7 @@ GraphDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) case IDC_ENABLE_MANAGED: on_enable_managed_clicked(hDlg); break; case IDC_ENABLE_DECORATED: on_enable_decorated_clicked(hDlg); break; case IDC_FULLSCREEN_GRAB: on_fullscreen_grab_clicked(hDlg); break; + case IDC_FORCE_DPI_AWARENESS: on_force_dpi_awareness_clicked(hDlg); break; } break; }