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
This commit is contained in:
parent
7cab89f05a
commit
e9919e7f89
2 changed files with 34 additions and 28 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue