From 2d7f929d6a5181e1d3894fbb0febc1fcfad2140d Mon Sep 17 00:00:00 2001 From: Selva Nair Date: Sat, 27 Nov 2021 13:08:31 -0500 Subject: [PATCH] Provide more space for challenge dialog text We do use a re-sizable dialog box for dynamic challenge-response to cater for potentially long lines of challenge text. But the space specified for the widget is enough for only a single short line (~60 characters) of text. Increase the horizontal and vertical space to allow for up to two lines of ~120 characters per line. The default size of the Window is not changed. But it is automatically resized if the space required for the text is longer than the window width minus some margin. The max horizontal size of the window is capped at 640 nominal pixels as longer text will be wrapped in to two lines. Github issue #468 Signed-off-by: Selva Nair --- openvpn.c | 19 +++++++++++++++++++ res/openvpn-gui-res-cs.rc | 2 +- res/openvpn-gui-res-de.rc | 2 +- res/openvpn-gui-res-dk.rc | 2 +- res/openvpn-gui-res-en.rc | 2 +- res/openvpn-gui-res-es.rc | 2 +- res/openvpn-gui-res-fa.rc | 2 +- res/openvpn-gui-res-fi.rc | 2 +- res/openvpn-gui-res-fr.rc | 2 +- res/openvpn-gui-res-it.rc | 2 +- res/openvpn-gui-res-jp.rc | 2 +- res/openvpn-gui-res-kr.rc | 2 +- res/openvpn-gui-res-nl.rc | 2 +- res/openvpn-gui-res-no.rc | 2 +- res/openvpn-gui-res-pl.rc | 2 +- res/openvpn-gui-res-pt.rc | 2 +- res/openvpn-gui-res-ru.rc | 2 +- res/openvpn-gui-res-se.rc | 2 +- res/openvpn-gui-res-tr.rc | 2 +- res/openvpn-gui-res-ua.rc | 2 +- res/openvpn-gui-res-zh-hans.rc | 2 +- res/openvpn-gui-res-zh-hant.rc | 2 +- 22 files changed, 40 insertions(+), 21 deletions(-) diff --git a/openvpn.c b/openvpn.c index 3732865..ac3e3d3 100644 --- a/openvpn.c +++ b/openvpn.c @@ -647,6 +647,25 @@ GenericPassDialogFunc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) /* Set password echo on if needed */ if (param->flags & FLAG_CR_ECHO) SendMessage(GetDlgItem(hwndDlg, ID_EDT_RESPONSE), EM_SETPASSWORDCHAR, 0, 0); + + /* Resize Window if text if challenge text is long */ + SIZE sz = {0}; + RECT rect = {0}; + HDC hdc = GetDC(GetDlgItem(hwndDlg, ID_TXT_DESCRIPTION)); + GetWindowRect(hwndDlg, &rect); + rect.right -= rect.left; + rect.bottom -= rect.top; + + /* if space for text + some margin exceeds the window size, resize */ + if (GetTextExtentPoint32W(hdc, wstr, wcslen(wstr), &sz) + && LPtoDP(hdc, (POINT *) &sz, 1) /* logical to device units */ + && sz.cx + DPI_SCALE(15) > rect.right) /* 15 nominal pixel margin space */ + { + /* new horizontal dimension with a max of 640 nominal pixels */ + rect.right = min(DPI_SCALE(640), sz.cx + DPI_SCALE(15)); + SetWindowPos(hwndDlg, NULL, 0, 0, rect.right, rect.bottom, SWP_NOMOVE); + PrintDebug(L"Window resized to = %d %d", rect.right, rect.bottom); + } } else if (param->flags & FLAG_PASS_TOKEN) { diff --git a/res/openvpn-gui-res-cs.rc b/res/openvpn-gui-res-cs.rc index 2f7555a..b96fd83 100644 --- a/res/openvpn-gui-res-cs.rc +++ b/res/openvpn-gui-res-cs.rc @@ -80,7 +80,7 @@ CAPTION "OpenVPN - Odpověď na výzvu" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_CZECH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Odpověď:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-de.rc b/res/openvpn-gui-res-de.rc index 4cd61dd..cb3f00c 100644 --- a/res/openvpn-gui-res-de.rc +++ b/res/openvpn-gui-res-de.rc @@ -80,7 +80,7 @@ CAPTION "OpenVPN – Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "&Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "&OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-dk.rc b/res/openvpn-gui-res-dk.rc index 4ecfc74..3779129 100644 --- a/res/openvpn-gui-res-dk.rc +++ b/res/openvpn-gui-res-dk.rc @@ -81,7 +81,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_DANISH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-en.rc b/res/openvpn-gui-res-en.rc index 8aaf48b..5e371dc 100644 --- a/res/openvpn-gui-res-en.rc +++ b/res/openvpn-gui-res-en.rc @@ -80,7 +80,7 @@ CAPTION "OpenVPN – Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "&Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "&OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-es.rc b/res/openvpn-gui-res-es.rc index 62398f5..04aebcc 100644 --- a/res/openvpn-gui-res-es.rc +++ b/res/openvpn-gui-res-es.rc @@ -79,7 +79,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-fa.rc b/res/openvpn-gui-res-fa.rc index 44fdf43..7f225a9 100644 --- a/res/openvpn-gui-res-fa.rc +++ b/res/openvpn-gui-res-fa.rc @@ -81,7 +81,7 @@ CAPTION "OpenVPN – پاسخ چالش" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_FARSI, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "پاسخ :", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "بسیار خوب", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-fi.rc b/res/openvpn-gui-res-fi.rc index a524c22..5239a08 100644 --- a/res/openvpn-gui-res-fi.rc +++ b/res/openvpn-gui-res-fi.rc @@ -80,7 +80,7 @@ CAPTION "OpenVPN - Haastemenetelmä" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Vastaus:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-fr.rc b/res/openvpn-gui-res-fr.rc index 3f2cd6f..33da072 100644 --- a/res/openvpn-gui-res-fr.rc +++ b/res/openvpn-gui-res-fr.rc @@ -79,7 +79,7 @@ CAPTION "OpenVPN - Réponse de défi" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Réponse:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-it.rc b/res/openvpn-gui-res-it.rc index a7eb6ce..3479ad6 100644 --- a/res/openvpn-gui-res-it.rc +++ b/res/openvpn-gui-res-it.rc @@ -79,7 +79,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "&Risposta:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "&OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-jp.rc b/res/openvpn-gui-res-jp.rc index ee47e36..21aeff8 100644 --- a/res/openvpn-gui-res-jp.rc +++ b/res/openvpn-gui-res-jp.rc @@ -81,7 +81,7 @@ CAPTION "OpenVPN - チャレンジ/レスポンス" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "レスポンス(&R):", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK(&O)", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-kr.rc b/res/openvpn-gui-res-kr.rc index 01d3f23..d2375ca 100644 --- a/res/openvpn-gui-res-kr.rc +++ b/res/openvpn-gui-res-kr.rc @@ -81,7 +81,7 @@ CAPTION "OpenVPN - 자격증명" FONT 9, "맑은 고딕" LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "요청값:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "확인", IDOK, 25, 58, 50, 14, BS_PUSHBUTTON | WS_TABSTOP | WS_DISABLED diff --git a/res/openvpn-gui-res-nl.rc b/res/openvpn-gui-res-nl.rc index 3d83c2d..891d244 100644 --- a/res/openvpn-gui-res-nl.rc +++ b/res/openvpn-gui-res-nl.rc @@ -79,7 +79,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-no.rc b/res/openvpn-gui-res-no.rc index 972ba7c..43cd059 100644 --- a/res/openvpn-gui-res-no.rc +++ b/res/openvpn-gui-res-no.rc @@ -80,7 +80,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_NORWEGIAN, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-pl.rc b/res/openvpn-gui-res-pl.rc index 4786315..eafcb7c 100644 --- a/res/openvpn-gui-res-pl.rc +++ b/res/openvpn-gui-res-pl.rc @@ -81,7 +81,7 @@ CAPTION "OpenVPN - Odpowiedź" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_POLISH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Odpowiedź:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-pt.rc b/res/openvpn-gui-res-pt.rc index 7537fda..b43ad9f 100644 --- a/res/openvpn-gui-res-pt.rc +++ b/res/openvpn-gui-res-pt.rc @@ -79,7 +79,7 @@ CAPTION "OpenVPN - Resposta do Desafio" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Resposta:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-ru.rc b/res/openvpn-gui-res-ru.rc index 0fdb83c..5689512 100644 --- a/res/openvpn-gui-res-ru.rc +++ b/res/openvpn-gui-res-ru.rc @@ -81,7 +81,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-se.rc b/res/openvpn-gui-res-se.rc index fb68da3..9fe57a1 100644 --- a/res/openvpn-gui-res-se.rc +++ b/res/openvpn-gui-res-se.rc @@ -79,7 +79,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-tr.rc b/res/openvpn-gui-res-tr.rc index ce1b5c4..0fe4c04 100644 --- a/res/openvpn-gui-res-tr.rc +++ b/res/openvpn-gui-res-tr.rc @@ -81,7 +81,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "Tamam", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-ua.rc b/res/openvpn-gui-res-ua.rc index 8398d4e..1d13826 100644 --- a/res/openvpn-gui-res-ua.rc +++ b/res/openvpn-gui-res-ua.rc @@ -79,7 +79,7 @@ CAPTION "OpenVPN - Challenge Response" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "Response:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "OK", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-zh-hans.rc b/res/openvpn-gui-res-zh-hans.rc index 91dff30..448603e 100644 --- a/res/openvpn-gui-res-zh-hans.rc +++ b/res/openvpn-gui-res-zh-hans.rc @@ -82,7 +82,7 @@ CAPTION "OpenVPN - 质询响应" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "响应:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "确定", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP diff --git a/res/openvpn-gui-res-zh-hant.rc b/res/openvpn-gui-res-zh-hant.rc index 3080ce9..3d85819 100644 --- a/res/openvpn-gui-res-zh-hant.rc +++ b/res/openvpn-gui-res-zh-hant.rc @@ -82,7 +82,7 @@ CAPTION "OpenVPN - 挑戰回應" FONT 8, "Microsoft Sans Serif" LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL BEGIN - LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 208, 10 + LTEXT "", ID_TXT_DESCRIPTION, 6, 9, 400, 20 LTEXT "回應:", ID_LTEXT_RESPONSE, 6, 30, 50, 10 EDITTEXT ID_EDT_RESPONSE, 60, 27, 94, 12, ES_PASSWORD | ES_AUTOHSCROLL PUSHBUTTON "確認", IDOK, 20, 51, 50, 14, BS_PUSHBUTTON | WS_TABSTOP