diff --git a/res/rufus.ico b/res/rufus.ico index 09913990..7ea3c69a 100644 Binary files a/res/rufus.ico and b/res/rufus.ico differ diff --git a/src/net.c b/src/net.c index 5651900e..59d352c7 100644 --- a/src/net.c +++ b/src/net.c @@ -331,7 +331,7 @@ DWORD DownloadFile(const char* url, const char* file, HWND hProgressDialog) HttpQueryInfoA(hRequest, HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER, (LPVOID)&DownloadStatus, &dwSize, NULL); if (DownloadStatus != 200) { error_code = ERROR_INTERNET_ITEM_NOT_FOUND; - uprintf("Unable to access file: Server status %d\n", DownloadStatus); + uprintf("Unable to access file: %d\n", DownloadStatus); goto out; } dwSize = sizeof(dwTotalSize); diff --git a/src/rufus.c b/src/rufus.c index e42502b7..37a4c1f9 100644 --- a/src/rufus.c +++ b/src/rufus.c @@ -1053,7 +1053,10 @@ static void SetPassesTooltip(void) // Toggle "advanced" mode static void ToggleAdvanced(void) { - float dialog_shift = 82.0f; + // Compute the shift according to the weird values we measured at different scales: + // {1.0, 82}, {1.25, 88}, {1.5, 90}, {2.0, 96}, {2.5, 94} (Seriously, WTF is wrong with your scaling Microsoft?!?!) + // https://www.wolframalpha.com/input/?i=cubic+fit+{1%2C82}%2C{1.25%2C88}%2C{1.5%2C90}%2C{2%2C96}%2C{2.5%2C94} + float dialog_shift = -3.22807f*fScale*fScale*fScale + 6.69173f*fScale*fScale + 15.8822f*fScale + 62.9737f; RECT rect; POINT point; int toggle; @@ -1127,7 +1130,8 @@ static void ToggleImage(BOOL enable) // Toggle the Windows To Go radio choice static void ToggleToGo(void) { - float dialog_shift = 38.0f; + // {1.0, 38}, {1.25, 40}, {1.5, 40}, {2.0, 44}, {2.5, 44} + float dialog_shift = (fScale >= 1.9f)?44.0f:((fScale >= 1.2f)?40.0f:38.0f); RECT rect; POINT point; int toggle; @@ -1554,7 +1558,7 @@ void InitDialog(HWND hDlg) HINSTANCE hShell32DllInst, hUserLanguagesCplDllInst, hINetCplDllInst; HIMAGELIST hLangToolbarImageList; TBBUTTON tbLangToolbarButtons[1]; - RECT rcDeviceList, rcToolbarButton; + RECT rcDeviceList, rcToolbarButton, rcFormatGroup, rcAdvancedOptions, rcBootType, rcSelectImage; DWORD len; SIZE sz; HWND hCtrl; @@ -1727,19 +1731,33 @@ void InitDialog(HWND hDlg) (int)(4.0f * fScale), rcToolbarButton.right, rcToolbarButton.bottom, 0); ShowWindow(hLangToolbar, SW_SHOWNORMAL); - // Reposition the Advanced button + // Add trailing space to the "Format Options" text hCtrl = GetDlgItem(hDlg, IDS_FORMAT_OPTIONS_GRP); - sz = GetTextSize(hCtrl); - ResizeMoveCtrl(hDlg, GetDlgItem(hDlg, IDC_ADVANCED), (int)((1.0f * sz.cx) / fScale), 0, 0, 0); - // Add a space to the "Format Options" text GetWindowTextW(hCtrl, wtmp, ARRAYSIZE(wtmp)); wtmp[wcslen(wtmp)] = ' '; SetWindowTextW(hCtrl, wtmp); + + // Reposition and resize the Advanced button + GetWindowRect(hCtrl, &rcFormatGroup); + MapWindowPoints(NULL, hDlg, (POINT*)&rcFormatGroup, 2); + sz = GetTextSize(hCtrl); + GetWindowRect(GetDlgItem(hDlg, IDC_ADVANCED), &rcAdvancedOptions); + // The label of a group box is always 8 pixels to the right, *regardless* of the zoom level + SetWindowPos(GetDlgItem(hDlg, IDC_ADVANCED), hCtrl, rcFormatGroup.left + 8 + sz.cx, + rcFormatGroup.top, i16 + (int)(4.0f * fScale), i16/2 + (int)(8.0f * fScale), 0); + + // Reposition and resize the Select Image button + GetWindowRect(hBootType, &rcBootType); + MapWindowPoints(NULL, hDlg, (POINT*)&rcBootType, 2); + GetWindowRect(hSelectISO, &rcSelectImage); + MapWindowPoints(NULL, hDlg, (POINT*)&rcSelectImage, 2); + SetWindowPos(hSelectISO, NULL, rcSelectImage.left, rcBootType.top - 1, + rcSelectImage.right - rcSelectImage.left, rcBootType.bottom - rcBootType.top + 2, 0); + // The things one needs to do to keep things looking good... if (nWindowsVersion == WINDOWS_7) { ResizeMoveCtrl(hDlg, GetDlgItem(hMainDialog, IDS_ADVANCED_OPTIONS_GRP), 0, -1, 0, 2); ResizeMoveCtrl(hDlg, hProgress, 0, 1, 0, 0); - ResizeMoveCtrl(hDlg, GetDlgItem(hDlg, IDC_ADVANCED), -1, 0, 0, 0); } // Subclass the Info box so that we can align its text vertically @@ -1987,11 +2005,11 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA #endif return (INT_PTR)FALSE; - // The things one must do to get an ellipsis on the status bar... + // The things one must do to get an ellipsis text alignment on the status bar... case WM_DRAWITEM: if (wParam == IDC_STATUS) { pDI = (DRAWITEMSTRUCT*)lParam; - pDI->rcItem.top += (int)(2.0f * fScale); + pDI->rcItem.top -= (int)((4.0f * fScale) - 6.0f); pDI->rcItem.left += (int)(4.0f * fScale); SetBkMode(pDI->hDC, TRANSPARENT); switch(pDI->itemID) { diff --git a/src/rufus.rc b/src/rufus.rc index 5a894f67..84e53bdb 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Rufus 2.2.659" +CAPTION "Rufus 2.2.660" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 @@ -44,15 +44,15 @@ BEGIN LTEXT "Cluster size",IDS_CLUSTERSIZE_TXT,9,93,222,10 COMBOBOX IDC_CLUSTERSIZE,8,104,226,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "New volume label",IDS_LABEL_TXT,9,121,222,10 - EDITTEXT IDC_LABEL,8,131,226,13,ES_AUTOHSCROLL + EDITTEXT IDC_LABEL,8,131,226,12,ES_AUTOHSCROLL GROUPBOX "Format Options",IDS_FORMAT_OPTIONS_GRP,7,149,227,89 - PUSHBUTTON "",IDC_ADVANCED,15,148,14,10,BS_ICON + PUSHBUTTON "",IDC_ADVANCED,220,148,14,10,BS_ICON CONTROL "Check device for bad blocks",IDC_BADBLOCKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,161,112,10 COMBOBOX IDC_NBPASSES,128,159,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 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 + COMBOBOX IDC_BOOTTYPE,128,184,75,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_SELECT_ISO,207,183,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 @@ -157,7 +157,7 @@ END IDD_DIALOG_XP DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Rufus 2.2.659" +CAPTION "Rufus 2.2.660" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 @@ -169,15 +169,15 @@ BEGIN LTEXT "Cluster size",IDS_CLUSTERSIZE_TXT,9,93,222,10 COMBOBOX IDC_CLUSTERSIZE,8,104,226,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "New volume label",IDS_LABEL_TXT,9,121,222,10 - EDITTEXT IDC_LABEL,8,131,226,13,ES_AUTOHSCROLL + EDITTEXT IDC_LABEL,8,131,226,12,ES_AUTOHSCROLL GROUPBOX "Format Options",IDS_FORMAT_OPTIONS_GRP,7,149,227,89 - PUSHBUTTON "",IDC_ADVANCED,15,148,14,10,BS_ICON + PUSHBUTTON "",IDC_ADVANCED,220,148,14,10,BS_ICON CONTROL "Check device for bad blocks",IDC_BADBLOCKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,161,112,10 COMBOBOX IDC_NBPASSES,128,159,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 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 + COMBOBOX IDC_BOOTTYPE,128,184,75,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "",IDC_SELECT_ISO,207,183,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 @@ -283,7 +283,7 @@ END IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL -CAPTION "Rufus 2.2.659" +CAPTION "Rufus 2.2.660" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 @@ -295,15 +295,15 @@ BEGIN LTEXT "Cluster size",IDS_CLUSTERSIZE_TXT,9,93,222,10 COMBOBOX IDC_CLUSTERSIZE,8,104,226,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "New volume label",IDS_LABEL_TXT,9,121,222,10 - EDITTEXT IDC_LABEL,8,131,226,13,ES_AUTOHSCROLL + EDITTEXT IDC_LABEL,8,131,226,12,ES_AUTOHSCROLL GROUPBOX "Format Options",IDS_FORMAT_OPTIONS_GRP,7,149,227,89 - PUSHBUTTON "",IDC_ADVANCED,15,148,14,10,BS_ICON + PUSHBUTTON "",IDC_ADVANCED,220,148,14,10,BS_ICON CONTROL "Check device for bad blocks",IDC_BADBLOCKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,161,112,10 COMBOBOX IDC_NBPASSES,128,159,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 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 + COMBOBOX IDC_BOOTTYPE,128,184,75,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "",IDC_SELECT_ISO,207,183,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 @@ -415,7 +415,7 @@ END IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL -CAPTION "Rufus 2.2.659" +CAPTION "Rufus 2.2.660" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 @@ -427,15 +427,15 @@ BEGIN LTEXT "Cluster size",IDS_CLUSTERSIZE_TXT,9,93,222,10 COMBOBOX IDC_CLUSTERSIZE,8,104,226,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "New volume label",IDS_LABEL_TXT,9,121,222,10 - EDITTEXT IDC_LABEL,8,131,226,13,ES_AUTOHSCROLL + EDITTEXT IDC_LABEL,8,131,226,12,ES_AUTOHSCROLL GROUPBOX "Format Options",IDS_FORMAT_OPTIONS_GRP,7,149,227,89 - PUSHBUTTON "",IDC_ADVANCED,15,148,14,10,BS_ICON + PUSHBUTTON "",IDC_ADVANCED,220,148,14,10,BS_ICON CONTROL "Check device for bad blocks",IDC_BADBLOCKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,161,112,10 COMBOBOX IDC_NBPASSES,128,159,100,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 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 + COMBOBOX IDC_BOOTTYPE,128,184,75,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "",IDC_SELECT_ISO,207,183,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 @@ -671,8 +671,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,2,659,0 - PRODUCTVERSION 2,2,659,0 + FILEVERSION 2,2,660,0 + PRODUCTVERSION 2,2,660,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -689,13 +689,13 @@ BEGIN BEGIN VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "2.2.659" + VALUE "FileVersion", "2.2.660" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2015 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "2.2.659" + VALUE "ProductVersion", "2.2.660" END END BLOCK "VarFileInfo" diff --git a/src/stdlg.c b/src/stdlg.c index 5ce68387..7ccc2b62 100644 --- a/src/stdlg.c +++ b/src/stdlg.c @@ -61,7 +61,7 @@ static const SETTEXTEX friggin_microsoft_unicode_amateurs = {ST_DEFAULT, CP_UTF8 static BOOL notification_is_question; static const notification_info* notification_more_info; static BOOL settings_commcheck = FALSE; -static WNDPROC original_wndproc = NULL; +static WNDPROC update_original_proc = NULL; /* * We need a sub-callback to read the content of the edit box on exit and update @@ -405,7 +405,7 @@ void CreateStatusBar(void) // Create the status bar. hStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, - 0, 0, 0, 0, hMainDialog, (HMENU)IDC_STATUS, hMainInstance, NULL); + 0, 0, 0, 0, hMainDialog, (HMENU)IDC_STATUS, hMainInstance, NULL); // Create 2 status areas GetClientRect(hMainDialog, &rect); @@ -1165,7 +1165,7 @@ static void CreateStaticFont(HDC dc, HFONT* hyperlink_font) { * Work around the limitations of edit control, to display a hand cursor for hyperlinks * NB: The LTEXT control must have SS_NOTIFY attribute for this to work */ -INT_PTR CALLBACK subclass_callback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +INT_PTR CALLBACK update_subclass_callback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { @@ -1176,7 +1176,7 @@ INT_PTR CALLBACK subclass_callback(HWND hDlg, UINT message, WPARAM wParam, LPARA } break; } - return CallWindowProc(original_wndproc, hDlg, message, wParam, lParam); + return CallWindowProc(update_original_proc, hDlg, message, wParam, lParam); } /* @@ -1201,7 +1201,7 @@ INT_PTR CALLBACK NewVersionCallback(HWND hDlg, UINT message, WPARAM wParam, LPAR SetTitleBarIcon(hDlg); CenterDialog(hDlg); // Subclass the callback so that we can change the cursor - original_wndproc = (WNDPROC)SetWindowLongPtr(hDlg, GWLP_WNDPROC, (LONG_PTR)subclass_callback); + update_original_proc = (WNDPROC)SetWindowLongPtr(hDlg, GWLP_WNDPROC, (LONG_PTR)update_subclass_callback); hNotes = GetDlgItem(hDlg, IDC_RELEASE_NOTES); SendMessage(hNotes, EM_AUTOURLDETECT, 1, 0); SendMessageA(hNotes, EM_SETTEXTEX, (WPARAM)&friggin_microsoft_unicode_amateurs, (LPARAM)update.release_notes); @@ -1351,7 +1351,7 @@ SIZE GetTextSize(HWND hCtrl) int len; HFONT hFont; - // Compute the size of the text of the format group + // Compute the size of the text hDC = GetDC(hCtrl); if (hDC == NULL) goto out;