From a331dc4f0a26a40b358df52ca20cb8aada071b4e Mon Sep 17 00:00:00 2001 From: Quppa Date: Sun, 19 Apr 2015 13:15:44 +1000 Subject: [PATCH] [ui] make the tab and arrow keys work in the dialog The tab and arrow keys can now be used to navigate around the various dialogs. --- src/rufus.c | 23 +++++++++++++++++------ src/rufus.rc | 32 ++++++++++++++++---------------- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/src/rufus.c b/src/rufus.c index cc7c9a18..db6b521b 100644 --- a/src/rufus.c +++ b/src/rufus.c @@ -826,7 +826,9 @@ BOOL CALLBACK LogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) hf = CreateFontA(lfHeight, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, 0, 0, PROOF_QUALITY, 0, "Arial Unicode MS"); SendDlgItemMessageA(hDlg, IDC_LOG_EDIT, WM_SETFONT, (WPARAM)hf, TRUE); - return TRUE; + // Set 'Close Log' as the selected button + SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hDlg, IDCANCEL), TRUE); + break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: @@ -1020,7 +1022,7 @@ DWORD WINAPI ISOScanThread(LPVOID param) for (i=(int)safe_strlen(image_path); (i>0)&&(image_path[i]!='\\'); i--); PrintStatusDebug(0, MSG_205, &image_path[i+1]); // Lose the focus on the select ISO (but place it on Close) - SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)FALSE, 0); + SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)FALSE, 0); // Lose the focus from Close and set it back to Start SendMessage(hMainDialog, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hMainDialog, IDC_START), TRUE); } @@ -1702,7 +1704,7 @@ void InitDialog(HWND hDlg) // Create the language toolbar // NB: We don't make it a tabstop as it would become the default selected button otherwise - hLangToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | TBSTYLE_TRANSPARENT | CCS_NOPARENTALIGN | + hLangToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_TABSTOP | TBSTYLE_TRANSPARENT | CCS_NOPARENTALIGN | CCS_NORESIZE | CCS_NODIVIDER, 0, 0, 0, 0, hMainDialog, NULL, hMainInstance, NULL); if ((pfImageList_Create != NULL) && (pfImageList_AddIcon != NULL)) { hLangToolbarImageList = pfImageList_Create(i16, i16, ILC_COLOR32, 1, 0); @@ -1971,12 +1973,16 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA SetWindowPos(hMainDialog, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); SetWindowPos(hMainDialog, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); + // Set 'Start' as the selected button if it's enabled, otherwise use 'Close', instead + SendMessage(hDlg, WM_NEXTDLGCTL, (WPARAM)(IsWindowEnabled(GetDlgItem(hDlg, IDC_START)) ? GetDlgItem(hDlg, IDC_START) : GetDlgItem(hDlg, IDCANCEL)), TRUE); + + #if defined(ALPHA) // Add a VERY ANNOYING popup for Alpha releases, so that people don't start redistributing them Notification(MSG_INFO, NULL, "ALPHA VERSION", "This is an Alpha version of " APPLICATION_NAME " - It is meant to be used for testing ONLY and should NOT be distributed as a release."); #endif - return (INT_PTR)TRUE; + return (INT_PTR)FALSE; // The things one must do to get an ellipsis on the status bar... case WM_DRAWITEM: @@ -2927,8 +2933,13 @@ relaunch: SHDeleteDirectoryExU(NULL, tmp_path, FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMATION); continue; } - TranslateMessage(&msg); - DispatchMessage(&msg); + + // Let the system handle dialog messages (e.g. those from the tab key) + if (!IsDialogMessage(hDlg, &msg) && !IsDialogMessage(hLogDlg, &msg)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } } if (relaunch) { relaunch = FALSE; diff --git a/src/rufus.rc b/src/rufus.rc index cea5b5c7..e4f81d72 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -35,8 +35,6 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CA CAPTION "Rufus 2.2.653" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 - PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 COMBOBOX IDC_DEVICE,8,17,226,33,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Partition scheme and target system type",IDS_PARTITION_TYPE_TXT,9,35,222,8 @@ -54,6 +52,7 @@ BEGIN CONTROL "Quick format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,173,121,10 CONTROL "Create a bootable disk using",IDC_BOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,185,112,10 COMBOBOX IDC_BOOTTYPE,128,183,75,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON CONTROL "Standard Windows installation",IDC_WINDOWS_INSTALL,"Button",BS_AUTORADIOBUTTON | WS_GROUP,23,198,205,8 CONTROL "Windows To Go",IDC_WINDOWS_TO_GO,"Button",BS_AUTORADIOBUTTON,23,210,205,8 CONTROL "Create extended label and icon files",IDC_SET_ICON, @@ -69,6 +68,7 @@ BEGIN PUSHBUTTON "About...",IDC_ABOUT,8,339,50,14 PUSHBUTTON "Log",IDC_LOG,63,339,21,14 PUSHBUTTON "T",IDC_TEST,90,339,12,14,NOT WS_VISIBLE + DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 PUSHBUTTON "Close",IDCANCEL,183,339,50,14 END @@ -81,7 +81,7 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,251,215,50,14,WS_GROUP PUSHBUTTON "License",IDC_ABOUT_LICENSE,46,215,50,14,WS_GROUP PUSHBUTTON "Updates",IDC_ABOUT_UPDATES,100,215,50,14,NOT WS_VISIBLE | WS_GROUP - CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_TABSTOP,45,7,268,107 + CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY,45,7,268,107 CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE END @@ -99,7 +99,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION CAPTION "Log" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN - EDITTEXT IDC_LOG_EDIT,0,0,366,346,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE + EDITTEXT IDC_LOG_EDIT,0,0,366,346,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_CLIENTEDGE PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,354,50,14 PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,354,50,14 DEFPUSHBUTTON "Close Log",IDCANCEL,308,354,50,14 @@ -159,8 +159,6 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CA CAPTION "Rufus 2.2.653" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 - PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 COMBOBOX IDC_DEVICE,8,17,226,33,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Partition scheme and target system type",IDS_PARTITION_TYPE_TXT,9,35,222,8 @@ -178,6 +176,7 @@ BEGIN CONTROL "Quick format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,173,121,10 CONTROL "Create a bootable disk using",IDC_BOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,185,112,10 COMBOBOX IDC_BOOTTYPE,128,183,75,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON CONTROL "Standard Windows installation",IDC_WINDOWS_INSTALL,"Button",BS_AUTORADIOBUTTON | WS_GROUP,23,198,205,8 CONTROL "Windows To Go",IDC_WINDOWS_TO_GO,"Button",BS_AUTORADIOBUTTON,23,210,205,8 CONTROL "Create extended label and icon files",IDC_SET_ICON, @@ -193,6 +192,7 @@ BEGIN PUSHBUTTON "About...",IDC_ABOUT,8,339,50,14 PUSHBUTTON "Log",IDC_LOG,63,339,21,14 PUSHBUTTON "T",IDC_TEST,90,339,12,14,NOT WS_VISIBLE + DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 PUSHBUTTON "Close",IDCANCEL,183,339,50,14 END @@ -205,7 +205,7 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,251,215,50,14,WS_GROUP PUSHBUTTON "License",IDC_ABOUT_LICENSE,46,215,50,14,WS_GROUP PUSHBUTTON "Updates",IDC_ABOUT_UPDATES,100,215,50,14,NOT WS_VISIBLE | WS_GROUP - CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_TABSTOP,45,7,268,107 + CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY,45,7,268,107 CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE END @@ -223,7 +223,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION CAPTION "Log" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - EDITTEXT IDC_LOG_EDIT,0,0,366,346,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE + EDITTEXT IDC_LOG_EDIT,0,0,366,346,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_CLIENTEDGE PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,354,50,14 PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,354,50,14 DEFPUSHBUTTON "Close Log",IDCANCEL,308,354,50,14 @@ -284,8 +284,6 @@ EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL CAPTION "Rufus 2.2.653" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 - PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 COMBOBOX IDC_DEVICE,8,17,226,33,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Partition scheme and target system type",IDS_PARTITION_TYPE_TXT,9,35,222,8 @@ -303,6 +301,7 @@ BEGIN CONTROL "Quick format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,173,121,10 CONTROL "Create a bootable disk using",IDC_BOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,185,112,10 COMBOBOX IDC_BOOTTYPE,128,183,75,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON CONTROL "Standard Windows installation",IDC_WINDOWS_INSTALL,"Button",BS_AUTORADIOBUTTON | WS_GROUP,23,198,205,8 CONTROL "Windows To Go",IDC_WINDOWS_TO_GO,"Button",BS_AUTORADIOBUTTON,23,210,205,8 CONTROL "Create extended label and icon files",IDC_SET_ICON, @@ -318,6 +317,7 @@ BEGIN PUSHBUTTON "About...",IDC_ABOUT,8,339,50,14 PUSHBUTTON "Log",IDC_LOG,63,339,21,14 PUSHBUTTON "T",IDC_TEST,90,339,12,14,NOT WS_VISIBLE + DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 PUSHBUTTON "Close",IDCANCEL,183,339,50,14 END @@ -331,7 +331,7 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,251,215,50,14,WS_GROUP PUSHBUTTON "License",IDC_ABOUT_LICENSE,46,215,50,14,WS_GROUP PUSHBUTTON "Updates",IDC_ABOUT_UPDATES,100,215,50,14,NOT WS_VISIBLE | WS_GROUP - CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_TABSTOP,45,7,268,107 + CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY,45,7,268,107 CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE END @@ -351,7 +351,7 @@ EXSTYLE WS_EX_APPWINDOW | WS_EX_LAYOUTRTL CAPTION "Log" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN - EDITTEXT IDC_LOG_EDIT,0,0,366,346,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE + EDITTEXT IDC_LOG_EDIT,0,0,366,346,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_CLIENTEDGE PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,354,50,14 PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,354,50,14 DEFPUSHBUTTON "Close Log",IDCANCEL,308,354,50,14 @@ -415,8 +415,6 @@ EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL CAPTION "Rufus 2.2.653" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 - PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 COMBOBOX IDC_DEVICE,8,17,226,33,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Partition scheme and target system type",IDS_PARTITION_TYPE_TXT,9,35,222,8 @@ -434,6 +432,7 @@ BEGIN CONTROL "Quick format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,173,121,10 CONTROL "Create a bootable disk using",IDC_BOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,185,112,10 COMBOBOX IDC_BOOTTYPE,128,183,75,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_SELECT_ISO,207,182,21,14,BS_ICON CONTROL "Standard Windows installation",IDC_WINDOWS_INSTALL,"Button",BS_AUTORADIOBUTTON | WS_GROUP,23,198,205,8 CONTROL "Windows To Go",IDC_WINDOWS_TO_GO,"Button",BS_AUTORADIOBUTTON,23,210,205,8 CONTROL "Create extended label and icon files",IDC_SET_ICON, @@ -449,6 +448,7 @@ BEGIN PUSHBUTTON "About...",IDC_ABOUT,8,339,50,14 PUSHBUTTON "Log",IDC_LOG,63,339,21,14 PUSHBUTTON "T",IDC_TEST,90,339,12,14,NOT WS_VISIBLE + DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 PUSHBUTTON "Close",IDCANCEL,183,339,50,14 END @@ -462,7 +462,7 @@ BEGIN DEFPUSHBUTTON "OK",IDOK,251,215,50,14,WS_GROUP PUSHBUTTON "License",IDC_ABOUT_LICENSE,46,215,50,14,WS_GROUP PUSHBUTTON "Updates",IDC_ABOUT_UPDATES,100,215,50,14,NOT WS_VISIBLE | WS_GROUP - CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_TABSTOP,45,7,268,107 + CONTROL "",IDC_ABOUT_BLURB,"RichEdit20W",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY,45,7,268,107 CONTROL "",IDC_ABOUT_COPYRIGHTS,"RichEdit20W",ES_MULTILINE | ES_READONLY | WS_VSCROLL,46,115,267,91,WS_EX_STATICEDGE END @@ -482,7 +482,7 @@ EXSTYLE WS_EX_APPWINDOW | WS_EX_LAYOUTRTL CAPTION "Log" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - EDITTEXT IDC_LOG_EDIT,0,0,366,346,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_STATICEDGE + EDITTEXT IDC_LOG_EDIT,0,0,366,346,ES_MULTILINE | ES_READONLY | NOT WS_BORDER | WS_VSCROLL,WS_EX_CLIENTEDGE PUSHBUTTON "Clear Log",IDC_LOG_CLEAR,198,354,50,14 PUSHBUTTON "Save Log",IDC_LOG_SAVE,253,354,50,14 DEFPUSHBUTTON "Close Log",IDCANCEL,308,354,50,14