mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[ui] fix missing labels for accessibility
* Closes #1467 * Also ensure that previous element is set when repositioning a control to preserve tabbing order * Also fix x64 version being able to download x86 BETA
This commit is contained in:
		
							parent
							
								
									2d6a73e4f4
								
							
						
					
					
						commit
						0dc13e5283
					
				
					 9 changed files with 77 additions and 24 deletions
				
			
		|  | @ -12,6 +12,14 @@ o v3.* | ||||||
|   - *NEW*      MSG_309 "Compressed archive" |   - *NEW*      MSG_309 "Compressed archive" | ||||||
|   // TODO: Add a test ISO for this. |   // TODO: Add a test ISO for this. | ||||||
|   - *NEW*      MSG_310 "The ISO you have selected uses UEFI and is small enough to be written as (...)" |   - *NEW*      MSG_310 "The ISO you have selected uses UEFI and is small enough to be written as (...)" | ||||||
|  |   - *NEW*      MSG_311 "Use %s in the main application window to enable." | ||||||
|  |   - *NEW*      MSG_312 "Extra hashes (SHA512)" | ||||||
|  |   // The following are accessibility labels for some UI elements | ||||||
|  |   - *NEW*      MSG_313 "Save to VHD" | ||||||
|  |   - *NEW*      MSG_314 "Compute image checksums" | ||||||
|  |   - *NEW*      MSG_315 "Multiple buttons" | ||||||
|  |   - *NEW*      MSG_316 "Number of passes" | ||||||
|  |   - *NEW*      MSG_317 "Disk ID"  | ||||||
| 
 | 
 | ||||||
