From e9919e7f89628809be4c6f0888ff0149addd782e Mon Sep 17 00:00:00 2001 From: eccles Date: Mon, 5 Jan 2004 21:53:06 +0000 Subject: [PATCH] Links and Buttons no longer receive the initial keyboard focus as they take over the Enter key. git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3361 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/InstallOptions/InstallerOptions.cpp | 62 +++++++++++--------- Plugins/InstallOptions.dll | Bin 12288 -> 12288 bytes 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/Contrib/InstallOptions/InstallerOptions.cpp b/Contrib/InstallOptions/InstallerOptions.cpp index ec8509ef..f456f8b8 100644 --- a/Contrib/InstallOptions/InstallerOptions.cpp +++ b/Contrib/InstallOptions/InstallerOptions.cpp @@ -53,21 +53,27 @@ char *WINAPI STRDUP(const char *c) return lstrcpy(t,c); } +// Field types +// NB - the order of this list is important - see below + #define FIELD_INVALID (0) #define FIELD_LABEL (1) #define FIELD_ICON (2) #define FIELD_BITMAP (3) #define FIELD_BROWSEBUTTON (4) -#define FIELD_CHECKBOX (5) -#define FIELD_RADIOBUTTON (6) -#define FIELD_TEXT (7) -#define FIELD_FILEREQUEST (8) -#define FIELD_DIRREQUEST (9) -#define FIELD_COMBOBOX (10) -#define FIELD_LISTBOX (11) -#define FIELD_GROUPBOX (12) -#define FIELD_LINK (13) -#define FIELD_BUTTON (14) +#define FIELD_LINK (5) +#define FIELD_BUTTON (6) +#define FIELD_GROUPBOX (7) +#define FIELD_CHECKBOX (8) +#define FIELD_RADIOBUTTON (9) +#define FIELD_TEXT (10) +#define FIELD_FILEREQUEST (11) +#define FIELD_DIRREQUEST (12) +#define FIELD_COMBOBOX (13) +#define FIELD_LISTBOX (14) + +#define FIELD_SETFOCUS FIELD_CHECKBOX // First field that qualifies for having the initial keyboard focus +#define FIELD_CHECKLEN FIELD_TEXT // First field to have length of state value checked against MinLen/MaxLen //--------------------------------------------------------------------- // settings @@ -216,7 +222,7 @@ bool INLINE ValidateFields() { FieldType *pField = pFields + nIdx; // this if statement prevents a stupid bug where a min/max length is assigned to a label control // where the user obviously has no way of changing what is displayed. (can you say, "infinite loop"?) - if (pField->nType >= FIELD_TEXT) { + if (pField->nType >= FIELD_CHECKLEN) { nLength = mySendMessage(pField->hwnd, WM_GETTEXTLENGTH, 0, 0); if (((pField->nMaxLength > 0) && (nLength > pField->nMaxLength)) || @@ -939,6 +945,21 @@ int WINAPI createCfgDlg() DEFAULT_STYLES | WS_TABSTOP, 0, WS_EX_RTLREADING }, + { "BUTTON", // FIELD_LINK + DEFAULT_STYLES | WS_TABSTOP | BS_OWNERDRAW, + DEFAULT_STYLES | WS_TABSTOP | BS_OWNERDRAW | BS_RIGHT, + 0, + WS_EX_RTLREADING }, + { "BUTTON", // FIELD_BUTTON + DEFAULT_STYLES | WS_TABSTOP, + DEFAULT_STYLES | WS_TABSTOP, + 0, + WS_EX_RTLREADING }, + { "BUTTON", // FIELD_GROUPBOX + DEFAULT_STYLES | BS_GROUPBOX, + DEFAULT_STYLES | BS_GROUPBOX | BS_RIGHT, + WS_EX_TRANSPARENT, + WS_EX_TRANSPARENT | WS_EX_RTLREADING }, { "BUTTON", // FIELD_CHECKBOX DEFAULT_STYLES | WS_TABSTOP | BS_TEXT | BS_VCENTER | BS_AUTOCHECKBOX | BS_MULTILINE, DEFAULT_STYLES | WS_TABSTOP | BS_TEXT | BS_VCENTER | BS_AUTOCHECKBOX | BS_MULTILINE | BS_RIGHT | BS_LEFTTEXT, @@ -973,22 +994,7 @@ int WINAPI createCfgDlg() DEFAULT_STYLES | WS_TABSTOP | WS_VSCROLL | LBS_DISABLENOSCROLL | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT, DEFAULT_STYLES | WS_TABSTOP | WS_VSCROLL | LBS_DISABLENOSCROLL | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT, WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE, - WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE | WS_EX_RIGHT | WS_EX_RTLREADING }, - { "BUTTON", // FIELD_GROUPBOX - DEFAULT_STYLES | BS_GROUPBOX, - DEFAULT_STYLES | BS_GROUPBOX | BS_RIGHT, - WS_EX_TRANSPARENT, - WS_EX_TRANSPARENT | WS_EX_RTLREADING }, - { "BUTTON", // FIELD_LINK - DEFAULT_STYLES | WS_TABSTOP | BS_OWNERDRAW, - DEFAULT_STYLES | WS_TABSTOP | BS_OWNERDRAW | BS_RIGHT, - 0, - WS_EX_RTLREADING }, - { "BUTTON", // FIELD_BUTTON - DEFAULT_STYLES | WS_TABSTOP, - DEFAULT_STYLES | WS_TABSTOP, - 0, - WS_EX_RTLREADING } + WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE | WS_EX_RIGHT | WS_EX_RTLREADING } }; FieldType *pField = pFields + nIdx; @@ -1216,7 +1222,7 @@ int WINAPI createCfgDlg() } // Set initial focus to the first appropriate field - if (!fFocused && (dwStyle & (WS_TABSTOP | WS_DISABLED)) == WS_TABSTOP) { + if (!fFocused && (dwStyle & (WS_TABSTOP | WS_DISABLED)) == WS_TABSTOP && pField->nType >= FIELD_SETFOCUS) { fFocused = TRUE; mySetFocus(hwCtrl); } diff --git a/Plugins/InstallOptions.dll b/Plugins/InstallOptions.dll index fe9dea353f118cfcd465f3a8d768a81135b37bd6..5873e6ca6d867bf7f335e812ad7d11509822166a 100644 GIT binary patch delta 3168 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 vGUSiPvKRZ^TdFXYf}168-}|h==f( zIE5$iWo%}rva?tRdrKSJ!LDJSVz;vg*hB0|_Mhxm>^H21tKjThBlin#Irjh;;a=fh z;uQ(mGPWi%33#q@$uByAj z=7#Eq+J=UPg$?coZ^OF{s05*5IGER~->XhmpRKO4JMDt~G5b^Y&2|s7l6jDMjEOK$ zGFzDEnVrm=%wZ}6KRWpgw)ja$HBuAXaw u&316Vfz68CGu$@rCD`&1H^Lp`KI6u?365}iH3c;_gHJDbn38wu=KmM{kkxGf delta 3270 zcmb7GeNa@_6~Av;mIYSc;;@xZyL{RfqpcX&OhJ#IIDV>1ZJdsW#$A0yJi#)fiIEgczqjx+Ec~!NsVz=Pq`p|8{5Y z{(k4&_ucn=OMFYV4985iM7l3$apT>S&+GItYPSxn2f10?RrNggD))NNv$~)z z?FAh|rPIzWN9IsnUgkhmo|!`k@m+INJ~qeuDF}R*2LJwuf$v%yB?)}jpTWl;N#uhc zf`+a!QOmp{WL6^nfrPRjI#OG--FGQc;R7tN zuK+onE(KV#HUQROKiI4tk{dZ)aT}uQqv~H`^SI6G=dtPe7H}CIf#sW;+)2&a6D+<~ z7Vb!E(Qe(Lv~zKaL%XWZG!$`h>VpOgw?kcKSUBAYCguBZZc~$M9OgD_d(q zj4S4LsjK6fIj1@p_YGI8_8Hx+6Uhic9@UWI2xM?#V>oZ9E0b{(%m=H^f}(d@7^ zDD~43imxUv!t`1$Q)WeXKGJ;Hg`<@IKGgh zDwnXsVD!ZLBk}56ff7uR!YS{}ze z&~rU$ob&F4XpR=AQqEGxmqYEnWj}-8Ajax}`TO-{r}ypy8y_eKIa(V6L_0jejvF7C1p*b$f`=juL$XeKsq81GLsEpT z(F;b`5w?a2m|F)%H|N~D1-ya9IMt5iF0aGkE_Q0o-$C&AgUPgtT;1ZI~QOj0{ z2`OxhrjQ>Cg_ZU-QaM5`TfhQ>Ti57xP|L4DQtFQ=(&57T1BIYYX#%$cA!#I3-%sUz z4l1x1)Up{I-5izAxr?GIRhgdQJ*SMfP>Y#G3@)Y6H;_y$VpIxAXF8>wjc(#v3wr^R zk(s2O?)2@C+?;Hw++KL3A3)|BBPLAmOFAJB;BBGsq}(dACj(tOxvs=7(>z+mCw+&%qc;O3VHN`zatfer15rxB8_m;H9S<> zV4V`Y(pYIjCgc5_q?I=0-J|2B(^x*96s37Yk;V#}uZ5b&fES(%HD7~$C^P;2ci~A| zAdd1Li0*!eMLGPk7I8 zo^t<3RR@vIjAX<5>t5)ALvz3pov0>ePd2_B&Vq>Gn~y5t7@qZ=)RMwRQ02!%jKl~t z4zB+KA)7IA@*qMS3bhY=;@4lN^ezRew2!k5v}uj>pgfPM_&eG^nxkogL{FyA&l!=uy{w;F;jynIK&4w0rf`` z0YD^wOyxnZ<_0yS#-8Xz2=~;@YGO2c+Sa$cmApnB(S{v+e>xu4t|&gfs5D-E&PIfPcI#{eA!sWXz3Ub8d zT^-Hy^jDOIlUW7h>QEfR)=;3m}?1KI^jfzwwDRDAZQOo9V#DhT{LuhffbqASPEn8$5Ueh@V}!5 z^pC=*$w6jQHZtDevBSGJzg zBmY>Yqq#*9H1)~U`?xD=cdCy&t4>d=z3;7mu^q4tXosToFr%+U=@CY^MQJaio74?y zIoZpZqD`+o9z~PpjG|e4Fp5U4M*Uk_A(x>}q&>r}R-Z_3<}!Qw(rdZyqS)VMK9;>z zM5qIX3q~Uh_Nyca5g6$(JZgL9D$b{Vl^Om&d}s9dW?tpYUY%o^$NBWirK{G|ty;N! zzPiMk+0$k1<kwx+}l1$5pU1mOG%v z&i=7?QSq7L4~qX;TxvUS8@64ujoQX-lQwEIU>;{+5&r_$;0El(i}4fKgUVLD(Vm3MYh5gsZ}J;cLMt=7@8|a#v<4wW1&IaYGD9H+E`|D@{}XJ-db*QOoXo#A~dWTVb!b zzoNRLu3}-uyA@gmD*!yI0Nq8e6}?k*s_46-$)e|MUR#%Ko9&RT*M{(PoP~de=i(B) z0N3IN@pA0JK^(%JxEpW7+wm^E8}G*l@f-LkeiOfg|B6rI3-~hD@Ynb*jv*#8gOreY zWU-e#NuD7d@;rHwbd&95H~9m3gB&C8lTV-uH_06mDR%EbbByipRxM;s@eI W@v?Xw$`lV}vX!999`~G;+