From 2144a90eed895c46679c9ef1369b2b1b2f8e7365 Mon Sep 17 00:00:00 2001 From: kichik Date: Tue, 23 Dec 2003 16:29:16 +0000 Subject: [PATCH] - Escape now works when focused on a link control - Fixed a link control bug that allowed the user to activate the link by clicking outside of the text git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3301 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/InstallOptions/InstallerOptions.cpp | 58 +++++++++++--------- Plugins/InstallOptions.dll | Bin 12288 -> 12288 bytes 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/Contrib/InstallOptions/InstallerOptions.cpp b/Contrib/InstallOptions/InstallerOptions.cpp index 5b5cd5ee..e744d43a 100644 --- a/Contrib/InstallOptions/InstallerOptions.cpp +++ b/Contrib/InstallOptions/InstallerOptions.cpp @@ -737,10 +737,7 @@ BOOL CALLBACK cfgDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) } // Make some more room so the focus rect won't cut letters off - rc.left = max(rc.left - 2, lpdis->rcItem.left); rc.right = min(rc.right + 2, lpdis->rcItem.right); - /*rc.top = max(rc.top - 2, lpdis->rcItem.top); - rc.bottom = min(rc.bottom + 2, lpdis->rcItem.bottom);*/ // Draw the text DrawText(lpdis->hDC, pField->pszText, -1, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE | (bRTL ? DT_RTLREADING : 0)); @@ -751,6 +748,9 @@ BOOL CALLBACK cfgDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) DrawFocusRect(lpdis->hDC, &rc); } + MapWindowPoints(lpdis->hwndItem, 0, (LPPOINT) &rc, 2); + pField->rect = rc; + #ifdef IO_LINK_UNDERLINED DeleteObject(SelectObject(lpdis->hDC, OldFont)); #endif @@ -787,29 +787,33 @@ BOOL CALLBACK cfgDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) // pFields[nIdx].nParentIdx is used to store original windowproc int WINAPI StaticLINKWindowProc(HWND hWin, UINT uMsg, LPARAM wParam, WPARAM lParam) { - int StaticField = FindControlIdx(GetDlgCtrlID(hWin)); + int CtrlId = GetDlgCtrlID(hWin); + int StaticField = FindControlIdx(CtrlId); if (StaticField < 0) return 0; FieldType *pField = pFields + StaticField; switch(uMsg) { - case WM_GETDLGCODE: - return DLGC_BUTTON|DLGC_WANTALLKEYS; - case WM_KEYDOWN: - { - if ( wParam == VK_RETURN ) - WMCommandProc(hMainWindow, pField->nControlID, pField->hwnd, BN_CLICKED); - else if ( wParam == VK_TAB ) - mySendMessage(hMainWindow, WM_NEXTDLGCTL, GetKeyState(VK_SHIFT) & 0x8000, FALSE); - } + case WM_SETFOCUS: + mySendMessage(hConfigWindow, DM_SETDEFID, CtrlId, 0); + // remove the BS_DEFPUSHBUTTON style from IDOK + mySendMessage(GetDlgItem(hMainWindow, IDOK), BM_SETSTYLE, BS_PUSHBUTTON, TRUE); break; + case WM_NCHITTEST: + { + POINT pt = {GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)}; + if (PtInRect(&pField->rect, pt)) + return HTCLIENT; + else + return HTNOWHERE; + } case WM_SETCURSOR: { - if ( (HWND)wParam == hWin && LOWORD(lParam) == HTCLIENT ) + if ((HWND)wParam == hWin && LOWORD(lParam) == HTCLIENT) { HCURSOR hCur = LoadCursor(NULL, IDC_HAND); - if ( hCur ) + if (hCur) { SetCursor(hCur); return 1; // halt further processing @@ -866,21 +870,21 @@ int WINAPI createCfgDlg() HFONT hFont = (HFONT)mySendMessage(mainwnd, WM_GETFONT, 0, 0); RECT dialog_r; - int width; + int mainWndWidth, mainWndHeight; hConfigWindow=CreateDialog(m_hInstance,MAKEINTRESOURCE(IDD_DIALOG1),mainwnd,cfgDlgProc); if (hConfigWindow) { GetWindowRect(childwnd,&dialog_r); - ScreenToClient(mainwnd,(LPPOINT)&dialog_r); - ScreenToClient(mainwnd,((LPPOINT)&dialog_r)+1); - width = dialog_r.right-dialog_r.left; + MapWindowPoints(0, mainwnd, (LPPOINT) &dialog_r, 2); + mainWndWidth = dialog_r.right - dialog_r.left; + mainWndHeight = dialog_r.bottom - dialog_r.top; SetWindowPos( hConfigWindow, 0, dialog_r.left, dialog_r.top, - width, - dialog_r.bottom-dialog_r.top, + mainWndWidth, + mainWndHeight, SWP_NOZORDER|SWP_NOACTIVATE ); // Sets the font of IO window to be the same as the main window @@ -1017,18 +1021,18 @@ int WINAPI createCfgDlg() rect.bottom = MulDiv(pField->rect.bottom, baseUnitY, 8); if (pField->rect.left < 0) - rect.left += dialog_r.right - dialog_r.left; + rect.left += mainWndWidth; if (pField->rect.right < 0) - rect.right += dialog_r.right - dialog_r.left; + rect.right += mainWndWidth; if (pField->rect.top < 0) - rect.top += dialog_r.bottom - dialog_r.top; + rect.top += mainWndHeight; if (pField->rect.bottom < 0) - rect.bottom += dialog_r.bottom - dialog_r.top; + rect.bottom += mainWndHeight; if (bRTL) { int right = rect.right; - rect.right = width - rect.left; - rect.left = width - right; + rect.right = mainWndWidth - rect.left; + rect.left = mainWndWidth - right; } char *title = pField->pszText; diff --git a/Plugins/InstallOptions.dll b/Plugins/InstallOptions.dll index c5bc7d01ce062758bee4a8ef2f6717fee4022324..28c0462a1a441ccf239a51884ad112ace61276de 100644 GIT binary patch delta 3390 zcmeHJ|5ub%8ow_LFu=f!IRnGD1VY77VtBs@&AbC8gIZ3Gq0E-~rP3HDMbjB#&w@ic z&^o=K*6nQC>6|2YU2EHx4fdQ)>)L3TWNe2`Guq=ZcI(uuP>U_$xYgeMyn`Np**{_L zIiI=DxBJ}Z-sgGlI~^N4HtruO%6VL^A=k$k$t+6ek_oXwAk7Ffp1tz31YIJ1Hi4(T z+N5X9-Iub}`b63ysEKs6jmK9)XJ?aRG;Xwlvk2Vogqfe+KCNHxrqX$wd^8Sa;R|*47|9Ohc)zTup zgLCw+*B5he_f)Di``|1>x}uSKv$69_Y}?@5Q%g*0nD(XSaTn=uYCY$nv(uJxE9u&_ z{G3{BZa*C;4M!6^YU?$|8a$DDxcAWgX`8tx`=`^&IBqK~Hq>Z`GR)(AG-9xGo9HP+ z88=3+7`BzEa4}skCG@!VcmjH6(c6e=JegSt=B{Y))~c?~|KR@SF^i5yGUi~_s~PRw zD4m~K#a*BqGs`!uMVzvPpO$pF3X`#GIez`)ENEtyA-Gp2yQYnu0)(u^%z}u|8sF5a z3m907J}$|hk#K=@CdCCrTUc+p#OT+VdFH>P7?gEpwo9kZ|BkV)sImJ)nr|!##r+4h zNa3oE?Xn_rtn6`3`cM-@k%z%~{0v^9`=oaWS?Y=gGL?Hv%G@!|JqcnwQE|tVhLZ4! z1pAqYJJyyMSrfZDniri*NCGj;^}yRr7t>2jra6?4)26qEQi0;i%4j`mokb#?GID@2Dci z&K)4sMOWjQ?|c*t6Gvd7h=?#`YGCK>rz5VIw#P7(zCLY_WuW{C(D}KB!~0XXlvN{-nVW_v^9_%!<49qhv*+?IYTdL z&gyVtuh(yDQ1APeF|TiHE-^LuH#6}NOe3yy%yIx`IH7j$#?FQ$LV8?%9u|x-%k$8H zK_NBZ4biGdaUWA$ZYvL#5LUGI_mKYzE<2IR3=U3I_l3o_`ua` zjkO2MPX09(aSbtx8H#H8oOY)63FF=+C?z^|OLkfoh;S^^_=^l`nSDp76lQ)M3l2rx zKOjM@#mdh5brIJnM69I{j6UKTW5Hq8l0U;-h%+VZZ1rxdGTNT3xKz$HTD`mQIyqLo zJ6|IQIoE~i-6idbiR%WdWv#6PX2q>4uCX%rXv94Rx@;&h;vVh)Xm%RcI99gqf}fOO z6(^p?J7LKt%ng=!ORY&QbtP-xD{x0jz&R)_PSJyp7NDeV2zE{D6XLi!Z8Wt_j68VNcSMXYBs- z_l)(v4iYa!8uo}Xi`EqJ<~+U{az!7>_*D~qEIVuE6cqT@HL9!7?0j^*(5rTX@@+)1 zjHi25yf?(R42)V4H>ll!hwt4}#l*C)h?sT(9l)zVDK4v;evmycTYyg{E<@KSlla^k zdg`?=^+Kw*R+&6E0#Py>BYJg!daPMo8*Q>KD)?ZWF{ME3IKTdSp`T@9yshyq|ATd{ z^g49ai>lx_@J98b08SE2Qqw1J+D_2+Q-O33Ds$$cJAb2Bj?%kxN*5ixtaXoeDeB%h zsXY#AI8F{|WNVz%o&$9oeIci~;vP-VqEqjV&j$6*_-s-u!zlVW1Ou9ykKL2}FTD z&5ooKat|V^1lH5kg8AIj)K)NiL8%rc3TqEea%1e&WHx*ofE(ivnF|r=0uY9o{X?o3=mc*}kPYu#2)ecNk`IOE(AVwl*yfY~Dr}7Urj?CwKzOoA2NJ zXn@c)g-!Is!n*##qH`R+Q~0Y+uND`j*3KiO8#vovblc~8uCG67;cZ;#VfzmIU+fp{ z%x-lob8K}y>3GI*$Z^DR!tsgYOUH!cnj=x3Bi|)2l^>Fup59&-N1+3!5z{MdQH z`JMB7XGV=w1MJDQ{*;1}lEX|k7rFvym0Z#ex>{g?!OTnr#%1w delta 3348 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