| o v3.5 (2019.03.12) | o v3.5 (2019.03.12) | ||||||
|   The following 3 messages can be tested by creating a UEFI:NTFS drive in Rufus ('Show advanced drive properties' must be enabled |   The following 3 messages can be tested by creating a UEFI:NTFS drive in Rufus ('Show advanced drive properties' must be enabled | ||||||
|  |  | ||||||
|  | @ -572,6 +572,11 @@ t MSG_310 "The ISO you have selected uses UEFI and is small enough to be written | ||||||
| 	"for some types of installations.\n\nPlease select the mode that you want to use to write this image:" | 	"for some types of installations.\n\nPlease select the mode that you want to use to write this image:" | ||||||
| t MSG_311 "Use %s in the main application window to enable." | t MSG_311 "Use %s in the main application window to enable." | ||||||
| t MSG_312 "Extra hashes (SHA512)" | t MSG_312 "Extra hashes (SHA512)" | ||||||
|  | t MSG_313 "Save to VHD" | ||||||
|  | t MSG_314 "Compute image checksums" | ||||||
|  | t MSG_315 "Multiple buttons" | ||||||
|  | t MSG_316 "Number of passes" | ||||||
|  | t MSG_317 "Disk ID" | ||||||
| 
 | 
 | ||||||
| ######################################################################### | ######################################################################### | ||||||
| l "ar-SA" "Arabic (العربية)" 0x0401, 0x0801, 0x0c01, 0x1001, 0x1401, 0x1801, 0x1c01, 0x2001, 0x2401, 0x2801, 0x2c01, 0x3001, 0x3401, 0x3801, 0x3c01, 0x4001 | l "ar-SA" "Arabic (العربية)" 0x0401, 0x0801, 0x0c01, 0x1001, 0x1401, 0x1801, 0x1c01, 0x2001, 0x2401, 0x2801, 0x2c01, 0x3001, 0x3401, 0x3801, 0x3c01, 0x4001 | ||||||
|  |  | ||||||
|  | @ -1082,7 +1082,6 @@ DWORD WINAPI IndividualSumThread(void* param) | ||||||
| { | { | ||||||
| 	SUM_CONTEXT sum_ctx = { {0} }; // There's a memset in sum_init, but static analyzers still bug us
 | 	SUM_CONTEXT sum_ctx = { {0} }; // There's a memset in sum_init, but static analyzers still bug us
 | ||||||
| 	uint32_t i = (uint32_t)(uintptr_t)param, j; | 	uint32_t i = (uint32_t)(uintptr_t)param, j; | ||||||
| 	char val[3] = { 0 }; |  | ||||||
| 
 | 
 | ||||||
| 	sum_init[i](&sum_ctx); | 	sum_init[i](&sum_ctx); | ||||||
| 	// Signal that we're ready to service requests
 | 	// Signal that we're ready to service requests
 | ||||||
|  |  | ||||||
|  | @ -1614,6 +1614,10 @@ static void InitDialog(HWND hDlg) | ||||||
| 	GetHalfDropwdownWidth(hDlg); | 	GetHalfDropwdownWidth(hDlg); | ||||||
| 	GetFullWidth(hDlg); | 	GetFullWidth(hDlg); | ||||||
| 
 | 
 | ||||||
|  | 	// Set some missing labels
 | ||||||
|  | 	SetAccessibleName(hNBPasses, lmprintf(MSG_316)); | ||||||
|  | 	SetAccessibleName(hDiskID, lmprintf(MSG_317)); | ||||||
|  | 
 | ||||||
| 	// Create the font and brush for the progress messages
 | 	// Create the font and brush for the progress messages
 | ||||||
| 	hInfoFont = CreateFontA(lfHeight, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, | 	hInfoFont = CreateFontA(lfHeight, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, | ||||||
| 		0, 0, PROOF_QUALITY, 0, "Segoe UI"); | 		0, 0, PROOF_QUALITY, 0, "Segoe UI"); | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | ||||||
| IDD_DIALOG DIALOGEX 12, 12, 232, 326 | IDD_DIALOG DIALOGEX 12, 12, 232, 326 | ||||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||||
| EXSTYLE WS_EX_ACCEPTFILES | EXSTYLE WS_EX_ACCEPTFILES | ||||||
| CAPTION "Rufus 3.12.1685" | CAPTION "Rufus 3.12.1686" | ||||||
| FONT 9, "Segoe UI Symbol", 400, 0, 0x0 | FONT 9, "Segoe UI Symbol", 400, 0, 0x0 | ||||||
| BEGIN | BEGIN | ||||||
|     LTEXT           "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP |     LTEXT           "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP | ||||||
|  | @ -397,8 +397,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 3,12,1685,0 |  FILEVERSION 3,12,1686,0 | ||||||
|  PRODUCTVERSION 3,12,1685,0 |  PRODUCTVERSION 3,12,1686,0 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -416,13 +416,13 @@ BEGIN | ||||||
|             VALUE "Comments", "https://rufus.ie" |             VALUE "Comments", "https://rufus.ie" | ||||||
|             VALUE "CompanyName", "Akeo Consulting" |             VALUE "CompanyName", "Akeo Consulting" | ||||||
|             VALUE "FileDescription", "Rufus" |             VALUE "FileDescription", "Rufus" | ||||||
|             VALUE "FileVersion", "3.12.1685" |             VALUE "FileVersion", "3.12.1686" | ||||||
|             VALUE "InternalName", "Rufus" |             VALUE "InternalName", "Rufus" | ||||||
|             VALUE "LegalCopyright", "© 2011-2020 Pete Batard (GPL v3)" |             VALUE "LegalCopyright", "© 2011-2020 Pete Batard (GPL v3)" | ||||||
|             VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" |             VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" | ||||||
|             VALUE "OriginalFilename", "rufus-3.12.exe" |             VALUE "OriginalFilename", "rufus-3.12.exe" | ||||||
|             VALUE "ProductName", "Rufus" |             VALUE "ProductName", "Rufus" | ||||||
|             VALUE "ProductVersion", "3.12.1685" |             VALUE "ProductVersion", "3.12.1686" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
							
								
								
									
										32
									
								
								src/stdlg.c
									
										
									
									
									
								
							
							
						
						
									
										32
									
								
								src/stdlg.c
									
										
									
									
									
								
							|  | @ -64,11 +64,12 @@ HWND hFidoDlg = NULL; | ||||||
| BOOL close_fido_cookie_prompts = FALSE; | BOOL close_fido_cookie_prompts = FALSE; | ||||||
| 
 | 
 | ||||||
| static int update_settings_reposition_ids[] = { | static int update_settings_reposition_ids[] = { | ||||||
|  | 	IDI_ICON, | ||||||
| 	IDC_POLICY, | 	IDC_POLICY, | ||||||
| 	IDS_UPDATE_SETTINGS_GRP, | 	IDS_UPDATE_SETTINGS_GRP, | ||||||
| 	IDS_UPDATE_FREQUENCY_TXT, | 	IDS_UPDATE_FREQUENCY_TXT, | ||||||
| 	IDS_INCLUDE_BETAS_TXT, |  | ||||||
| 	IDC_UPDATE_FREQUENCY, | 	IDC_UPDATE_FREQUENCY, | ||||||
|  | 	IDS_INCLUDE_BETAS_TXT, | ||||||
| 	IDC_INCLUDE_BETAS, | 	IDC_INCLUDE_BETAS, | ||||||
| 	IDS_CHECK_NOW_GRP, | 	IDS_CHECK_NOW_GRP, | ||||||
| 	IDC_CHECK_NOW, | 	IDC_CHECK_NOW, | ||||||
|  | @ -1312,15 +1313,16 @@ BOOL SetTaskbarProgressValue(ULONGLONG ullCompleted, ULONGLONG ullTotal) | ||||||
| 	return !FAILED(ITaskbarList3_SetProgressValue(ptbl, hMainDialog, ullCompleted, ullTotal)); | 	return !FAILED(ITaskbarList3_SetProgressValue(ptbl, hMainDialog, ullCompleted, ullTotal)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void Reposition(HWND hDlg, int id, int dx, int dw) | static void Reposition(HWND hDlg, int id, int prev_id, int dx, int dw) | ||||||
| { | { | ||||||
| 	HWND hCtrl; | 	HWND hCtrl, hPrevCtrl; | ||||||
| 	RECT rc; | 	RECT rc; | ||||||
| 
 | 
 | ||||||
| 	hCtrl = GetDlgItem(hDlg, id); | 	hCtrl = GetDlgItem(hDlg, id); | ||||||
|  | 	hPrevCtrl = (prev_id > 0) ? GetDlgItem(hDlg, prev_id) : HWND_TOP; | ||||||
| 	GetWindowRect(hCtrl, &rc); | 	GetWindowRect(hCtrl, &rc); | ||||||
| 	MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2); | 	MapWindowPoints(NULL, hDlg, (POINT*)&rc, 2); | ||||||
| 	SetWindowPos(hCtrl, HWND_TOP, rc.left + dx, rc.top, rc.right - rc.left + dw, rc.bottom - rc.top, 0); | 	SetWindowPos(hCtrl, hPrevCtrl, rc.left + dx, rc.top, rc.right - rc.left + dw, rc.bottom - rc.top, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void PositionControls(HWND hDlg) | static void PositionControls(HWND hDlg) | ||||||
|  | @ -1338,8 +1340,9 @@ static void PositionControls(HWND hDlg) | ||||||
| 	if (dw > 0) { | 	if (dw > 0) { | ||||||
| 		GetWindowRect(hDlg, &rc); | 		GetWindowRect(hDlg, &rc); | ||||||
| 		SetWindowPos(hDlg, NULL, -1, -1, rc.right - rc.left + dw, rc.bottom - rc.top, SWP_NOMOVE | SWP_NOZORDER); | 		SetWindowPos(hDlg, NULL, -1, -1, rc.right - rc.left + dw, rc.bottom - rc.top, SWP_NOMOVE | SWP_NOZORDER); | ||||||
| 		for (i = 0; i < ARRAYSIZE(update_settings_reposition_ids); i++) | 		for (i = 1; i < ARRAYSIZE(update_settings_reposition_ids); i++) | ||||||
| 			Reposition(hDlg, update_settings_reposition_ids[i], (i < 4) ? 0 : dw, (i >= 4) ? 0 : dw); | 			Reposition(hDlg, update_settings_reposition_ids[i], update_settings_reposition_ids[i-1], | ||||||
|  | 				((i < 5) && (i != 4)) ? 0 : dw, ((i >= 5) || (i == 4)) ? 0 : dw); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	hCtrl = GetDlgItem(hDlg, IDC_UPDATE_FREQUENCY); | 	hCtrl = GetDlgItem(hDlg, IDC_UPDATE_FREQUENCY); | ||||||
|  | @ -1357,10 +1360,11 @@ static void PositionControls(HWND hDlg) | ||||||
| 	if (dw > 0) { | 	if (dw > 0) { | ||||||
| 		GetWindowRect(hDlg, &rc); | 		GetWindowRect(hDlg, &rc); | ||||||
| 		SetWindowPos(hDlg, NULL, -1, -1, rc.right - rc.left + dw, rc.bottom - rc.top, SWP_NOMOVE | SWP_NOZORDER); | 		SetWindowPos(hDlg, NULL, -1, -1, rc.right - rc.left + dw, rc.bottom - rc.top, SWP_NOMOVE | SWP_NOZORDER); | ||||||
| 		for (i = 0; i < ARRAYSIZE(update_settings_reposition_ids); i++) { | 		for (i = 1; i < ARRAYSIZE(update_settings_reposition_ids); i++) { | ||||||
| 			if ((i >= 2) && (i <= 3)) | 			if ((i == 3) || (i == 5)) | ||||||
| 				continue; | 				continue; | ||||||
| 			Reposition(hDlg, update_settings_reposition_ids[i], (i < 6) ? 0 : dw, (i >= 6) ? 0 : dw); | 			Reposition(hDlg, update_settings_reposition_ids[i], update_settings_reposition_ids[i-1], | ||||||
|  | 				(i < 7) ? 0 : dw, (i >= 7) ? 0 : dw); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -1372,10 +1376,10 @@ static void PositionControls(HWND hDlg) | ||||||
| 	if (dw > 0) { | 	if (dw > 0) { | ||||||
| 		GetWindowRect(hDlg, &rc); | 		GetWindowRect(hDlg, &rc); | ||||||
| 		SetWindowPos(hDlg, NULL, -1, -1, rc.right - rc.left + dw, rc.bottom - rc.top, SWP_NOMOVE | SWP_NOZORDER); | 		SetWindowPos(hDlg, NULL, -1, -1, rc.right - rc.left + dw, rc.bottom - rc.top, SWP_NOMOVE | SWP_NOZORDER); | ||||||
| 		for (i = 0; i < ARRAYSIZE(update_settings_reposition_ids); i++) { | 		for (i = 1; i < ARRAYSIZE(update_settings_reposition_ids); i++) { | ||||||
| 			if ((i >= 1) && (i <= 5)) | 			if ((i >= 2) && (i <= 6)) | ||||||
| 				continue; | 				continue; | ||||||
| 			Reposition(hDlg, update_settings_reposition_ids[i], 0, dw); | 			Reposition(hDlg, update_settings_reposition_ids[i], update_settings_reposition_ids[i-1], 0, dw); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	hCtrl = GetDlgItem(hDlg, IDC_CHECK_NOW); | 	hCtrl = GetDlgItem(hDlg, IDC_CHECK_NOW); | ||||||
|  | @ -1464,7 +1468,7 @@ INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM l | ||||||
| 			dy -= rsz->rc.bottom - rsz->rc.top + 6;	// add the border
 | 			dy -= rsz->rc.bottom - rsz->rc.top + 6;	// add the border
 | ||||||
| 			ResizeMoveCtrl(hDlg, hDlg, 0, 0, 0, -dy, 1.0f); | 			ResizeMoveCtrl(hDlg, hDlg, 0, 0, 0, -dy, 1.0f); | ||||||
| 			ResizeMoveCtrl(hDlg, hPolicy, 0, 0, 0, -dy, 1.0f); | 			ResizeMoveCtrl(hDlg, hPolicy, 0, 0, 0, -dy, 1.0f); | ||||||
| 			for (i = 1; i < ARRAYSIZE(update_settings_reposition_ids); i++) | 			for (i = 2; i < ARRAYSIZE(update_settings_reposition_ids); i++) | ||||||
| 				ResizeMoveCtrl(hDlg, GetDlgItem(hDlg, update_settings_reposition_ids[i]), 0, -dy, 0, 0, 1.0f); | 				ResizeMoveCtrl(hDlg, GetDlgItem(hDlg, update_settings_reposition_ids[i]), 0, -dy, 0, 0, 1.0f); | ||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
|  | @ -1484,7 +1488,7 @@ INT_PTR CALLBACK UpdateCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM l | ||||||
| 				break; | 				break; | ||||||
| 			freq = (int32_t)ComboBox_GetItemData(hFrequency, ComboBox_GetCurSel(hFrequency)); | 			freq = (int32_t)ComboBox_GetItemData(hFrequency, ComboBox_GetCurSel(hFrequency)); | ||||||
| 			WriteSetting32(SETTING_UPDATE_INTERVAL, (DWORD)freq); | 			WriteSetting32(SETTING_UPDATE_INTERVAL, (DWORD)freq); | ||||||
| 			EnableWindow(hBeta, (freq >= 0)); | 			EnableWindow(hBeta, (freq >= 0) && is_x86_32); | ||||||
| 			return (INT_PTR)TRUE; | 			return (INT_PTR)TRUE; | ||||||
| 		case IDC_INCLUDE_BETAS: | 		case IDC_INCLUDE_BETAS: | ||||||
| 			if (HIWORD(wParam) != CBN_SELCHANGE) | 			if (HIWORD(wParam) != CBN_SELCHANGE) | ||||||
|  |  | ||||||
							
								
								
									
										28
									
								
								src/ui.c
									
										
									
									
									
								
							
							
						
						
									
										28
									
								
								src/ui.c
									
										
									
									
									
								
							|  | @ -1,7 +1,7 @@ | ||||||
| /*
 | /*
 | ||||||
|  * Rufus: The Reliable USB Formatting Utility |  * Rufus: The Reliable USB Formatting Utility | ||||||
|  * UI-related function calls |  * UI-related function calls | ||||||
|  * Copyright © 2018-2019 Pete Batard <pete@akeo.ie> |  * Copyright © 2018-2020 Pete Batard <pete@akeo.ie> | ||||||
|  * |  * | ||||||
|  * This program is free software: you can redistribute it and/or modify |  * This program is free software: you can redistribute it and/or modify | ||||||
|  * it under the terms of the GNU General Public License as published by |  * it under the terms of the GNU General Public License as published by | ||||||
|  | @ -28,6 +28,7 @@ | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| #include <string.h> | #include <string.h> | ||||||
|  | #include <oleacc.h> | ||||||
| #include <winioctl.h> | #include <winioctl.h> | ||||||
| #include <assert.h> | #include <assert.h> | ||||||
| 
 | 
 | ||||||
|  | @ -54,6 +55,7 @@ static int rh, ddh, bw, hw, fw; | ||||||
| static int sw, mw, bsw, sbw, ssw, tw, dbw; | static int sw, mw, bsw, sbw, ssw, tw, dbw; | ||||||
| static WNDPROC progress_original_proc = NULL; | static WNDPROC progress_original_proc = NULL; | ||||||
| static wchar_t wtbtext[2][128]; | static wchar_t wtbtext[2][128]; | ||||||
|  | static IAccPropServices* pfaps = NULL; | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * The following is used to allocate slots within the progress bar |  * The following is used to allocate slots within the progress bar | ||||||
|  | @ -67,6 +69,21 @@ static int nb_slots[OP_MAX]; | ||||||
| static float slot_end[OP_MAX+1];	// shifted +1 so that we can subtract 1 to OP indexes
 | static float slot_end[OP_MAX+1];	// shifted +1 so that we can subtract 1 to OP indexes
 | ||||||
| static float previous_end; | static float previous_end; | ||||||
| 
 | 
 | ||||||
|  | void SetAccessibleName(HWND hCtrl, const char* name) | ||||||
|  | { | ||||||
|  | 	const MSAAPROPID props[] = { Name_Property_GUID }; | ||||||
|  | 	wchar_t* wname = utf8_to_wchar(name); | ||||||
|  | 
 | ||||||
|  | 	SetWindowTextW(hCtrl, wname); | ||||||
|  | 	if (pfaps == NULL) | ||||||
|  | 		CoCreateInstance(&CLSID_AccPropServices, NULL, CLSCTX_INPROC, &IID_IAccPropServices, (LPVOID)&pfaps); | ||||||
|  | 	if (pfaps != NULL) { | ||||||
|  | 		IAccPropServices_ClearHwndProps(pfaps, hCtrl, OBJID_CLIENT, CHILDID_SELF, props, ARRAYSIZE(props)); | ||||||
|  | 		IAccPropServices_SetHwndPropStr(pfaps, hCtrl, OBJID_CLIENT, CHILDID_SELF, Name_Property_GUID, wname); | ||||||
|  | 	} | ||||||
|  | 	free(wname); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // Set the combo selection according to the data
 | // Set the combo selection according to the data
 | ||||||
| void SetComboEntry(HWND hDlg, int data) | void SetComboEntry(HWND hDlg, int data) | ||||||
| { | { | ||||||
|  | @ -438,7 +455,7 @@ void PositionMainControls(HWND hDlg) | ||||||
| 		// Still need to adjust the width of the device selection dropdown
 | 		// Still need to adjust the width of the device selection dropdown
 | ||||||
| 		GetWindowRect(hDeviceList, &rc); | 		GetWindowRect(hDeviceList, &rc); | ||||||
| 		MapWindowPoints(NULL, hMainDialog, (POINT*)&rc, 2); | 		MapWindowPoints(NULL, hMainDialog, (POINT*)&rc, 2); | ||||||
| 		SetWindowPos(hDeviceList, HWND_TOP, rc.left, rc.top, fw - ssw - sbw, rc.bottom - rc.top, 0); | 		SetWindowPos(hDeviceList, GetDlgItem(hDlg, IDS_DEVICE_TXT), rc.left, rc.top, fw - ssw - sbw, rc.bottom - rc.top, 0); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Resize the full width controls
 | 	// Resize the full width controls
 | ||||||
|  | @ -605,7 +622,7 @@ void ToggleAdvancedDeviceOptions(BOOL enable) | ||||||
| 
 | 
 | ||||||
| 	GetWindowRect(hDeviceList, &rc); | 	GetWindowRect(hDeviceList, &rc); | ||||||
| 	MapWindowPoints(NULL, hMainDialog, (POINT*)&rc, 2); | 	MapWindowPoints(NULL, hMainDialog, (POINT*)&rc, 2); | ||||||
| 	SetWindowPos(hDeviceList, HWND_TOP, rc.left, rc.top, enable ? fw - ssw - sbw : fw, rc.bottom - rc.top, 0); | 	SetWindowPos(hDeviceList, GetDlgItem(hMainDialog, IDS_DEVICE_TXT), rc.left, rc.top, enable ? fw - ssw - sbw : fw, rc.bottom - rc.top, 0); | ||||||
| 
 | 
 | ||||||
| 	// Resize the main dialog and log window
 | 	// Resize the main dialog and log window
 | ||||||
| 	ResizeDialogs(shift); | 	ResizeDialogs(shift); | ||||||
|  | @ -841,6 +858,7 @@ void CreateSmallButtons(HWND hDlg) | ||||||
| 	tbToolbarButtons[0].fsState = TBSTATE_ENABLED; | 	tbToolbarButtons[0].fsState = TBSTATE_ENABLED; | ||||||
| 	tbToolbarButtons[0].iBitmap = 0; | 	tbToolbarButtons[0].iBitmap = 0; | ||||||
| 	SendMessage(hSaveToolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&tbToolbarButtons); | 	SendMessage(hSaveToolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&tbToolbarButtons); | ||||||
|  | 	SetAccessibleName(hSaveToolbar, lmprintf(MSG_313)); | ||||||
| 
 | 
 | ||||||
| 	hHashToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, TOOLBAR_STYLE, | 	hHashToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, TOOLBAR_STYLE, | ||||||
| 		0, 0, 0, 0, hMainDialog, (HMENU)IDC_HASH_TOOLBAR, hMainInstance, NULL); | 		0, 0, 0, 0, hMainDialog, (HMENU)IDC_HASH_TOOLBAR, hMainInstance, NULL); | ||||||
|  | @ -857,6 +875,7 @@ void CreateSmallButtons(HWND hDlg) | ||||||
| 	tbToolbarButtons[0].fsState = TBSTATE_ENABLED; | 	tbToolbarButtons[0].fsState = TBSTATE_ENABLED; | ||||||
| 	tbToolbarButtons[0].iBitmap = 0; | 	tbToolbarButtons[0].iBitmap = 0; | ||||||
| 	SendMessage(hHashToolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&tbToolbarButtons); | 	SendMessage(hHashToolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM)&tbToolbarButtons); | ||||||
|  | 	SetAccessibleName(hHashToolbar, lmprintf(MSG_314)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static INT_PTR CALLBACK ProgressCallback(HWND hCtrl, UINT message, WPARAM wParam, LPARAM lParam) | static INT_PTR CALLBACK ProgressCallback(HWND hCtrl, UINT message, WPARAM wParam, LPARAM lParam) | ||||||
|  | @ -1058,6 +1077,7 @@ void CreateAdditionalControls(HWND hDlg) | ||||||
| 	if (sz.cx < 16) | 	if (sz.cx < 16) | ||||||
| 		sz.cx = fw; | 		sz.cx = fw; | ||||||
| 	SetWindowPos(hAdvancedDeviceToolbar, hTargetSystem, rc.left + toolbar_dx, rc.top, sz.cx, rc.bottom - rc.top, 0); | 	SetWindowPos(hAdvancedDeviceToolbar, hTargetSystem, rc.left + toolbar_dx, rc.top, sz.cx, rc.bottom - rc.top, 0); | ||||||
|  | 	SetAccessibleName(hAdvancedDeviceToolbar, lmprintf(MSG_119)); | ||||||
| 
 | 
 | ||||||
| 	utf8_to_wchar_no_alloc(lmprintf((advanced_mode_format) ? MSG_122 : MSG_121, lmprintf(MSG_120)), wtbtext[1], ARRAYSIZE(wtbtext[1])); | 	utf8_to_wchar_no_alloc(lmprintf((advanced_mode_format) ? MSG_122 : MSG_121, lmprintf(MSG_120)), wtbtext[1], ARRAYSIZE(wtbtext[1])); | ||||||
| 	hAdvancedFormatToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, TOOLBAR_STYLE, | 	hAdvancedFormatToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, TOOLBAR_STYLE, | ||||||
|  | @ -1078,6 +1098,7 @@ void CreateAdditionalControls(HWND hDlg) | ||||||
| 	if (sz.cx < 16) | 	if (sz.cx < 16) | ||||||
| 		sz.cx = fw; | 		sz.cx = fw; | ||||||
| 	SetWindowPos(hAdvancedFormatToolbar, hClusterSize, rc.left + toolbar_dx, rc.top, sz.cx, rc.bottom - rc.top, 0); | 	SetWindowPos(hAdvancedFormatToolbar, hClusterSize, rc.left + toolbar_dx, rc.top, sz.cx, rc.bottom - rc.top, 0); | ||||||
|  | 	SetAccessibleName(hAdvancedFormatToolbar, lmprintf(MSG_120)); | ||||||
| 
 | 
 | ||||||
| 	// Create the multi toolbar
 | 	// Create the multi toolbar
 | ||||||
| 	hMultiToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, TOOLBAR_STYLE, | 	hMultiToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, TOOLBAR_STYLE, | ||||||
|  | @ -1126,6 +1147,7 @@ void CreateAdditionalControls(HWND hDlg) | ||||||
| 	tbToolbarButtons[6].iBitmap = 3; | 	tbToolbarButtons[6].iBitmap = 3; | ||||||
| 	SendMessage(hMultiToolbar, TB_ADDBUTTONS, (WPARAM)7, (LPARAM)&tbToolbarButtons); | 	SendMessage(hMultiToolbar, TB_ADDBUTTONS, (WPARAM)7, (LPARAM)&tbToolbarButtons); | ||||||
| 	SendMessage(hMultiToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(i16, ddbh)); | 	SendMessage(hMultiToolbar, TB_SETBUTTONSIZE, 0, MAKELPARAM(i16, ddbh)); | ||||||
|  | 	SetAccessibleName(hMultiToolbar, lmprintf(MSG_315)); | ||||||
| 
 | 
 | ||||||
| 	// Subclass the progress bar so that we can write on it
 | 	// Subclass the progress bar so that we can write on it
 | ||||||
| 	progress_original_proc = (WNDPROC)SetWindowLongPtr(hProgress, GWLP_WNDPROC, (LONG_PTR)ProgressCallback); | 	progress_original_proc = (WNDPROC)SetWindowLongPtr(hProgress, GWLP_WNDPROC, (LONG_PTR)ProgressCallback); | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								src/ui.h
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								src/ui.h
									
										
									
									
									
								
							|  | @ -83,6 +83,7 @@ extern int advanced_device_section_height, advanced_format_section_height; | ||||||
| extern int windows_to_go_selection, persistence_unit_selection; | extern int windows_to_go_selection, persistence_unit_selection; | ||||||
| extern int selection_default, cbw, ddw, ddbh, bh, update_progress_type; | extern int selection_default, cbw, ddw, ddbh, bh, update_progress_type; | ||||||
| 
 | 
 | ||||||
|  | extern void SetAccessibleName(HWND hCtrl, const char* name); | ||||||
| extern void SetComboEntry(HWND hDlg, int data); | extern void SetComboEntry(HWND hDlg, int data); | ||||||
| extern void GetBasicControlsWidth(HWND hDlg); | extern void GetBasicControlsWidth(HWND hDlg); | ||||||
| extern void GetMainButtonsWidth(HWND hDlg); | extern void GetMainButtonsWidth(HWND hDlg); | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| /*
 | /*
 | ||||||
|  * Rufus: The Reliable USB Formatting Utility |  * Rufus: The Reliable USB Formatting Utility | ||||||
|  * UI element lists |  * UI element lists | ||||||
|  * Copyright © 2018 Pete Batard <pete@akeo.ie> |  * Copyright © 2018-2020 Pete Batard <pete@akeo.ie> | ||||||
|  * |  * | ||||||
|  * This program is free software: you can redistribute it and/or modify |  * This program is free software: you can redistribute it and/or modify | ||||||
|  * it under the terms of the GNU General Public License as published by |  * it under the terms of the GNU General Public License as published by | ||||||
|  | @ -22,6 +22,16 @@ | ||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | // GUIDs needed to set a control's accessibility props
 | ||||||
|  | #if defined(_MSC_VER) | ||||||
|  | const GUID DECLSPEC_SELECTANY CLSID_AccPropServices = | ||||||
|  | 	{ 0xb5f8350b, 0x0548, 0x48b1, { 0xa6, 0xee, 0x88, 0xbd, 0x00, 0xb4, 0xa5, 0xe7 } }; | ||||||
|  | #endif | ||||||
|  | const GUID DECLSPEC_SELECTANY Name_Property_GUID = | ||||||
|  | 	{ 0xc3a6921b, 0x4a99, 0x44f1, { 0xbc, 0xa6, 0x61, 0x18, 0x70, 0x52, 0xc4, 0x31 } }; | ||||||
|  | const GUID DECLSPEC_SELECTANY HelpText_Property_GUID = | ||||||
|  | 	{ 0x08555685, 0x0977, 0x45c7, { 0xa7, 0xa6, 0xab, 0xaf, 0x56, 0x84, 0x12, 0x1a } }; | ||||||
|  | 
 | ||||||
| static int section_control_ids[] = { | static int section_control_ids[] = { | ||||||
| 	IDS_DRIVE_PROPERTIES_TXT, | 	IDS_DRIVE_PROPERTIES_TXT, | ||||||
| 	IDS_FORMAT_OPTIONS_TXT, | 	IDS_FORMAT_OPTIONS_TXT, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue