From: <sv...@op...> - 2024-12-01 01:12:23
|
Author: sagamusix Date: Sun Dec 1 02:12:11 2024 New Revision: 22373 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22373 Log: Merged revision(s) 22248-22249, 22254 from trunk/OpenMPT: [Mod] Tree view: Explicitly avoid opening an empty path name when choosing "Open in Explorer". It doesn't do anything, but still better to explicitly document the possibility of the path being empty. ........ [Mod] Autosave: Don't use relative paths for external samples when autosaving to a user-specified folder. Prerequisite for https://bugs.openmpt.org/view.php?id=1837 ........ [Imp] Channel Manager Dialog: Add tooltips. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/common/mptPathString.cpp branches/OpenMPT-1.31/mptrack/AutoSaver.cpp branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.h branches/OpenMPT-1.31/mptrack/View_tre.cpp branches/OpenMPT-1.31/test/test.cpp Modified: branches/OpenMPT-1.31/common/mptPathString.cpp ============================================================================== --- branches/OpenMPT-1.31/common/mptPathString.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/common/mptPathString.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -55,7 +55,7 @@ using namespace path_literals; using char_type = RawPathString::value_type; mpt::PathString result = path; - if(path.empty()) + if(path.empty() || relativeTo.empty()) { return result; } @@ -79,7 +79,7 @@ using namespace path_literals; using char_type = RawPathString::value_type; mpt::PathString result = path; - if(path.empty()) + if(path.empty() || relativeTo.empty()) { return result; } Modified: branches/OpenMPT-1.31/mptrack/AutoSaver.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/AutoSaver.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/mptrack/AutoSaver.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -141,7 +141,7 @@ { mpt::PathString name = GetBasePath(modDoc, true) + GetBaseName(modDoc); const CString timeStamp = CTime::GetCurrentTime().Format(_T(".AutoSave.%Y%m%d.%H%M%S.")); - name += mpt::PathString::FromCString(timeStamp); //append backtup tag + timestamp + name += mpt::PathString::FromCString(timeStamp); // Append backtup tag + timestamp name += mpt::PathString::FromUnicode(modDoc.GetSoundFile().GetModSpecifications().GetFileExtension()); return name; } @@ -167,8 +167,8 @@ case MOD_TYPE_MOD: success = sndFile.SaveMod(f); break; case MOD_TYPE_S3M: success = sndFile.SaveS3M(f); break; case MOD_TYPE_XM: success = sndFile.SaveXM(f); break; - case MOD_TYPE_IT: success = sndFile.SaveIT(f, fileName); break; - case MOD_TYPE_MPT: success = sndFile.SaveIT(f, fileName); break; + case MOD_TYPE_IT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break; + case MOD_TYPE_MPT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break; } } Modified: branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -29,23 +29,25 @@ ON_WM_MOUSEMOVE() ON_WM_LBUTTONUP() ON_WM_LBUTTONDOWN() + ON_WM_LBUTTONDBLCLK() ON_WM_RBUTTONUP() ON_WM_RBUTTONDOWN() + ON_WM_RBUTTONDBLCLK() ON_WM_MBUTTONDOWN() ON_WM_CLOSE() - ON_COMMAND(IDC_BUTTON1, &CChannelManagerDlg::OnApply) - ON_COMMAND(IDC_BUTTON2, &CChannelManagerDlg::OnClose) - ON_COMMAND(IDC_BUTTON3, &CChannelManagerDlg::OnSelectAll) - ON_COMMAND(IDC_BUTTON4, &CChannelManagerDlg::OnInvert) - ON_COMMAND(IDC_BUTTON5, &CChannelManagerDlg::OnAction1) - ON_COMMAND(IDC_BUTTON6, &CChannelManagerDlg::OnAction2) - ON_COMMAND(IDC_BUTTON7, &CChannelManagerDlg::OnStore) - ON_COMMAND(IDC_BUTTON8, &CChannelManagerDlg::OnRestore) - ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CChannelManagerDlg::OnTabSelchange) - - ON_WM_LBUTTONDBLCLK() - ON_WM_RBUTTONDBLCLK() + ON_COMMAND(IDC_BUTTON1, &CChannelManagerDlg::OnApply) + ON_COMMAND(IDC_BUTTON2, &CChannelManagerDlg::OnClose) + ON_COMMAND(IDC_BUTTON3, &CChannelManagerDlg::OnSelectAll) + ON_COMMAND(IDC_BUTTON4, &CChannelManagerDlg::OnInvert) + ON_COMMAND(IDC_BUTTON5, &CChannelManagerDlg::OnAction1) + ON_COMMAND(IDC_BUTTON6, &CChannelManagerDlg::OnAction2) + ON_COMMAND(IDC_BUTTON7, &CChannelManagerDlg::OnStore) + ON_COMMAND(IDC_BUTTON8, &CChannelManagerDlg::OnRestore) + + ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CChannelManagerDlg::OnTabSelchange) + ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CChannelManagerDlg::OnToolTipText) + END_MESSAGE_MAP() CChannelManagerDlg * CChannelManagerDlg::sharedInstance_ = nullptr; @@ -166,10 +168,67 @@ m_buttonHeight = MulDiv(CM_BT_HEIGHT, Util::GetDPIy(m_hWnd), 96); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON1), SW_HIDE); + EnableToolTips(); return TRUE; } +INT_PTR CChannelManagerDlg::OnToolHitTest(CPoint point, TOOLINFO *pTI) const +{ + CRect rect; + pTI->hwnd = m_hWnd; + pTI->uId = ButtonHit(point, &rect); + pTI->rect = rect; + pTI->lpszText = LPSTR_TEXTCALLBACK; + if(pTI->uId == CHANNELINDEX_INVALID) + return -1; + return pTI->uId; +} + + +BOOL CChannelManagerDlg::OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *) +{ + TOOLTIPTEXT *pTTT = reinterpret_cast<TOOLTIPTEXT *>(pNMHDR); + if((pTTT->uFlags & TTF_IDISHWND) || !m_ModDoc || pNMHDR->idFrom >= m_states.size()) + return FALSE; + + CString text; + const CHANNELINDEX chn = m_states[pNMHDR->idFrom].sourceChn; + const auto &chnSettings = m_ModDoc->GetSoundFile().ChnSettings[chn]; + if(!chnSettings.szName.empty()) + text = MPT_CFORMAT("{}: {}")(chn + 1, mpt::ToWin(m_ModDoc->GetSoundFile().GetCharsetInternal(), chnSettings.szName)); + else + text = MPT_CFORMAT("Channel {}")(chn + 1); + + switch(m_currentTab) + { + case kSoloMute: + text += chnSettings.dwFlags[CHN_MUTE] ? _T(" (Muted)") : _T(" (Unmuted)"); + break; + case kRecordSelect: + switch(m_ModDoc->GetChannelRecordGroup(chn)) + { + case RecordGroup::NoGroup: text += _T(" (No Record Group)"); break; + case RecordGroup::Group1: text += _T(" (Record Group 1)"); break; + case RecordGroup::Group2: text += _T(" (Record Group 2)"); break; + } + break; + case kPluginState: + text += chnSettings.dwFlags[CHN_NOFX] ? _T(" (Plugins Bypassed)") : _T(" (Plugins Enabled)"); + break; + case kReorderRemove: + if(m_states[pNMHDR->idFrom].removed) + text += _T(" (Marked for Removal)"); + break; + case kNumTabs: + MPT_ASSERT_NOTREACHED(); + break; + } + mpt::String::WriteCStringBuf(pTTT->szText) = text; + return TRUE; +} + + void CChannelManagerDlg::OnApply() { if(!m_ModDoc) return; Modified: branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.h ============================================================================== --- branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.h Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/mptrack/ChannelManagerDlg.h Sun Dec 1 02:12:11 2024 (r22373) @@ -88,8 +88,10 @@ //{{AFX_VIRTUAL(CChannelManagerDlg) BOOL OnInitDialog() override; + INT_PTR OnToolHitTest(CPoint point, TOOLINFO *pTI) const override; //}}AFX_VIRTUAL //{{AFX_MSG(CChannelManagerDlg) + afx_msg BOOL OnToolTipText(UINT, NMHDR *pNMHDR, LRESULT *); afx_msg void OnApply(); afx_msg void OnClose(); afx_msg void OnSelectAll(); Modified: branches/OpenMPT-1.31/mptrack/View_tre.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/View_tre.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/mptrack/View_tre.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -1792,7 +1792,8 @@ switch(modItem.type) { case MODITEM_HDR_SONG: - CTrackApp::OpenDirectory(GetDocumentFromItem(hItem)->GetPathNameMpt()); + if(const auto pathName = GetDocumentFromItem(hItem)->GetPathNameMpt(); !pathName.empty()) + CTrackApp::OpenDirectory(pathName); break; case MODITEM_INSLIB_SONG: theApp.OpenDocumentFile(InsLibGetFullPath(hItem).ToCString()); Modified: branches/OpenMPT-1.31/test/test.cpp ============================================================================== --- branches/OpenMPT-1.31/test/test.cpp Sun Dec 1 01:51:15 2024 (r22372) +++ branches/OpenMPT-1.31/test/test.cpp Sun Dec 1 02:12:11 2024 (r22373) @@ -2405,6 +2405,8 @@ VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\foo"), exePath), P_("C:\\foo")); VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file")); VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file")); + VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT")); + VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT")); #endif #ifdef MODPLUG_TRACKER |