From: <sv...@op...> - 2024-11-16 18:27:01
|
Author: sagamusix Date: Sat Nov 16 19:26:49 2024 New Revision: 22204 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22204 Log: [Fix] Split buttons are only available on Vista and newer. Try to enable them, and if that fails, fall back to a normal button. Modified: trunk/OpenMPT/mptrack/KeyConfigDlg.cpp trunk/OpenMPT/mptrack/KeyConfigDlg.h trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/resource.h Modified: trunk/OpenMPT/mptrack/KeyConfigDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/KeyConfigDlg.cpp Sat Nov 16 19:04:42 2024 (r22203) +++ trunk/OpenMPT/mptrack/KeyConfigDlg.cpp Sat Nov 16 19:26:49 2024 (r22204) @@ -151,12 +151,16 @@ ON_COMMAND(IDC_NOTESREPEAT, &COptionsKeyboard::OnNotesRepeat) ON_COMMAND(IDC_NONOTESREPEAT, &COptionsKeyboard::OnNoNotesRepeat) ON_COMMAND(IDC_RESTORE_KEYMAP, &COptionsKeyboard::OnRestoreDefaultKeymap) + ON_COMMAND(ID_KEYPRESET_MPT, &COptionsKeyboard::OnRestoreMPTKeymap) ON_COMMAND(ID_KEYPRESET_IT, &COptionsKeyboard::OnRestoreITKeymap) ON_COMMAND(ID_KEYPRESET_FT2, &COptionsKeyboard::OnRestoreFT2Keymap) ON_EN_CHANGE(IDC_FIND, &COptionsKeyboard::OnSearchTermChanged) ON_EN_SETFOCUS(IDC_FINDHOTKEY, &COptionsKeyboard::OnClearHotKey) ON_NOTIFY(LVN_ITEMCHANGED, IDC_COMMAND_LIST, &COptionsKeyboard::OnCommandKeySelChanged) ON_NOTIFY(NM_DBLCLK, IDC_COMMAND_LIST, &COptionsKeyboard::OnListenForKeysFromList) +#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) + ON_NOTIFY(BCN_DROPDOWN, IDC_RESTORE_KEYMAP, &COptionsKeyboard::OnRestoreKeymapDropdown) +#endif END_MESSAGE_MAP() @@ -211,13 +215,9 @@ m_cmbCategory.SetCurSel(0); UpdateDialog(); - CMenu *splitButtonMenu = new CMenu{}; - if(splitButtonMenu->CreatePopupMenu()) - { - splitButtonMenu->AppendMenu(MF_STRING, ID_KEYPRESET_IT, _T("&Impulse Tracker style")); - splitButtonMenu->AppendMenu(MF_STRING, ID_KEYPRESET_FT2, _T("&Fast Tracker style")); - m_restoreDefaultButton.SetDropDownMenu(splitButtonMenu); // takes ownership of menu pointer - } +#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) + m_restoreDefaultButton.ModifyStyle(0, BS_SPLITBUTTON); +#endif m_eCustHotKey.SetOwner(*this); m_eFindHotKey.SetOwner(*this); @@ -1092,6 +1092,44 @@ } +void COptionsKeyboard::OnRestoreKeymapDropdown(NMHDR *, LRESULT *result) +{ + ShowRestoreKeymapMenu(); + *result = 0; +} + +void COptionsKeyboard::OnRestoreDefaultKeymap() +{ +#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) + if((m_restoreDefaultButton.GetStyle() & BS_SPLITBUTTON) == BS_SPLITBUTTON) + { + OnRestoreMPTKeymap(); + return; + } +#endif + ShowRestoreKeymapMenu(); +} + + +void COptionsKeyboard::ShowRestoreKeymapMenu() +{ + CRect rect; + m_restoreDefaultButton.GetWindowRect(rect); + + TPMPARAMS tpmParams{}; + tpmParams.cbSize = sizeof(TPMPARAMS); + tpmParams.rcExclude = rect; + + CMenu menu; + if(!menu.CreatePopupMenu()) + return; + menu.AppendMenu(MF_STRING, ID_KEYPRESET_MPT, _T("&OpenMPT style")); + menu.AppendMenu(MF_STRING, ID_KEYPRESET_IT, _T("&Impulse Tracker style")); + menu.AppendMenu(MF_STRING, ID_KEYPRESET_FT2, _T("&Fast Tracker style")); + menu.TrackPopupMenuEx(TPM_LEFTALIGN | TPM_TOPALIGN | TPM_LEFTBUTTON, rect.left, rect.bottom, this, &tpmParams); +} + + void COptionsKeyboard::RestoreKeymap(KeyboardPreset preset) { if(Reporting::Confirm("Discard all custom changes and restore default key configuration?", false, true, this) == cnfYes) Modified: trunk/OpenMPT/mptrack/KeyConfigDlg.h ============================================================================== --- trunk/OpenMPT/mptrack/KeyConfigDlg.h Sat Nov 16 19:04:42 2024 (r22203) +++ trunk/OpenMPT/mptrack/KeyConfigDlg.h Sat Nov 16 19:26:49 2024 (r22204) @@ -79,7 +79,7 @@ CStatic m_warnIconCtl, m_warnText; CEdit m_eFind; CEdit m_eChordWaitTime; - CSplitButton m_restoreDefaultButton; + CButton m_restoreDefaultButton; HICON m_infoIcon = nullptr, m_warnIcon = nullptr; CString m_lastWarning; @@ -117,6 +117,7 @@ void EnableKeyChoice(bool enable); void UpdateWarning(CString text = {}, bool notify = false); + void ShowRestoreKeymapMenu(); void RestoreKeymap(KeyboardPreset preset); afx_msg LRESULT OnDPIChangedAfterParent(WPARAM, LPARAM); @@ -137,7 +138,9 @@ afx_msg void OnRestoreKeyChoice(); afx_msg void OnLoad(); afx_msg void OnSave(); - afx_msg void OnRestoreDefaultKeymap() { RestoreKeymap(KeyboardPreset::MPT); } + afx_msg void OnRestoreDefaultKeymap(); + afx_msg void OnRestoreKeymapDropdown(NMHDR *, LRESULT *result); + afx_msg void OnRestoreMPTKeymap() { RestoreKeymap(KeyboardPreset::MPT); } afx_msg void OnRestoreITKeymap() { RestoreKeymap(KeyboardPreset::IT); } afx_msg void OnRestoreFT2Keymap() { RestoreKeymap(KeyboardPreset::FT2); } afx_msg void OnClearHotKey(); Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Sat Nov 16 19:04:42 2024 (r22203) +++ trunk/OpenMPT/mptrack/mptrack.rc Sat Nov 16 19:26:49 2024 (r22204) @@ -1273,8 +1273,7 @@ EDITTEXT IDC_CHORDDETECTWAITTIME,252,246,30,12,ES_AUTOHSCROLL | ES_NUMBER PUSHBUTTON "&Import Key Map...",IDC_LOAD,6,264,72,13 PUSHBUTTON "&Export Key Map...",IDC_SAVE,84,264,72,13 - CONTROL "Restore default &configuration",IDC_RESTORE_KEYMAP, - "Button",BS_SPLITBUTTON | WS_TABSTOP,162,264,120,12 + PUSHBUTTON "Restore default &configuration",IDC_RESTORE_KEYMAP,162,264,120,12 END IDD_OPTIONS_COLORS DIALOGEX 0, 0, 286, 282 Modified: trunk/OpenMPT/mptrack/resource.h ============================================================================== --- trunk/OpenMPT/mptrack/resource.h Sat Nov 16 19:04:42 2024 (r22203) +++ trunk/OpenMPT/mptrack/resource.h Sat Nov 16 19:26:49 2024 (r22204) @@ -1179,8 +1179,9 @@ #define ID_MAINBAR_SHOW_GLOBALVOLUME 36041 #define ID_MAINBAR_SHOW_VUMETER 36042 #define ID_TREEVIEW_ON_LEFT 36043 -#define ID_KEYPRESET_IT 36044 -#define ID_KEYPRESET_FT2 36045 +#define ID_KEYPRESET_MPT 36044 +#define ID_KEYPRESET_IT 36045 +#define ID_KEYPRESET_FT2 36046 #define ID_SELECTINST 36100 // From here: Command range [ID_SELECTINST, ID_SELECTINST + MAX_INSTRUMENTS] #define ID_PLUG_RECORDAUTOMATION 37003 |