From: <sv...@op...> - 2024-11-22 23:25:18
|
Author: sagamusix Date: Sat Nov 23 00:25:11 2024 New Revision: 22263 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22263 Log: [Fix] Fix keyboard focus being stuck on MDI client area, being unable to return to the quick start dialog after refocussing OpenMPT window. Modified: trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainfrm.h Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Fri Nov 22 23:55:56 2024 (r22262) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sat Nov 23 00:25:11 2024 (r22263) @@ -89,42 +89,42 @@ ON_WM_DEVICECHANGE() ON_WM_DROPFILES() ON_WM_QUERYENDSESSION() - ON_COMMAND(ID_VIEW_OPTIONS, &CMainFrame::OnViewOptions) + ON_WM_MOUSEWHEEL() + ON_WM_SHOWWINDOW() + ON_WM_ACTIVATEAPP() + ON_WM_ACTIVATE() - ON_COMMAND(ID_PLUGIN_SETUP, &CMainFrame::OnPluginManager) - ON_COMMAND(ID_CLIPBOARD_MANAGER, &CMainFrame::OnClipboardManager) - //ON_COMMAND(ID_HELP, CMDIFrameWnd::OnHelp) - ON_COMMAND(ID_REPORT_BUG, &CMainFrame::OnReportBug) - ON_COMMAND(ID_NEXTOCTAVE, &CMainFrame::OnNextOctave) - ON_COMMAND(ID_PREVOCTAVE, &CMainFrame::OnPrevOctave) - ON_COMMAND_RANGE(ID_FILE_OPENTEMPLATE, ID_FILE_OPENTEMPLATE_LASTINRANGE, &CMainFrame::OnOpenTemplateModule) - ON_COMMAND(ID_ADD_SOUNDBANK, &CMainFrame::OnAddDlsBank) - ON_COMMAND(ID_IMPORT_MIDILIB, &CMainFrame::OnImportMidiLib) - ON_COMMAND(ID_MIDI_RECORD, &CMainFrame::OnMidiRecord) - ON_COMMAND(ID_PANIC, &CMainFrame::OnPanic) - ON_COMMAND(ID_PLAYER_PAUSE, &CMainFrame::OnPlayerPause) - ON_COMMAND_RANGE(ID_EXAMPLE_MODULES, ID_EXAMPLE_MODULES_LASTINRANGE, &CMainFrame::OnExampleSong) - ON_COMMAND_EX(IDD_TREEVIEW, &CMainFrame::OnBarCheck) - ON_COMMAND_EX(ID_NETLINK_MODPLUG, &CMainFrame::OnInternetLink) - ON_COMMAND_EX(ID_NETLINK_TOP_PICKS, &CMainFrame::OnInternetLink) - ON_UPDATE_COMMAND_UI(ID_MIDI_RECORD, &CMainFrame::OnUpdateMidiRecord) - ON_UPDATE_COMMAND_UI(ID_INDICATOR_TIME, &CMainFrame::OnUpdateTime) - ON_UPDATE_COMMAND_UI(ID_INDICATOR_USER, &CMainFrame::OnUpdateUser) - ON_UPDATE_COMMAND_UI(ID_INDICATOR_INFO, &CMainFrame::OnUpdateInfo) - ON_UPDATE_COMMAND_UI(ID_INDICATOR_XINFO,&CMainFrame::OnUpdateXInfo) - ON_UPDATE_COMMAND_UI(IDD_TREEVIEW, &CMainFrame::OnUpdateControlBarMenu) - ON_MESSAGE(WM_MOD_UPDATEPOSITION, &CMainFrame::OnUpdatePosition) - ON_MESSAGE(WM_MOD_INVALIDATEPATTERNS, &CMainFrame::OnInvalidatePatterns) - ON_MESSAGE(WM_MOD_KEYCOMMAND, &CMainFrame::OnCustomKeyMsg) - ON_MESSAGE(WM_MOD_MIDIMAPPING, &CMainFrame::OnViewMIDIMapping) - ON_MESSAGE(WM_MOD_UPDATEVIEWS, &CMainFrame::OnUpdateViews) - ON_MESSAGE(WM_MOD_SETMODIFIED, &CMainFrame::OnSetModified) + ON_MESSAGE(WM_DPICHANGED, &CMainFrame::OnDPIChanged) + + ON_COMMAND(ID_VIEW_OPTIONS, &CMainFrame::OnViewOptions) + ON_COMMAND(ID_PLUGIN_SETUP, &CMainFrame::OnPluginManager) + ON_COMMAND(ID_CLIPBOARD_MANAGER, &CMainFrame::OnClipboardManager) + //ON_COMMAND(ID_HELP, &CMDIFrameWnd::OnHelp) + + ON_COMMAND(ID_REPORT_BUG, &CMainFrame::OnReportBug) + ON_COMMAND(ID_NEXTOCTAVE, &CMainFrame::OnNextOctave) + ON_COMMAND(ID_PREVOCTAVE, &CMainFrame::OnPrevOctave) + ON_COMMAND(ID_ADD_SOUNDBANK, &CMainFrame::OnAddDlsBank) + ON_COMMAND(ID_IMPORT_MIDILIB, &CMainFrame::OnImportMidiLib) + ON_COMMAND(ID_MIDI_RECORD, &CMainFrame::OnMidiRecord) + ON_COMMAND(ID_PANIC, &CMainFrame::OnPanic) + ON_COMMAND(ID_PLAYER_PAUSE, &CMainFrame::OnPlayerPause) + + ON_COMMAND_EX(IDD_TREEVIEW, &CMainFrame::OnBarCheck) + ON_COMMAND_EX(ID_NETLINK_MODPLUG, &CMainFrame::OnInternetLink) + ON_COMMAND_EX(ID_NETLINK_TOP_PICKS, &CMainFrame::OnInternetLink) + + ON_MESSAGE(WM_MOD_UPDATEPOSITION, &CMainFrame::OnUpdatePosition) + ON_MESSAGE(WM_MOD_INVALIDATEPATTERNS, &CMainFrame::OnInvalidatePatterns) + ON_MESSAGE(WM_MOD_KEYCOMMAND, &CMainFrame::OnCustomKeyMsg) + ON_MESSAGE(WM_MOD_MIDIMAPPING, &CMainFrame::OnViewMIDIMapping) + ON_MESSAGE(WM_MOD_UPDATEVIEWS, &CMainFrame::OnUpdateViews) + ON_MESSAGE(WM_MOD_SETMODIFIED, &CMainFrame::OnSetModified) #if defined(MPT_ENABLE_UPDATE) - ON_MESSAGE(WM_MOD_UPDATENOTIFY, &CMainFrame::OnToolbarUpdateIndicatorClick) + ON_MESSAGE(WM_MOD_UPDATENOTIFY, &CMainFrame::OnToolbarUpdateIndicatorClick) #endif // MPT_ENABLE_UPDATE - ON_COMMAND(ID_INTERNETUPDATE, &CMainFrame::OnInternetUpdate) - ON_COMMAND(ID_UPDATE_AVAILABLE, &CMainFrame::OnUpdateAvailable) - ON_COMMAND(ID_HELP_SHOWSETTINGSFOLDER, &CMainFrame::OnShowSettingsFolder) + ON_COMMAND(ID_INTERNETUPDATE, &CMainFrame::OnInternetUpdate) + ON_COMMAND(ID_UPDATE_AVAILABLE, &CMainFrame::OnUpdateAvailable) #if defined(MPT_ENABLE_UPDATE) ON_MESSAGE(MPT_WM_APP_UPDATECHECK_START, &CMainFrame::OnUpdateCheckStart) ON_MESSAGE(MPT_WM_APP_UPDATECHECK_PROGRESS, &CMainFrame::OnUpdateCheckProgress) @@ -132,6 +132,7 @@ ON_MESSAGE(MPT_WM_APP_UPDATECHECK_FAILURE, &CMainFrame::OnUpdateCheckFailure) ON_MESSAGE(MPT_WM_APP_UPDATECHECK_SUCCESS, &CMainFrame::OnUpdateCheckSuccess) #endif // MPT_ENABLE_UPDATE + ON_COMMAND(ID_HELP_SHOWSETTINGSFOLDER, &CMainFrame::OnShowSettingsFolder) ON_COMMAND(ID_HELPSHOW, &CMainFrame::OnHelp) ON_COMMAND(ID_MAINBAR_SHOW_OCTAVE, &CMainFrame::OnToggleMainBarShowOctave) ON_COMMAND(ID_MAINBAR_SHOW_TEMPO, &CMainFrame::OnToggleMainBarShowTempo) @@ -142,18 +143,23 @@ ON_COMMAND(ID_TREEVIEW_ON_LEFT, &CMainFrame::OnToggleTreeViewOnLeft) #ifdef MPT_ENABLE_PLAYBACK_TEST_MENU - ON_COMMAND(ID_CREATE_MIXERDUMP, &CMainFrame::OnCreateMixerDump) - ON_COMMAND(ID_VERIFY_MIXERDUMP, &CMainFrame::OnVerifyMixerDump) + ON_COMMAND(ID_CREATE_MIXERDUMP, &CMainFrame::OnCreateMixerDump) + ON_COMMAND(ID_VERIFY_MIXERDUMP, &CMainFrame::OnVerifyMixerDump) ON_COMMAND(ID_CONVERT_MIXERDUMP, &CMainFrame::OnConvertMixerDumpToText) #endif // ENABLE_PLAYBACK_TEST_MENU + ON_COMMAND_RANGE(ID_FILE_OPENTEMPLATE, ID_FILE_OPENTEMPLATE_LASTINRANGE, &CMainFrame::OnOpenTemplateModule) + ON_COMMAND_RANGE(ID_EXAMPLE_MODULES, ID_EXAMPLE_MODULES_LASTINRANGE, &CMainFrame::OnExampleSong) ON_COMMAND_RANGE(ID_MRU_LIST_FIRST, ID_MRU_LIST_LAST, &CMainFrame::OnOpenMRUItem) - ON_UPDATE_COMMAND_UI(ID_MRU_LIST_FIRST, &CMainFrame::OnUpdateMRUItem) + + ON_UPDATE_COMMAND_UI(ID_MRU_LIST_FIRST, &CMainFrame::OnUpdateMRUItem) + ON_UPDATE_COMMAND_UI(ID_MIDI_RECORD, &CMainFrame::OnUpdateMidiRecord) + ON_UPDATE_COMMAND_UI(ID_INDICATOR_TIME, &CMainFrame::OnUpdateTime) + ON_UPDATE_COMMAND_UI(ID_INDICATOR_USER, &CMainFrame::OnUpdateUser) + ON_UPDATE_COMMAND_UI(ID_INDICATOR_INFO, &CMainFrame::OnUpdateInfo) + ON_UPDATE_COMMAND_UI(ID_INDICATOR_XINFO, &CMainFrame::OnUpdateXInfo) + ON_UPDATE_COMMAND_UI(IDD_TREEVIEW, &CMainFrame::OnUpdateControlBarMenu) //}}AFX_MSG_MAP - ON_WM_MOUSEWHEEL() - ON_WM_SHOWWINDOW() - ON_WM_ACTIVATEAPP() - ON_MESSAGE(WM_DPICHANGED, &CMainFrame::OnDPIChanged) END_MESSAGE_MAP() // Globals @@ -567,6 +573,15 @@ } +void CMainFrame::OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized) +{ + CMDIFrameWnd::OnActivate(nState, pWndOther, bMinimized); + // Avoid keyboard focus being trapped on MDI client area + if(m_quickStartDlg && m_quickStartDlg->m_hWnd && nState != WA_INACTIVE && ::GetFocus() == m_hWndMDIClient) + m_quickStartDlg->SetFocus(); +} + + LRESULT CALLBACK CMainFrame::FocusChangeProc(int code, WPARAM wParam, LPARAM lParam) { // Hook to keep track of last focussed GUI item. This solves various focus issues when switching between @@ -3132,7 +3147,7 @@ mpt::PathString fileName; while(scanner.Next(fileName)) { - paths.push_back(fileName); + paths.push_back(std::move(fileName)); } } DWORD stringCompareFlags = NORM_IGNORECASE | NORM_IGNOREWIDTH; Modified: trunk/OpenMPT/mptrack/Mainfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h Fri Nov 22 23:55:56 2024 (r22262) +++ trunk/OpenMPT/mptrack/Mainfrm.h Sat Nov 23 00:25:11 2024 (r22263) @@ -451,6 +451,7 @@ afx_msg void OnDropFiles(HDROP hDropInfo); afx_msg BOOL OnQueryEndSession(); afx_msg void OnActivateApp(BOOL active, DWORD threadID); + afx_msg void OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized); afx_msg void OnToggleMainBarShowOctave(); afx_msg void OnToggleMainBarShowTempo(); |