You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
|
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(6) |
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(4) |
2009 |
Jan
(9) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(6) |
Jun
(18) |
Jul
(33) |
Aug
(39) |
Sep
(33) |
Oct
(24) |
Nov
(23) |
Dec
(22) |
2010 |
Jan
(29) |
Feb
(32) |
Mar
(51) |
Apr
(17) |
May
(31) |
Jun
(21) |
Jul
(32) |
Aug
(28) |
Sep
(35) |
Oct
(27) |
Nov
(11) |
Dec
(13) |
2011 |
Jan
(14) |
Feb
(13) |
Mar
(27) |
Apr
(27) |
May
(28) |
Jun
(20) |
Jul
(43) |
Aug
(52) |
Sep
(66) |
Oct
(61) |
Nov
(11) |
Dec
(8) |
2012 |
Jan
(20) |
Feb
(30) |
Mar
(38) |
Apr
(21) |
May
(33) |
Jun
(21) |
Jul
(25) |
Aug
(9) |
Sep
(24) |
Oct
(42) |
Nov
(27) |
Dec
(41) |
2013 |
Jan
(20) |
Feb
(35) |
Mar
(156) |
Apr
(298) |
May
(258) |
Jun
(201) |
Jul
(105) |
Aug
(60) |
Sep
(193) |
Oct
(245) |
Nov
(280) |
Dec
(194) |
2014 |
Jan
(63) |
Feb
(202) |
Mar
(200) |
Apr
(23) |
May
(53) |
Jun
(105) |
Jul
(18) |
Aug
(26) |
Sep
(110) |
Oct
(187) |
Nov
(97) |
Dec
(74) |
2015 |
Jan
(45) |
Feb
(55) |
Mar
(116) |
Apr
(116) |
May
(193) |
Jun
(164) |
Jul
(50) |
Aug
(111) |
Sep
(98) |
Oct
(71) |
Nov
(103) |
Dec
(63) |
2016 |
Jan
(33) |
Feb
(101) |
Mar
(182) |
Apr
(139) |
May
(140) |
Jun
(103) |
Jul
(165) |
Aug
(286) |
Sep
(208) |
Oct
(127) |
Nov
(97) |
Dec
(54) |
2017 |
Jan
(64) |
Feb
(335) |
Mar
(202) |
Apr
(212) |
May
(139) |
Jun
(127) |
Jul
(294) |
Aug
(154) |
Sep
(170) |
Oct
(152) |
Nov
(156) |
Dec
(62) |
2018 |
Jan
(168) |
Feb
(237) |
Mar
(196) |
Apr
(174) |
May
(174) |
Jun
(161) |
Jul
(127) |
Aug
(88) |
Sep
(149) |
Oct
(66) |
Nov
(52) |
Dec
(135) |
2019 |
Jan
(146) |
Feb
(126) |
Mar
(104) |
Apr
(58) |
May
(60) |
Jun
(28) |
Jul
(197) |
Aug
(129) |
Sep
(141) |
Oct
(148) |
Nov
(63) |
Dec
(100) |
2020 |
Jan
(74) |
Feb
(37) |
Mar
(59) |
Apr
(154) |
May
(194) |
Jun
(133) |
Jul
(313) |
Aug
(197) |
Sep
(49) |
Oct
(162) |
Nov
(143) |
Dec
(57) |
2021 |
Jan
(120) |
Feb
(107) |
Mar
(314) |
Apr
(157) |
May
(524) |
Jun
(169) |
Jul
(72) |
Aug
(133) |
Sep
(135) |
Oct
(146) |
Nov
(198) |
Dec
(325) |
2022 |
Jan
(409) |
Feb
(249) |
Mar
(138) |
Apr
(95) |
May
(102) |
Jun
(221) |
Jul
(66) |
Aug
(120) |
Sep
(192) |
Oct
(131) |
Nov
(53) |
Dec
(171) |
2023 |
Jan
(357) |
Feb
(82) |
Mar
(168) |
Apr
(218) |
May
(196) |
Jun
(86) |
Jul
(115) |
Aug
(49) |
Sep
(190) |
Oct
(102) |
Nov
(45) |
Dec
(76) |
2024 |
Jan
(86) |
Feb
(50) |
Mar
(324) |
Apr
(209) |
May
(197) |
Jun
(232) |
Jul
(194) |
Aug
(247) |
Sep
(219) |
Oct
(266) |
Nov
(328) |
Dec
(304) |
2025 |
Jan
(191) |
Feb
(115) |
Mar
(137) |
Apr
(32) |
May
(126) |
Jun
(403) |
Jul
(202) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-11-11 18:43:41
|
Author: sagamusix Date: Mon Nov 11 19:43:27 2024 New Revision: 22156 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22156 Log: [Fix] Correctly update pattern display after manually entering new Rows Per Beat value in main toolbar. [Fix] Scale saved plugin manager dialog coordinates correclty. Modified: trunk/OpenMPT/mptrack/ColorConfigDlg.cpp trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/SelectPluginDialog.cpp Modified: trunk/OpenMPT/mptrack/ColorConfigDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ColorConfigDlg.cpp Mon Nov 11 09:14:17 2024 (r22155) +++ trunk/OpenMPT/mptrack/ColorConfigDlg.cpp Mon Nov 11 19:43:27 2024 (r22156) @@ -37,7 +37,7 @@ HighDPISupport::DPIAwarenessBypass bypass; HDC dc = ::GetDC(nullptr); uint32 dpi = ::GetDeviceCaps(dc, LOGPIXELSX); - ::ReleaseDC(m_hWnd, dc); + ::ReleaseDC(nullptr, dc); m_cf.lpLogFont->lfHeight = -MulDiv(m_cf.lpLogFont->lfHeight, dpi, 720); return CFontDialog::DoModal(); } Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Mon Nov 11 09:14:17 2024 (r22155) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Mon Nov 11 19:43:27 2024 (r22156) @@ -659,9 +659,6 @@ SetRowsPerBeat(m_currentRowsPerBeat + 1); } m_SpinRowsPerBeat.SetPos(0); - - // Update pattern editor - pMainFrm->PostMessage(WM_MOD_INVALIDATEPATTERNS, HINT_MPTOPTIONS); } if((n = m_SpinGlobalVolume.GetPos32()) != 0) { @@ -798,7 +795,7 @@ } -void CMainToolBar::SetRowsPerBeat(ROWINDEX nNewRPB) +void CMainToolBar::SetRowsPerBeat(ROWINDEX newRPB) { CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); if(pMainFrm == nullptr) @@ -808,30 +805,42 @@ if(pModDoc == nullptr || pSndFile == nullptr) return; - pSndFile->m_PlayState.m_nCurrentRowsPerBeat = nNewRPB; - PATTERNINDEX nPat = pSndFile->GetCurrentPattern(); - if(pSndFile->Patterns[nPat].GetOverrideSignature()) + CriticalSection cs; + PATTERNINDEX pat = pSndFile->GetCurrentPattern(); + bool modified = false; + if(pSndFile->Patterns.IsValidPat(pat) && pSndFile->Patterns[pat].GetOverrideSignature()) { - if(nNewRPB <= pSndFile->Patterns[nPat].GetRowsPerMeasure()) + CPattern &pattern = pSndFile->Patterns[pat]; + if(newRPB <= pattern.GetRowsPerMeasure()) { - pSndFile->Patterns[nPat].SetSignature(nNewRPB, pSndFile->Patterns[nPat].GetRowsPerMeasure()); - TempoSwing swing = pSndFile->Patterns[nPat].GetTempoSwing(); + pattern.SetSignature(newRPB, pattern.GetRowsPerMeasure()); + TempoSwing swing = pattern.GetTempoSwing(); if(!swing.empty()) { - swing.resize(nNewRPB); - pSndFile->Patterns[nPat].SetTempoSwing(swing); + swing.resize(newRPB); + pattern.SetTempoSwing(swing); } - pModDoc->SetModified(); + modified = true; } } else { - if(nNewRPB <= pSndFile->m_nDefaultRowsPerMeasure) + if(newRPB <= pSndFile->m_nDefaultRowsPerMeasure) { - pSndFile->m_nDefaultRowsPerBeat = nNewRPB; - if(!pSndFile->m_tempoSwing.empty()) pSndFile->m_tempoSwing.resize(nNewRPB); - pModDoc->SetModified(); + pSndFile->m_nDefaultRowsPerBeat = newRPB; + if(!pSndFile->m_tempoSwing.empty()) + pSndFile->m_tempoSwing.resize(newRPB); + modified = true; } } + + // Update pattern editor + if(modified) + { + pSndFile->m_PlayState.m_nCurrentRowsPerBeat = newRPB; + cs.Leave(); + pModDoc->SetModified(); + pModDoc->UpdateAllViews(PatternHint().Data()); + } } Modified: trunk/OpenMPT/mptrack/SelectPluginDialog.cpp ============================================================================== --- trunk/OpenMPT/mptrack/SelectPluginDialog.cpp Mon Nov 11 09:14:17 2024 (r22155) +++ trunk/OpenMPT/mptrack/SelectPluginDialog.cpp Mon Nov 11 19:43:27 2024 (r22156) @@ -264,10 +264,10 @@ GetWindowPlacement(&wnd); CRect rect = wnd.rcNormalPosition; ::MapWindowPoints(HWND_DESKTOP, GetParent()->m_hWnd, (CPoint *)&rect, 2); - TrackerSettings::Instance().gnPlugWindowX = HighDPISupport::ScalePixels(rect.left, m_hWnd); - TrackerSettings::Instance().gnPlugWindowY = HighDPISupport::ScalePixels(rect.top, m_hWnd); - TrackerSettings::Instance().gnPlugWindowWidth = HighDPISupport::ScalePixels(rect.Width(), m_hWnd); - TrackerSettings::Instance().gnPlugWindowHeight = HighDPISupport::ScalePixels(rect.Height(), m_hWnd); + TrackerSettings::Instance().gnPlugWindowX = HighDPISupport::ScalePixelsInv(rect.left, m_hWnd); + TrackerSettings::Instance().gnPlugWindowY = HighDPISupport::ScalePixelsInv(rect.top, m_hWnd); + TrackerSettings::Instance().gnPlugWindowWidth = HighDPISupport::ScalePixelsInv(rect.Width(), m_hWnd); + TrackerSettings::Instance().gnPlugWindowHeight = HighDPISupport::ScalePixelsInv(rect.Height(), m_hWnd); } |
From: <sv...@op...> - 2024-11-11 08:14:29
|
Author: sagamusix Date: Mon Nov 11 09:14:17 2024 New Revision: 22155 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22155 Log: [Fix] Fix ANSI builds. CTaskDialog is only available on UNICODE. Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 23:19:43 2024 (r22154) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Mon Nov 11 09:14:17 2024 (r22155) @@ -25,7 +25,7 @@ #include "../soundlib/mod_specifications.h" #include "../soundlib/plugins/PlugInterface.h" -#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) +#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) && defined(UNICODE) #include <afxtaskdialog.h> #endif @@ -1581,7 +1581,7 @@ if((TrackerSettings::Instance().gnMsgBoxVisiblityFlags & msg.mask) == 0) return; -#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) +#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) && defined(UNICODE) if(CTaskDialog::IsSupported() && !(mpt::OS::Windows::IsWine() && theApp.GetWineVersion()->Version().IsBefore(mpt::OS::Wine::Version(3, 13, 0)))) { |
From: <sv...@op...> - 2024-11-10 22:19:55
|
Author: sagamusix Date: Sun Nov 10 23:19:43 2024 New Revision: 22154 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22154 Log: [Fix] The Windows font selection dialog is not compatible with mixed-DPI setups. Temporarily disable mixed-DPI-awareness while this dialog is open. Modified: trunk/OpenMPT/mptrack/ColorConfigDlg.cpp trunk/OpenMPT/mptrack/HighDPISupport.cpp trunk/OpenMPT/mptrack/HighDPISupport.h Modified: trunk/OpenMPT/mptrack/ColorConfigDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ColorConfigDlg.cpp Sun Nov 10 22:35:58 2024 (r22153) +++ trunk/OpenMPT/mptrack/ColorConfigDlg.cpp Sun Nov 10 23:19:43 2024 (r22154) @@ -24,6 +24,26 @@ OPENMPT_NAMESPACE_BEGIN + +class CFontDialogEx : public CFontDialog +{ + using CFontDialog::CFontDialog; + +public: + INT_PTR DoModal() override + { + // CHOOSEFONT is not compatible with mixed-DPI. Temporarily disable mixed-DPI awareness just for this dialog. + // https://blogs.windows.com/windowsdeveloper/2016/10/24/high-dpi-scaling-improvements-for-desktop-applications-and-mixed-mode-dpi-scaling-in-the-windows-10-anniversary-update/ + HighDPISupport::DPIAwarenessBypass bypass; + HDC dc = ::GetDC(nullptr); + uint32 dpi = ::GetDeviceCaps(dc, LOGPIXELSX); + ::ReleaseDC(m_hWnd, dc); + m_cf.lpLogFont->lfHeight = -MulDiv(m_cf.lpLogFont->lfHeight, dpi, 720); + return CFontDialog::DoModal(); + } +}; + + static constexpr struct ColorDescriptions { const TCHAR *name; @@ -266,11 +286,11 @@ MemsetZero(lf); const int32 size = patternFont.size < 10 ? 120 : patternFont.size; // Point size to pixels - lf.lfHeight = -MulDiv(size, HighDPISupport::GetDpiForWindow(m_hWnd), 720); + lf.lfHeight = size; lf.lfWeight = patternFont.flags[FontSetting::Bold] ? FW_BOLD : FW_NORMAL; lf.lfItalic = patternFont.flags[FontSetting::Italic] ? TRUE : FALSE; mpt::String::WriteWinBuf(lf.lfFaceName) = mpt::ToWin(patternFont.name); - CFontDialog dlg(&lf); + CFontDialogEx dlg(&lf); dlg.m_cf.hwndOwner = m_hWnd; if(patternFont.name != PATTERNFONT_SMALL && patternFont.name != PATTERNFONT_LARGE) { @@ -301,11 +321,11 @@ LOGFONT lf; MemsetZero(lf); // Point size to pixels - lf.lfHeight = -MulDiv(commentFont.size, HighDPISupport::GetDpiForWindow(m_hWnd), 720); + lf.lfHeight = commentFont.size; lf.lfWeight = commentFont.flags[FontSetting::Bold] ? FW_BOLD : FW_NORMAL; lf.lfItalic = commentFont.flags[FontSetting::Italic] ? TRUE : FALSE; mpt::String::WriteWinBuf(lf.lfFaceName) = mpt::ToWin(commentFont.name); - CFontDialog dlg(&lf); + CFontDialogEx dlg(&lf); dlg.m_cf.hwndOwner = m_hWnd; dlg.m_cf.lpLogFont = &lf; dlg.m_cf.Flags &= ~CF_EFFECTS; Modified: trunk/OpenMPT/mptrack/HighDPISupport.cpp ============================================================================== --- trunk/OpenMPT/mptrack/HighDPISupport.cpp Sun Nov 10 22:35:58 2024 (r22153) +++ trunk/OpenMPT/mptrack/HighDPISupport.cpp Sun Nov 10 23:19:43 2024 (r22154) @@ -21,6 +21,7 @@ HighDPISupportData() : m_user32{mpt::LibraryPath::System(P_("user32"))} { + m_user32.Bind(m_SetThreadDpiAwarenessContext, "SetThreadDpiAwarenessContext"); m_user32.Bind(m_GetDpiForWindow, "GetDpiForWindow"); m_user32.Bind(m_GetSystemMetricsForDpi, "GetSystemMetricsForDpi"); m_user32.Bind(m_SystemParametersInfoForDpi, "SystemParametersInfoForDpi"); @@ -28,6 +29,9 @@ mpt::Library m_user32; + using PSETTHREADDPIAWARENESSCONTEXT = HANDLE(WINAPI *)(HANDLE); + PSETTHREADDPIAWARENESSCONTEXT m_SetThreadDpiAwarenessContext = nullptr; + using PGETDPIFORWINDOW = UINT(WINAPI *)(HWND); PGETDPIFORWINDOW m_GetDpiForWindow = nullptr; @@ -39,6 +43,16 @@ }; +enum MPT_DPI_AWARENESS_CONTEXT +{ + MPT_DPI_AWARENESS_CONTEXT_UNAWARE = -1, + MPT_DPI_AWARENESS_CONTEXT_SYSTEM_AWARE = -2, + MPT_DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = -3, + MPT_DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 = -4, // Windows 10 version 1703 and newer + MPT_DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED = -5, // Windows 10 version 1809 update and newer +}; + + static HighDPISupportData *GetHighDPISupportData() { static std::unique_ptr<HighDPISupportData> highDPISupportData; @@ -56,14 +70,6 @@ // For Windows 10, Creators Update (1703) and newer if(instance->m_user32.IsValid()) { - enum MPT_DPI_AWARENESS_CONTEXT - { - MPT_DPI_AWARENESS_CONTEXT_UNAWARE = -1, - MPT_DPI_AWARENESS_CONTEXT_SYSTEM_AWARE = -2, - MPT_DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = -3, - MPT_DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 = -4, // Windows 10 version 1703 and newer - MPT_DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED = -5, // Windows 10 version 1809 update and newer - }; using PSETPROCESSDPIAWARENESSCONTEXT = BOOL(WINAPI *)(HANDLE); PSETPROCESSDPIAWARENESSCONTEXT SetProcessDpiAwarenessContext = nullptr; if(instance->m_user32.Bind(SetProcessDpiAwarenessContext, "SetProcessDpiAwarenessContext")) @@ -158,4 +164,18 @@ } +HighDPISupport::DPIAwarenessBypass::DPIAwarenessBypass() +{ + if(auto instance = GetHighDPISupportData(); instance->m_SetThreadDpiAwarenessContext) + m_previous = instance->m_SetThreadDpiAwarenessContext(HANDLE(MPT_DPI_AWARENESS_CONTEXT_SYSTEM_AWARE)); +} + + +HighDPISupport::DPIAwarenessBypass::~DPIAwarenessBypass() +{ + if(auto instance = GetHighDPISupportData(); instance->m_SetThreadDpiAwarenessContext) + instance->m_SetThreadDpiAwarenessContext(m_previous); +} + + OPENMPT_NAMESPACE_END Modified: trunk/OpenMPT/mptrack/HighDPISupport.h ============================================================================== --- trunk/OpenMPT/mptrack/HighDPISupport.h Sun Nov 10 22:35:58 2024 (r22153) +++ trunk/OpenMPT/mptrack/HighDPISupport.h Sun Nov 10 23:19:43 2024 (r22154) @@ -54,6 +54,16 @@ { return MulDiv(pixels, 96, HighDPISupport::GetDpiForWindow(hwnd)); } + + class DPIAwarenessBypass + { + public: + DPIAwarenessBypass(); + ~DPIAwarenessBypass(); + + private: + HANDLE m_previous = {}; + }; }; OPENMPT_NAMESPACE_END |
From: <sv...@op...> - 2024-11-10 21:36:10
|
Author: sagamusix Date: Sun Nov 10 22:35:58 2024 New Revision: 22153 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22153 Log: [Ref] Make comments font non-static. Modified: trunk/OpenMPT/mptrack/Ctrl_com.cpp trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainfrm.h Modified: trunk/OpenMPT/mptrack/Ctrl_com.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_com.cpp Sun Nov 10 22:31:50 2024 (r22152) +++ trunk/OpenMPT/mptrack/Ctrl_com.cpp Sun Nov 10 22:35:58 2024 (r22153) @@ -145,7 +145,7 @@ return; LockControls(); - HFONT &hFont = CMainFrame::GetCommentsFont(); + CFont &hFont = CMainFrame::GetMainFrame()->GetCommentsFont(); static FontSetting previousFont; static int previousFontSize = 0; FontSetting font = TrackerSettings::Instance().commentsFont; @@ -155,14 +155,14 @@ { previousFont = font; previousFontSize = fontSize; - DeleteFont(hFont); - hFont = ::CreateFont(fontSize, 0, 0, 0, font.flags[FontSetting::Bold] ? FW_BOLD : FW_NORMAL, + hFont.DeleteObject(); + hFont.CreateFont(fontSize, 0, 0, 0, font.flags[FontSetting::Bold] ? FW_BOLD : FW_NORMAL, font.flags[FontSetting::Italic] ? TRUE :FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FIXED_PITCH | FF_MODERN, mpt::ToCString(font.name)); } - m_EditComments.SendMessage(WM_SETFONT, reinterpret_cast<WPARAM>(hFont)); + m_EditComments.SendMessage(WM_SETFONT, reinterpret_cast<WPARAM>(hFont.m_hObject)); CDC *pDC = m_EditComments.GetDC(); pDC->SelectObject(hFont); TEXTMETRIC tm; Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 22:31:50 2024 (r22152) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 22:35:58 2024 (r22153) @@ -161,7 +161,6 @@ // GDI HICON CMainFrame::m_hIcon = nullptr; CFont CMainFrame::m_hGUIFont; -HFONT CMainFrame::m_hFixedFont = nullptr; HPEN CMainFrame::penDarkGray = nullptr; HPEN CMainFrame::penGray99 = nullptr; HPEN CMainFrame::penHalfDarkGray = nullptr; @@ -404,8 +403,8 @@ m_hGUIFont.DeleteObject(); #define DeleteGDIObject(h) ::DeleteObject(h); h = NULL; DeleteGDIObject(penDarkGray); - DeleteGDIObject(m_hFixedFont); DeleteGDIObject(penGray99); + DeleteGDIObject(penHalfDarkGray); #undef DeleteGDIObject return CMDIFrameWnd::DestroyWindow(); Modified: trunk/OpenMPT/mptrack/Mainfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 22:31:50 2024 (r22152) +++ trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 22:35:58 2024 (r22153) @@ -147,9 +147,9 @@ static HHOOK g_focusHook; // GDI - static HICON m_hIcon; + CFont m_hCommentsFont; static CFont m_hGUIFont; - static HFONT m_hFixedFont; + static HICON m_hIcon; static HPEN penDarkGray, penHalfDarkGray, penGray99; static HCURSOR curDragging, curNoDrop, curArrow, curNoDrop2, curVSplit; static MODPLUGDIB *bmpNotes; @@ -261,12 +261,13 @@ static void UpdateColors(); static HICON GetModIcon() { return m_hIcon; } static HFONT GetGUIFont() { return m_hGUIFont; } - static HFONT &GetCommentsFont() { return m_hFixedFont; } static LRESULT CALLBACK FocusChangeProc(int code, WPARAM wParam, LPARAM lParam); static CInputHandler *m_InputHandler; // Misc functions public: + CFont &GetCommentsFont() { return m_hCommentsFont; } + void SetUserText(LPCTSTR lpszText); void SetInfoText(LPCTSTR lpszText); void SetXInfoText(LPCTSTR lpszText); |
From: <sv...@op...> - 2024-11-10 21:32:02
|
Author: sagamusix Date: Sun Nov 10 22:31:50 2024 New Revision: 22152 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22152 Log: [Fix] Avoid GDI object leaks. Modified: trunk/OpenMPT/mptrack/HighDPISupport.cpp trunk/OpenMPT/mptrack/MainFrm.cpp Modified: trunk/OpenMPT/mptrack/HighDPISupport.cpp ============================================================================== --- trunk/OpenMPT/mptrack/HighDPISupport.cpp Sun Nov 10 22:30:47 2024 (r22151) +++ trunk/OpenMPT/mptrack/HighDPISupport.cpp Sun Nov 10 22:31:50 2024 (r22152) @@ -153,6 +153,7 @@ NONCLIENTMETRICS metrics; metrics.cbSize = sizeof(metrics); HighDPISupport::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(metrics), &metrics, 0, hwnd); + font.DeleteObject(); font.CreateFontIndirect(&metrics.lfMessageFont); } Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 22:30:47 2024 (r22151) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 22:31:50 2024 (r22152) @@ -284,6 +284,17 @@ RecreateImageLists(); + penDarkGray = ::CreatePen(PS_SOLID, 0, GetSysColor(COLOR_BTNSHADOW)); + penGray99 = ::CreatePen(PS_SOLID, 0, RGB(0x99, 0x99, 0x99)); + penHalfDarkGray = ::CreatePen(PS_DOT, 0, GetSysColor(COLOR_BTNSHADOW)); + + // Cursors + curDragging = theApp.LoadCursor(IDC_DRAGGING); + curArrow = theApp.LoadStandardCursor(IDC_ARROW); + curNoDrop = theApp.LoadStandardCursor(IDC_NO); + curNoDrop2 = theApp.LoadCursor(IDC_NODRAG); + curVSplit = theApp.LoadCursor(AFX_IDC_HSPLITBAR); + // Pattern note bitmap bmpNotes = LoadDib(MAKEINTRESOURCE(IDB_PATTERNVIEW)); // Toolbars @@ -350,17 +361,6 @@ ReleaseDC(dc); HighDPISupport::CreateGUIFont(m_hGUIFont, m_hWnd); - - penDarkGray = ::CreatePen(PS_SOLID, 0, GetSysColor(COLOR_BTNSHADOW)); - penGray99 = ::CreatePen(PS_SOLID, 0, RGB(0x99, 0x99, 0x99)); - penHalfDarkGray = ::CreatePen(PS_DOT, 0, GetSysColor(COLOR_BTNSHADOW)); - - // Cursors - curDragging = theApp.LoadCursor(IDC_DRAGGING); - curArrow = theApp.LoadStandardCursor(IDC_ARROW); - curNoDrop = theApp.LoadStandardCursor(IDC_NO); - curNoDrop2 = theApp.LoadCursor(IDC_NODRAG); - curVSplit = theApp.LoadCursor(AFX_IDC_HSPLITBAR); } |
From: <sv...@op...> - 2024-11-10 21:30:59
|
Author: sagamusix Date: Sun Nov 10 22:30:47 2024 New Revision: 22151 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22151 Log: [Ref] Move CMainFrame::UpdateAllViews to CTrackApp. Modified: trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 22:18:18 2024 (r22150) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 22:30:47 2024 (r22151) @@ -1797,14 +1797,14 @@ } -BOOL CMainFrame::ResetSoundCard() +void CMainFrame::ResetSoundCard() { MPT_TRACE_SCOPE(); - return CMainFrame::SetupSoundCard(TrackerSettings::Instance().GetSoundDeviceSettings(TrackerSettings::Instance().GetSoundDeviceIdentifier()), TrackerSettings::Instance().GetSoundDeviceIdentifier(), TrackerSettings::Instance().m_SoundSettingsStopMode, true); + CMainFrame::SetupSoundCard(TrackerSettings::Instance().GetSoundDeviceSettings(TrackerSettings::Instance().GetSoundDeviceIdentifier()), TrackerSettings::Instance().GetSoundDeviceIdentifier(), TrackerSettings::Instance().m_SoundSettingsStopMode, true); } -BOOL CMainFrame::SetupSoundCard(SoundDevice::Settings deviceSettings, SoundDevice::Identifier deviceIdentifier, SoundDeviceStopMode stoppedMode, bool forceReset) +void CMainFrame::SetupSoundCard(SoundDevice::Settings deviceSettings, SoundDevice::Identifier deviceIdentifier, SoundDeviceStopMode stoppedMode, bool forceReset) { MPT_TRACE_SCOPE(); if(forceReset @@ -1852,19 +1852,17 @@ CriticalSection cs; if(GetSoundFilePlaying()) UpdateAudioParameters(*GetSoundFilePlaying(), FALSE); } - return TRUE; } -BOOL CMainFrame::SetupPlayer() +void CMainFrame::SetupPlayer() { CriticalSection cs; if(GetSoundFilePlaying()) UpdateAudioParameters(*GetSoundFilePlaying(), FALSE); - return TRUE; } -BOOL CMainFrame::SetupMiscOptions() +void CMainFrame::SetupMiscOptions() { if (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_MUTECHNMODE) TrackerSettings::Instance().MixerFlags |= SNDMIX_MUTECHNMODE; @@ -1878,8 +1876,7 @@ m_wndToolBar.EnableFlatButtons(TrackerSettings::Instance().m_dwPatternSetup & PATTERN_FLATBUTTONS); UpdateTree(nullptr, UpdateHint().MPTOptions()); - UpdateAllViews(UpdateHint().MPTOptions()); - return true; + theApp.UpdateAllViews(UpdateHint().MPTOptions()); } @@ -1897,19 +1894,6 @@ } -void CMainFrame::UpdateAllViews(UpdateHint hint, CObject *pHint) -{ - CModDocTemplate *pDocTmpl = theApp.GetModDocTemplate(); - if (pDocTmpl) - { - for(auto &doc : *pDocTmpl) - { - doc->UpdateAllViews(nullptr, hint, pHint); - } - } -} - - void CMainFrame::SetUserText(LPCTSTR lpszText) { if (lpszText[0] | m_szUserText[0]) @@ -2372,7 +2356,7 @@ LRESULT CMainFrame::OnInvalidatePatterns(WPARAM, LPARAM) { - UpdateAllViews(UpdateHint().MPTOptions()); + theApp.UpdateAllViews(UpdateHint().MPTOptions()); return TRUE; } Modified: trunk/OpenMPT/mptrack/Mainfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 22:18:18 2024 (r22150) +++ trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 22:30:47 2024 (r22151) @@ -262,7 +262,6 @@ static HICON GetModIcon() { return m_hIcon; } static HFONT GetGUIFont() { return m_hGUIFont; } static HFONT &GetCommentsFont() { return m_hFixedFont; } - static void UpdateAllViews(UpdateHint hint, CObject *pHint=NULL); static LRESULT CALLBACK FocusChangeProc(int code, WPARAM wParam, LPARAM lParam); static CInputHandler *m_InputHandler; @@ -346,10 +345,10 @@ void IdleHandlerSounddevice(); - BOOL ResetSoundCard(); - BOOL SetupSoundCard(SoundDevice::Settings deviceSettings, SoundDevice::Identifier deviceIdentifier, SoundDeviceStopMode stoppedMode, bool forceReset = false); - BOOL SetupMiscOptions(); - BOOL SetupPlayer(); + void ResetSoundCard(); + void SetupSoundCard(SoundDevice::Settings deviceSettings, SoundDevice::Identifier deviceIdentifier, SoundDeviceStopMode stoppedMode, bool forceReset = false); + void SetupMiscOptions(); + void SetupPlayer(); void SetupMidi(DWORD d, UINT n); HWND GetFollowSong() const; Modified: trunk/OpenMPT/mptrack/Moddoc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp Sun Nov 10 22:18:18 2024 (r22150) +++ trunk/OpenMPT/mptrack/Moddoc.cpp Sun Nov 10 22:30:47 2024 (r22151) @@ -2839,7 +2839,7 @@ { TrackerSettings::Instance().gbLoopSong = loop; m_SndFile.SetRepeatCount(loop ? -1 : 0); - CMainFrame::GetMainFrame()->UpdateAllViews(UpdateHint().MPTOptions()); + theApp.UpdateAllViews(UpdateHint().MPTOptions()); } Modified: trunk/OpenMPT/mptrack/Mptrack.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp Sun Nov 10 22:18:18 2024 (r22150) +++ trunk/OpenMPT/mptrack/Mptrack.cpp Sun Nov 10 22:30:47 2024 (r22151) @@ -289,6 +289,18 @@ } +void CTrackApp::UpdateAllViews(UpdateHint hint, CObject *pHint) +{ + if(auto *pDocTmpl = GetModDocTemplate()) + { + for(auto &doc : *pDocTmpl) + { + doc->UpdateAllViews(nullptr, hint, pHint); + } + } +} + + ///////////////////////////////////////////////////////////////////////////// // Command Line options Modified: trunk/OpenMPT/mptrack/Mptrack.h ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h Sun Nov 10 22:18:18 2024 (r22150) +++ trunk/OpenMPT/mptrack/Mptrack.h Sun Nov 10 22:30:47 2024 (r22151) @@ -24,6 +24,7 @@ class CModDoc; class CModDocTemplate; class CVstPluginManager; +struct UpdateHint; namespace SoundDevice { class Manager; @@ -214,6 +215,8 @@ int GetOpenDocumentCount() const; std::vector<CModDoc *> GetOpenDocuments() const; + void UpdateAllViews(UpdateHint hint, CObject *pHint = nullptr); + public: inline mpt::recursive_mutex_with_lock_count &GetGlobalMutexRef() { return m_GlobalMutex; } bool InGuiThread() const { return GetCurrentThreadId() == m_GuiThreadId; } @@ -308,10 +311,9 @@ static CString GetResamplingModeName(ResamplingMode mode, int length, bool addTaps); // Overrides -public: +protected: // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CTrackApp) -public: BOOL InitInstance() override; BOOL InitInstanceEarly(CMPTCommandLineInfo &cmdInfo); BOOL InitInstanceLate(CMPTCommandLineInfo &cmdInfo); @@ -345,7 +347,6 @@ //}}AFX_MSG DECLARE_MESSAGE_MAP() -protected: size_t AddScannedDLSBanks(); void InitializeDXPlugins(); |
From: <sv...@op...> - 2024-11-10 21:18:30
|
Author: sagamusix Date: Sun Nov 10 22:18:18 2024 New Revision: 22150 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22150 Log: [Fix] Tuning ratio map note index text and main tool bar text was not drawn at correct DPI if the tuning window was on a different screen than the main window. Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp trunk/OpenMPT/mptrack/HighDPISupport.cpp trunk/OpenMPT/mptrack/HighDPISupport.h trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/Mainbar.h trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/tuningRatioMapWnd.cpp Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Sun Nov 10 22:18:18 2024 (r22150) @@ -513,10 +513,7 @@ if(!m_font.m_hObject) { - NONCLIENTMETRICS metrics; - metrics.cbSize = sizeof(metrics); - HighDPISupport::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(metrics), &metrics, 0, m_hWnd); - m_font.CreateFontIndirect(&metrics.lfMessageFont); + HighDPISupport::CreateGUIFont(m_font, m_hWnd); } PAINTSTRUCT pDC; Modified: trunk/OpenMPT/mptrack/HighDPISupport.cpp ============================================================================== --- trunk/OpenMPT/mptrack/HighDPISupport.cpp Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/HighDPISupport.cpp Sun Nov 10 22:18:18 2024 (r22150) @@ -148,4 +148,13 @@ } +void HighDPISupport::CreateGUIFont(CFont &font, HWND hwnd) +{ + NONCLIENTMETRICS metrics; + metrics.cbSize = sizeof(metrics); + HighDPISupport::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(metrics), &metrics, 0, hwnd); + font.CreateFontIndirect(&metrics.lfMessageFont); +} + + OPENMPT_NAMESPACE_END Modified: trunk/OpenMPT/mptrack/HighDPISupport.h ============================================================================== --- trunk/OpenMPT/mptrack/HighDPISupport.h Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/HighDPISupport.h Sun Nov 10 22:18:18 2024 (r22150) @@ -41,6 +41,8 @@ BOOL SystemParametersInfo(UINT uiAction, UINT uiParam, void *pvParam, UINT fWinIni, uint32 dpi); BOOL SystemParametersInfo(UINT uiAction, UINT uiParam, void *pvParam, UINT fWinIni, HWND hwnd); + void CreateGUIFont(CFont &font, HWND hwnd); + // Applies DPI scaling factor to some given size MPT_FORCEINLINE int ScalePixels(int pixels, HWND hwnd) { Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 22:18:18 2024 (r22150) @@ -160,7 +160,7 @@ // GDI HICON CMainFrame::m_hIcon = nullptr; -HFONT CMainFrame::m_hGUIFont = nullptr; +CFont CMainFrame::m_hGUIFont; HFONT CMainFrame::m_hFixedFont = nullptr; HPEN CMainFrame::penDarkGray = nullptr; HPEN CMainFrame::penGray99 = nullptr; @@ -349,10 +349,7 @@ m_SampleIcons.Create(IDB_SMPTOOLBAR, 20, 18, SAMPLEIMG_NUMIMAGES, 1, dc, scaling, false); ReleaseDC(dc); - NONCLIENTMETRICS metrics; - metrics.cbSize = sizeof(metrics); - HighDPISupport::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(metrics), &metrics, 0, m_hWnd); - m_hGUIFont = CreateFontIndirect(&metrics.lfMessageFont); + HighDPISupport::CreateGUIFont(m_hGUIFont, m_hWnd); penDarkGray = ::CreatePen(PS_SOLID, 0, GetSysColor(COLOR_BTNSHADOW)); penGray99 = ::CreatePen(PS_SOLID, 0, RGB(0x99, 0x99, 0x99)); @@ -404,9 +401,9 @@ PatternFont::DeleteFontData(); // Kill GDI Objects + m_hGUIFont.DeleteObject(); #define DeleteGDIObject(h) ::DeleteObject(h); h = NULL; DeleteGDIObject(penDarkGray); - DeleteGDIObject(m_hGUIFont); DeleteGDIObject(m_hFixedFont); DeleteGDIObject(penGray99); #undef DeleteGDIObject Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 22:18:18 2024 (r22150) @@ -308,6 +308,7 @@ LRESULT CMainToolBar::OnDPIChangedAfterParent(WPARAM, LPARAM) { auto result = Default(); + m_font.DeleteObject(); UpdateSizes(); RefreshToolbar(); return result; @@ -327,7 +328,9 @@ void CMainToolBar::UpdateSizes() { CDC *dc = GetDC(); - const auto hFont = reinterpret_cast<WPARAM>(CMainFrame::GetGUIFont()); + if(!m_font.m_hObject) + HighDPISupport::CreateGUIFont(m_font, m_hWnd); + const auto hFont = reinterpret_cast<WPARAM>(m_font.m_hObject); const double scaling = HighDPISupport::GetDpiForWindow(m_hWnd) / 96.0; const int imgSize = HighDPISupport::ScalePixels(16, m_hWnd), btnSizeX = HighDPISupport::ScalePixels(23, m_hWnd), btnSizeY = HighDPISupport::ScalePixels(22, m_hWnd); m_ImageList.Create(IDB_MAINBAR, 16, 16, IMGLIST_NUMIMAGES, 1, dc, scaling, false); @@ -352,7 +355,7 @@ {m_EditGlobalVolume, _T("999"), EDITGLOBALVOL_INDEX, IDC_EDIT_GLOBALVOL }, }; - auto oldFont = dc->SelectObject(CMainFrame::GetGUIFont()); + auto oldFont = dc->SelectObject(m_font); const int textPaddingX = HighDPISupport::ScalePixels(10, m_hWnd), textPaddingY = HighDPISupport::ScalePixels(4, m_hWnd), textMinHeight = HighDPISupport::ScalePixels(20, m_hWnd); for(auto &info : TextWnds) { Modified: trunk/OpenMPT/mptrack/Mainbar.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.h Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/Mainbar.h Sun Nov 10 22:18:18 2024 (r22150) @@ -84,6 +84,7 @@ protected: UpdateToolTip m_tooltip; CImageListEx m_ImageList, m_ImageListDisabled; + CFont m_font; CNumberEdit m_EditTempo; CEdit m_EditSpeed, m_EditOctave, m_EditRowsPerBeat, m_EditGlobalVolume; CStatic m_StaticTempo, m_StaticSpeed, m_StaticRowsPerBeat, m_StaticGlobalVolume; Modified: trunk/OpenMPT/mptrack/Mainfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 22:18:18 2024 (r22150) @@ -148,7 +148,8 @@ // GDI static HICON m_hIcon; - static HFONT m_hGUIFont, m_hFixedFont; + static CFont m_hGUIFont; + static HFONT m_hFixedFont; static HPEN penDarkGray, penHalfDarkGray, penGray99; static HCURSOR curDragging, curNoDrop, curArrow, curNoDrop2, curVSplit; static MODPLUGDIB *bmpNotes; @@ -262,7 +263,6 @@ static HFONT GetGUIFont() { return m_hGUIFont; } static HFONT &GetCommentsFont() { return m_hFixedFont; } static void UpdateAllViews(UpdateHint hint, CObject *pHint=NULL); - static LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam); static LRESULT CALLBACK FocusChangeProc(int code, WPARAM wParam, LPARAM lParam); static CInputHandler *m_InputHandler; Modified: trunk/OpenMPT/mptrack/Mptrack.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/Mptrack.cpp Sun Nov 10 22:18:18 2024 (r22150) @@ -1952,7 +1952,7 @@ } template<typename Tchar> -static void DrawButtonRectImpl(HDC hdc, CRect rect, const Tchar *lpszText, bool disabled, bool pushed, DWORD textFlags, uint32 topMargin) +static void DrawButtonRectImpl(HDC hdc, HFONT font, CRect rect, const Tchar *lpszText, bool disabled, bool pushed, DWORD textFlags, uint32 topMargin) { int width = HighDPISupport::ScalePixels(1, WindowFromDC(hdc)); if(width != 1) @@ -1985,25 +1985,36 @@ ::SetTextColor(hdc, GetSysColor(disabled ? COLOR_GRAYTEXT : COLOR_BTNTEXT)); ::SetBkMode(hdc, TRANSPARENT); rect.top += topMargin; - auto oldfont = SelectFont(hdc, CMainFrame::GetGUIFont()); + auto oldFont = SelectFont(hdc, font); DrawTextT(hdc, lpszText, -1, &rect, textFlags | DT_SINGLELINE | DT_NOPREFIX); - SelectFont(hdc, oldfont); + SelectFont(hdc, oldFont); } } void DrawButtonRect(HDC hdc, const RECT *lpRect, LPCSTR lpszText, BOOL bDisabled, BOOL bPushed, DWORD dwFlags, uint32 topMargin) { - DrawButtonRectImpl(hdc, *lpRect, lpszText, bDisabled, bPushed, dwFlags, topMargin); + DrawButtonRectImpl(hdc, CMainFrame::GetGUIFont(), *lpRect, lpszText, bDisabled, bPushed, dwFlags, topMargin); } void DrawButtonRect(HDC hdc, const RECT *lpRect, LPCWSTR lpszText, BOOL bDisabled, BOOL bPushed, DWORD dwFlags, uint32 topMargin) { - DrawButtonRectImpl(hdc, *lpRect, lpszText, bDisabled, bPushed, dwFlags, topMargin); + DrawButtonRectImpl(hdc, CMainFrame::GetGUIFont(), *lpRect, lpszText, bDisabled, bPushed, dwFlags, topMargin); } +void DrawButtonRect(HDC hdc, HFONT font, const RECT *lpRect, LPCSTR lpszText, bool bDisabled, bool bPushed, DWORD dwFlags, uint32 topMargin) +{ + DrawButtonRectImpl(hdc, font, *lpRect, lpszText, bDisabled, bPushed, dwFlags, topMargin); +} + + +void DrawButtonRect(HDC hdc, HFONT font, const RECT *lpRect, LPCWSTR lpszText, bool bDisabled, bool bPushed, DWORD dwFlags, uint32 topMargin) +{ + DrawButtonRectImpl(hdc, font, *lpRect, lpszText, bDisabled, bPushed, dwFlags, topMargin); +} + ////////////////////////////////////////////////////////////////////////////////// // Misc functions Modified: trunk/OpenMPT/mptrack/Mptrack.h ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/Mptrack.h Sun Nov 10 22:18:18 2024 (r22150) @@ -416,6 +416,8 @@ int DrawTextT(HDC hdc, const char *lpchText, int cchText, LPRECT lprc, UINT format); void DrawButtonRect(HDC hdc, const RECT *lpRect, LPCSTR lpszText = nullptr, BOOL bDisabled = FALSE, BOOL bPushed = FALSE, DWORD dwFlags = (DT_CENTER | DT_VCENTER), uint32 topMargin = 0); void DrawButtonRect(HDC hdc, const RECT *lpRect, LPCWSTR lpszText = nullptr, BOOL bDisabled = FALSE, BOOL bPushed = FALSE, DWORD dwFlags = (DT_CENTER | DT_VCENTER), uint32 topMargin = 0); +void DrawButtonRect(HDC hdc, HFONT font, const RECT *lpRect, LPCSTR lpszText = nullptr, bool bDisabled = false, bool bPushed = false, DWORD dwFlags = (DT_CENTER | DT_VCENTER), uint32 topMargin = 0); +void DrawButtonRect(HDC hdc, HFONT font, const RECT *lpRect, LPCWSTR lpszText = nullptr, bool bDisabled = false, bool bPushed = false, DWORD dwFlags = (DT_CENTER | DT_VCENTER), uint32 topMargin = 0); // Misc functions void ErrorBox(UINT nStringID, CWnd *p = nullptr); Modified: trunk/OpenMPT/mptrack/tuningRatioMapWnd.cpp ============================================================================== --- trunk/OpenMPT/mptrack/tuningRatioMapWnd.cpp Sun Nov 10 21:48:42 2024 (r22149) +++ trunk/OpenMPT/mptrack/tuningRatioMapWnd.cpp Sun Nov 10 22:18:18 2024 (r22150) @@ -56,10 +56,7 @@ } if(!m_font.m_hObject) { - NONCLIENTMETRICS metrics; - metrics.cbSize = sizeof(metrics); - HighDPISupport::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(metrics), &metrics, 0, m_hWnd); - m_font.CreateFontIndirect(&metrics.lfMessageFont); + HighDPISupport::CreateGUIFont(m_font, m_hWnd); m_cxFont = m_cyFont = 0; } @@ -91,7 +88,7 @@ rect.SetRect(0, ypaint, m_cxFont, ypaint + m_cyFont); const auto noteStr = isValidNote ? mpt::tfmt::val(noteToDraw) : mpt::tstring(_T("...")); - DrawButtonRect(dc, &rect, noteStr.c_str(), FALSE, FALSE); + DrawButtonRect(dc, m_font, &rect, noteStr.c_str(), false, false); // Mapped Note const bool highLight = focus && (nPos == (int)m_nNote); @@ -117,7 +114,7 @@ } rect.SetRect(rcClient.left + m_cxFont * 4 - 1, rcClient.top, rcClient.left + m_cxFont * 4 + 3, ypaint); - DrawButtonRect(dc, &rect, _T("")); + DrawButtonRect(dc, m_font, &rect, _T("")); if (ypaint < rcClient.bottom) { rect.SetRect(rcClient.left, ypaint, rcClient.right, rcClient.bottom); |
From: <sv...@op...> - 2024-11-10 20:48:49
|
Author: sagamusix Date: Sun Nov 10 21:48:42 2024 New Revision: 22149 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22149 Log: [Mod] Don't enable scroll wheel / cursor keys on the octave switcher. Keys behave weirdly, and it should probably not be so easy to accidentally switch the octave with the mouse wheel. [Fix] Also send update to envelope editors when the mainbar speed input field has keyboard focus. [Fix] Various other small issues with live-editing input fields in main toolbar. Modified: trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/Mainbar.h trunk/OpenMPT/mptrack/Mainfrm.h Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 20:50:22 2024 (r22148) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 21:48:42 2024 (r22149) @@ -2391,6 +2391,7 @@ if(pnotify->type[Notification::EOS]) { PostMessage(WM_COMMAND, ID_PLAYER_STOP); + m_currentSpeed = 0; } //Log("OnUpdatePosition: row=%d time=%lu\n", pnotify->nRow, pnotify->TimestampSamples); if(CModDoc *modDoc = GetModPlaying(); modDoc != nullptr) @@ -2407,6 +2408,12 @@ } m_pSndFile->m_pluginDryWetRatioChanged.reset(); } + // Update envelope views if speed has changed + if(m_pSndFile->m_PlayState.m_nMusicSpeed != m_currentSpeed) + { + m_currentSpeed = m_pSndFile->m_PlayState.m_nMusicSpeed; + modDoc->UpdateAllViews(InstrumentHint().Envelope()); + } } m_nMixChn = pnotify->mixedChannels; Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 20:50:22 2024 (r22148) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 21:48:42 2024 (r22149) @@ -255,7 +255,7 @@ // Octave m_EditOctave.Create(WS_CHILD | WS_BORDER | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL | ES_CENTER, rect, this, IDC_EDIT_BASEOCTAVE); - m_SpinOctave.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS, rect, this, IDC_SPIN_BASEOCTAVE); + m_SpinOctave.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY, rect, this, IDC_SPIN_BASEOCTAVE); // Tempo m_StaticTempo.Create(_T("Tempo:"), WS_CHILD | SS_CENTER | SS_CENTERIMAGE, rect, this, IDC_TEXT_CURRENTTEMPO); m_EditTempo.Create(WS_CHILD | WS_BORDER | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL | ES_NUMBER, rect, this, IDC_EDIT_CURRENTTEMPO); @@ -503,9 +503,10 @@ } -BOOL CMainToolBar::SetCurrentSong(CSoundFile *pSndFile) +void CMainToolBar::SetCurrentSong(CSoundFile *pSndFile) { // Update Info + m_updating = true; if(pSndFile) { // Update play/pause button @@ -516,12 +517,6 @@ const CWnd *focus = GetFocus(); if(nSpeed != m_currentSpeed && focus != &m_EditSpeed) { - if(CModDoc *modDoc = pSndFile->GetpModDoc(); modDoc != nullptr) - { - // Update envelope views if speed has changed - modDoc->UpdateAllViews(InstrumentHint().Envelope()); - } - if(m_currentSpeed < 0) { m_EditSpeed.SetReadOnly(FALSE); @@ -601,7 +596,7 @@ m_SpinGlobalVolume.EnableWindow(FALSE); } } - return TRUE; + m_updating = false; } @@ -680,7 +675,7 @@ void CMainToolBar::OnSpeedChanged() { - if(CMainFrame *mainFrm = CMainFrame::GetMainFrame()) + if(CMainFrame *mainFrm = CMainFrame::GetMainFrame(); mainFrm && !m_updating) { BOOL ok = FALSE; uint32 newSpeed = GetDlgItemInt(IDC_EDIT_CURRENTSPEED, &ok, FALSE); @@ -690,13 +685,14 @@ const auto &specs = sndFile->GetModSpecifications(); sndFile->m_PlayState.m_nMusicSpeed = Clamp(newSpeed, specs.speedMin, specs.speedMax); } + m_currentSpeed = 0; // Force display update once focus moves away from this input field } } void CMainToolBar::OnTempoChanged() { - if(CMainFrame *mainFrm = CMainFrame::GetMainFrame()) + if(CMainFrame *mainFrm = CMainFrame::GetMainFrame(); mainFrm && !m_updating) { TEMPO newTempo = m_EditTempo.GetTempoValue(); CSoundFile *sndFile = mainFrm->GetSoundFilePlaying(); @@ -705,21 +701,23 @@ const auto &specs = sndFile->GetModSpecifications(); sndFile->m_PlayState.m_nMusicTempo = Clamp(newTempo, specs.GetTempoMin(), specs.GetTempoMax()); } + m_currentTempo.Set(0, 1); // Force display update once focus moves away from this input field } } void CMainToolBar::OnRPBChanged() { - if(CMainFrame *mainFrm = CMainFrame::GetMainFrame()) + if(CMainFrame *mainFrm = CMainFrame::GetMainFrame(); mainFrm && !m_updating) { BOOL ok = FALSE; uint32 newRPB = GetDlgItemInt(IDC_EDIT_RPB, &ok, FALSE); CSoundFile *sndFile = mainFrm->GetSoundFilePlaying(); - if(sndFile && ok) + if(sndFile && ok && newRPB > 0) { SetRowsPerBeat(newRPB); } + m_currentRowsPerBeat = -2; // Force display update once focus moves away from this input field } } @@ -735,6 +733,7 @@ { sndFile->m_PlayState.m_nGlobalVolume = Clamp(Util::muldivr_unsigned(newGlobalVol, MAX_GLOBAL_VOLUME, sndFile->GlobalVolumeRange()), uint32(0), MAX_GLOBAL_VOLUME); } + m_currentGlobalVolume = -2; // Force display update once focus moves away from this input field } } Modified: trunk/OpenMPT/mptrack/Mainbar.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.h Sun Nov 10 20:50:22 2024 (r22148) +++ trunk/OpenMPT/mptrack/Mainbar.h Sun Nov 10 21:48:42 2024 (r22149) @@ -90,6 +90,7 @@ CSpinButtonCtrl m_SpinTempo, m_SpinSpeed, m_SpinOctave, m_SpinRowsPerBeat, m_SpinGlobalVolume; int m_currentSpeed = 0, m_currentOctave = -1, m_currentRowsPerBeat = 0, m_currentGlobalVolume = 0; TEMPO m_currentTempo{1, 0}; + bool m_updating = false; public: CStereoVU m_VuMeter; @@ -117,7 +118,7 @@ void Init(CMainFrame *); UINT GetBaseOctave() const; BOOL SetBaseOctave(UINT nOctave); - BOOL SetCurrentSong(CSoundFile *pModDoc); + void SetCurrentSong(CSoundFile *pModDoc); bool ShowUpdateInfo(const CString &newVersion, const CString &infoURL, bool showHighLight); void RemoveUpdateInfo(); Modified: trunk/OpenMPT/mptrack/Mainfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 20:50:22 2024 (r22148) +++ trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 21:48:42 2024 (r22149) @@ -186,6 +186,7 @@ samplecount_t m_dwTimeSec = 0; UINT_PTR m_nTimer = 0; UINT m_nAvgMixChn = 0, m_nMixChn = 0; + uint32 m_currentSpeed = 0; // Misc class COptionsSoundcard *m_SoundCardOptionsDialog = nullptr; #if defined(MPT_ENABLE_UPDATE) |
From: <sv...@op...> - 2024-11-10 19:50:30
|
Author: sagamusix Date: Sun Nov 10 20:50:22 2024 New Revision: 22148 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22148 Log: [Imp] Readouts in main toolbar can now be edited. Modified: trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/Mainbar.h Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 18:31:38 2024 (r22147) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 20:50:22 2024 (r22148) @@ -234,6 +234,11 @@ ON_NOTIFY_REFLECT(TBN_DROPDOWN, &CMainToolBar::OnTbnDropDownToolBar) ON_COMMAND_RANGE(ID_SELECT_MIDI_DEVICE, ID_SELECT_MIDI_DEVICE + MAX_MIDI_DEVICES, &CMainToolBar::OnSelectMIDIDevice) ON_MESSAGE(WM_DPICHANGED_AFTERPARENT, &CMainToolBar::OnDPIChangedAfterParent) + + ON_EN_CHANGE(IDC_EDIT_CURRENTSPEED, &CMainToolBar::OnSpeedChanged) + ON_EN_CHANGE(IDC_EDIT_CURRENTTEMPO, &CMainToolBar::OnTempoChanged) + ON_EN_CHANGE(IDC_EDIT_RPB, &CMainToolBar::OnRPBChanged) + ON_EN_CHANGE(IDC_EDIT_GLOBALVOL, &CMainToolBar::OnGlobalVolChanged) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -249,24 +254,24 @@ CRect rect{0, 0, SPINNER_WIDTH, SPINNER_HEIGHT}; // Octave - m_EditOctave.Create(WS_CHILD | WS_BORDER | ES_READONLY | ES_AUTOHSCROLL | ES_CENTER, rect, this, IDC_EDIT_BASEOCTAVE); - m_SpinOctave.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY, rect, this, IDC_SPIN_BASEOCTAVE); + m_EditOctave.Create(WS_CHILD | WS_BORDER | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL | ES_CENTER, rect, this, IDC_EDIT_BASEOCTAVE); + m_SpinOctave.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS, rect, this, IDC_SPIN_BASEOCTAVE); // Tempo m_StaticTempo.Create(_T("Tempo:"), WS_CHILD | SS_CENTER | SS_CENTERIMAGE, rect, this, IDC_TEXT_CURRENTTEMPO); - m_EditTempo.Create(WS_CHILD | WS_BORDER | ES_READONLY | ES_AUTOHSCROLL, rect, this, IDC_EDIT_CURRENTTEMPO); - m_SpinTempo.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY, rect, this, IDC_SPIN_CURRENTTEMPO); + m_EditTempo.Create(WS_CHILD | WS_BORDER | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL | ES_NUMBER, rect, this, IDC_EDIT_CURRENTTEMPO); + m_SpinTempo.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS, rect, this, IDC_SPIN_CURRENTTEMPO); // Speed m_StaticSpeed.Create(_T("Ticks/Row:"), WS_CHILD | SS_CENTER | SS_CENTERIMAGE, rect, this, IDC_TEXT_CURRENTSPEED); - m_EditSpeed.Create(WS_CHILD | WS_BORDER | ES_READONLY | ES_AUTOHSCROLL | ES_NUMBER, rect, this, IDC_EDIT_CURRENTSPEED); - m_SpinSpeed.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY, rect, this, IDC_SPIN_CURRENTSPEED); + m_EditSpeed.Create(WS_CHILD | WS_BORDER | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL | ES_NUMBER, rect, this, IDC_EDIT_CURRENTSPEED); + m_SpinSpeed.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS, rect, this, IDC_SPIN_CURRENTSPEED); // Rows per Beat m_StaticRowsPerBeat.Create(_T("Rows/Beat:"), WS_CHILD | SS_CENTER | SS_CENTERIMAGE, rect, this, IDC_TEXT_RPB); - m_EditRowsPerBeat.Create(WS_CHILD | WS_BORDER | ES_READONLY | ES_AUTOHSCROLL | ES_NUMBER, rect, this, IDC_EDIT_RPB); - m_SpinRowsPerBeat.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY, rect, this, IDC_SPIN_RPB); + m_EditRowsPerBeat.Create(WS_CHILD | WS_BORDER | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL | ES_NUMBER, rect, this, IDC_EDIT_RPB); + m_SpinRowsPerBeat.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS, rect, this, IDC_SPIN_RPB); // Global Volume m_StaticGlobalVolume.Create(_T("Global Volume:"), WS_CHILD | SS_CENTER | SS_CENTERIMAGE, rect, this, IDC_TEXT_GLOBALVOL); - m_EditGlobalVolume.Create(WS_CHILD | WS_BORDER | ES_READONLY | ES_AUTOHSCROLL | ES_NUMBER, rect, this, IDC_EDIT_GLOBALVOL); - m_SpinGlobalVolume.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY, rect, this, IDC_SPIN_GLOBALVOL); + m_EditGlobalVolume.Create(WS_CHILD | WS_BORDER | WS_TABSTOP | ES_READONLY | ES_AUTOHSCROLL | ES_NUMBER, rect, this, IDC_EDIT_GLOBALVOL); + m_SpinGlobalVolume.Create(WS_CHILD | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS, rect, this, IDC_SPIN_GLOBALVOL); // VU Meter rect.SetRect(0, 0, VUMETER_WIDTH, VUMETER_HEIGHT); @@ -285,6 +290,9 @@ m_SpinGlobalVolume.SetRange(-1, 1); m_SpinGlobalVolume.SetPos(0); + m_EditTempo.AllowNegative(false); + m_EditTempo.SetLimitText(9); + // Display everything SetWindowText(_T("Main")); SetBaseOctave(4); @@ -497,63 +505,69 @@ BOOL CMainToolBar::SetCurrentSong(CSoundFile *pSndFile) { - static CSoundFile *sndFile = nullptr; - if(pSndFile != sndFile) - { - sndFile = pSndFile; - } - // Update Info if(pSndFile) { - TCHAR s[32]; // Update play/pause button if(m_currentTempo == TEMPO(0, 0)) SetButtonInfo(PLAYCMD_INDEX, ID_PLAYER_PAUSE, TBBS_BUTTON, TOOLBAR_IMAGE_PAUSE); // Update Speed int nSpeed = pSndFile->m_PlayState.m_nMusicSpeed; - if(nSpeed != m_currentSpeed) + const CWnd *focus = GetFocus(); + if(nSpeed != m_currentSpeed && focus != &m_EditSpeed) { - CModDoc *modDoc = pSndFile->GetpModDoc(); - if(modDoc != nullptr) + if(CModDoc *modDoc = pSndFile->GetpModDoc(); modDoc != nullptr) { // Update envelope views if speed has changed modDoc->UpdateAllViews(InstrumentHint().Envelope()); } - if(m_currentSpeed < 0) m_SpinSpeed.EnableWindow(TRUE); + if(m_currentSpeed < 0) + { + m_EditSpeed.SetReadOnly(FALSE); + m_SpinSpeed.EnableWindow(TRUE); + } m_currentSpeed = nSpeed; - wsprintf(s, _T("%u"), static_cast<unsigned int>(m_currentSpeed)); - m_EditSpeed.SetWindowText(s); + SetDlgItemInt(IDC_EDIT_CURRENTSPEED, m_currentSpeed, FALSE); } TEMPO nTempo = pSndFile->m_PlayState.m_nMusicTempo; - if(nTempo != m_currentTempo) + if(nTempo != m_currentTempo && focus != &m_EditTempo) { - if(m_currentTempo <= TEMPO(0, 0)) m_SpinTempo.EnableWindow(TRUE); + if(m_currentTempo <= TEMPO(0, 0)) + { + m_EditTempo.SetReadOnly(FALSE); + m_SpinTempo.EnableWindow(TRUE); + } + m_currentTempo = nTempo; - if(m_currentTempo.GetFract() == 0) - _stprintf(s, _T("%u"), m_currentTempo.GetInt()); - else - _stprintf(s, _T("%.4f"), m_currentTempo.ToDouble()); - m_EditTempo.SetWindowText(s); + m_EditTempo.SetTempoValue(m_currentTempo); } int nRowsPerBeat = pSndFile->m_PlayState.m_nCurrentRowsPerBeat; - if(nRowsPerBeat != m_currentRowsPerBeat) + if(nRowsPerBeat != m_currentRowsPerBeat && focus != &m_EditRowsPerBeat) { if(m_currentRowsPerBeat < 0) + { + m_EditRowsPerBeat.SetReadOnly(FALSE); m_SpinRowsPerBeat.EnableWindow(TRUE); + } + m_currentRowsPerBeat = nRowsPerBeat; - wsprintf(s, _T("%u"), static_cast<unsigned int>(m_currentRowsPerBeat)); - m_EditRowsPerBeat.SetWindowText(s); + SetDlgItemInt(IDC_EDIT_RPB, m_currentRowsPerBeat, FALSE); } int globalVol = pSndFile->m_PlayState.m_nGlobalVolume; - if(globalVol != m_currentGlobalVolume) + if(globalVol != m_currentGlobalVolume && focus != &m_EditGlobalVolume) { if(m_currentGlobalVolume < 0) + { + static_assert(MAX_GLOBAL_VOLUME <= 999); + m_EditGlobalVolume.SetLimitText(3); + m_EditGlobalVolume.SetReadOnly(FALSE); m_SpinGlobalVolume.EnableWindow(TRUE); + } + m_currentGlobalVolume = globalVol; - wsprintf(s, _T("%u"), static_cast<unsigned int>(Util::muldivr(m_currentGlobalVolume, pSndFile->GlobalVolumeRange(), MAX_GLOBAL_VOLUME))); - m_EditGlobalVolume.SetWindowText(s); + uint32 displayVolume = Util::muldivr_unsigned(m_currentGlobalVolume, pSndFile->GlobalVolumeRange(), MAX_GLOBAL_VOLUME); + SetDlgItemInt(IDC_EDIT_GLOBALVOL, displayVolume, FALSE); } } else { @@ -561,6 +575,7 @@ { m_currentTempo.Set(0); m_EditTempo.SetWindowText(_T("---")); + m_EditTempo.SetReadOnly(); m_SpinTempo.EnableWindow(FALSE); SetButtonInfo(PLAYCMD_INDEX, ID_PLAYER_PLAY, TBBS_BUTTON, TOOLBAR_IMAGE_PLAY); } @@ -568,18 +583,21 @@ { m_currentSpeed = -1; m_EditSpeed.SetWindowText(_T("---")); + m_EditSpeed.SetReadOnly(); m_SpinSpeed.EnableWindow(FALSE); } if(m_currentRowsPerBeat != -1) { m_currentRowsPerBeat = -1; m_EditRowsPerBeat.SetWindowText(_T("---")); + m_EditRowsPerBeat.SetReadOnly(); m_SpinRowsPerBeat.EnableWindow(FALSE); } if(m_currentGlobalVolume != -1) { m_currentGlobalVolume = -1; m_EditGlobalVolume.SetWindowText(_T("---")); + m_EditGlobalVolume.SetReadOnly(); m_SpinGlobalVolume.EnableWindow(FALSE); } } @@ -658,6 +676,67 @@ } } } + + +void CMainToolBar::OnSpeedChanged() +{ + if(CMainFrame *mainFrm = CMainFrame::GetMainFrame()) + { + BOOL ok = FALSE; + uint32 newSpeed = GetDlgItemInt(IDC_EDIT_CURRENTSPEED, &ok, FALSE); + CSoundFile *sndFile = mainFrm->GetSoundFilePlaying(); + if(sndFile && ok) + { + const auto &specs = sndFile->GetModSpecifications(); + sndFile->m_PlayState.m_nMusicSpeed = Clamp(newSpeed, specs.speedMin, specs.speedMax); + } + } +} + + +void CMainToolBar::OnTempoChanged() +{ + if(CMainFrame *mainFrm = CMainFrame::GetMainFrame()) + { + TEMPO newTempo = m_EditTempo.GetTempoValue(); + CSoundFile *sndFile = mainFrm->GetSoundFilePlaying(); + if(sndFile && m_EditTempo.GetWindowTextLength() > 0) + { + const auto &specs = sndFile->GetModSpecifications(); + sndFile->m_PlayState.m_nMusicTempo = Clamp(newTempo, specs.GetTempoMin(), specs.GetTempoMax()); + } + } +} + + +void CMainToolBar::OnRPBChanged() +{ + if(CMainFrame *mainFrm = CMainFrame::GetMainFrame()) + { + BOOL ok = FALSE; + uint32 newRPB = GetDlgItemInt(IDC_EDIT_RPB, &ok, FALSE); + CSoundFile *sndFile = mainFrm->GetSoundFilePlaying(); + if(sndFile && ok) + { + SetRowsPerBeat(newRPB); + } + } +} + + +void CMainToolBar::OnGlobalVolChanged() +{ + if(CMainFrame *mainFrm = CMainFrame::GetMainFrame()) + { + BOOL ok = FALSE; + uint32 newGlobalVol = GetDlgItemInt(IDC_EDIT_GLOBALVOL, &ok, FALSE); + CSoundFile *sndFile = mainFrm->GetSoundFilePlaying(); + if(sndFile && ok) + { + sndFile->m_PlayState.m_nGlobalVolume = Clamp(Util::muldivr_unsigned(newGlobalVol, MAX_GLOBAL_VOLUME, sndFile->GlobalVolumeRange()), uint32(0), MAX_GLOBAL_VOLUME); + } + } +} void CMainToolBar::OnTbnDropDownToolBar(NMHDR *pNMHDR, LRESULT *pResult) Modified: trunk/OpenMPT/mptrack/Mainbar.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.h Sun Nov 10 18:31:38 2024 (r22147) +++ trunk/OpenMPT/mptrack/Mainbar.h Sun Nov 10 20:50:22 2024 (r22148) @@ -11,6 +11,7 @@ #pragma once #include "openmpt/all/BuildSettings.hpp" +#include "CDecimalSupport.h" #include "CImageListEx.h" #include "UpdateHints.h" #include "UpdateToolTip.h" @@ -83,7 +84,8 @@ protected: UpdateToolTip m_tooltip; CImageListEx m_ImageList, m_ImageListDisabled; - CEdit m_EditTempo, m_EditSpeed, m_EditOctave, m_EditRowsPerBeat, m_EditGlobalVolume; + CNumberEdit m_EditTempo; + CEdit m_EditSpeed, m_EditOctave, m_EditRowsPerBeat, m_EditGlobalVolume; CStatic m_StaticTempo, m_StaticSpeed, m_StaticRowsPerBeat, m_StaticGlobalVolume; CSpinButtonCtrl m_SpinTempo, m_SpinSpeed, m_SpinOctave, m_SpinRowsPerBeat, m_SpinGlobalVolume; int m_currentSpeed = 0, m_currentOctave = -1, m_currentRowsPerBeat = 0, m_currentGlobalVolume = 0; @@ -133,6 +135,12 @@ afx_msg void OnTbnDropDownToolBar(NMHDR* pNMHDR, LRESULT* pResult); afx_msg BOOL OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnSelectMIDIDevice(UINT id); + + afx_msg void OnSpeedChanged(); + afx_msg void OnTempoChanged(); + afx_msg void OnRPBChanged(); + afx_msg void OnGlobalVolChanged(); + //}}AFX_MSG DECLARE_MESSAGE_MAP() }; |
From: <sv...@op...> - 2024-11-10 17:31:50
|
Author: sagamusix Date: Sun Nov 10 18:31:38 2024 New Revision: 22147 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22147 Log: Merged revision(s) 22146 from trunk/OpenMPT: [Fix] Fix truncated display of first item in checkbox lists in particular on high-DPI displays. Potentially also fixes https://bugs.openmpt.org/view.php?id=1480 ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/mptrack/GeneralConfigDlg.cpp branches/OpenMPT-1.31/mptrack/dlg_misc.cpp Modified: branches/OpenMPT-1.31/mptrack/GeneralConfigDlg.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/GeneralConfigDlg.cpp Sun Nov 10 18:29:25 2024 (r22146) +++ branches/OpenMPT-1.31/mptrack/GeneralConfigDlg.cpp Sun Nov 10 18:31:38 2024 (r22147) @@ -137,6 +137,7 @@ m_CheckList.SetCheck(idx, check); } m_CheckList.SetCurSel(0); + m_CheckList.SetItemHeight(0, 0); // Workaround to force MFC to correctly compute the height of the first list item, in particular on high-DPI setups OnOptionSelChanged(); return TRUE; Modified: branches/OpenMPT-1.31/mptrack/dlg_misc.cpp ============================================================================== --- branches/OpenMPT-1.31/mptrack/dlg_misc.cpp Sun Nov 10 18:29:25 2024 (r22146) +++ branches/OpenMPT-1.31/mptrack/dlg_misc.cpp Sun Nov 10 18:31:38 2024 (r22147) @@ -525,6 +525,7 @@ BOOL CLegacyPlaybackSettingsDlg::OnInitDialog() { ResizableDialog::OnInitDialog(); + m_CheckList.SetItemHeight(0, 0); // Workaround to force MFC to correctly compute the height of the first list item, in particular on high-DPI setups OnFilterStringChanged(); UpdateSelectDefaults(); return TRUE; |
From: <sv...@op...> - 2024-11-10 17:29:37
|
Author: sagamusix Date: Sun Nov 10 18:29:25 2024 New Revision: 22146 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22146 Log: [Fix] Fix truncated display of first item in checkbox lists in particular on high-DPI displays. Potentially also fixes https://bugs.openmpt.org/view.php?id=1480 Modified: trunk/OpenMPT/mptrack/GeneralConfigDlg.cpp trunk/OpenMPT/mptrack/dlg_misc.cpp Modified: trunk/OpenMPT/mptrack/GeneralConfigDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/GeneralConfigDlg.cpp Sun Nov 10 17:52:08 2024 (r22145) +++ trunk/OpenMPT/mptrack/GeneralConfigDlg.cpp Sun Nov 10 18:29:25 2024 (r22146) @@ -144,6 +144,7 @@ m_CheckList.SetCheck(idx, check); } m_CheckList.SetCurSel(0); + m_CheckList.SetItemHeight(0, 0); // Workaround to force MFC to correctly compute the height of the first list item, in particular on high-DPI setups OnOptionSelChanged(); return TRUE; Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 17:52:08 2024 (r22145) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 18:29:25 2024 (r22146) @@ -574,6 +574,7 @@ BOOL CLegacyPlaybackSettingsDlg::OnInitDialog() { ResizableDialog::OnInitDialog(); + m_CheckList.SetItemHeight(0, 0); // Workaround to force MFC to correctly compute the height of the first list item, in particular on high-DPI setups OnFilterStringChanged(); UpdateSelectDefaults(); return TRUE; |
From: <sv...@op...> - 2024-11-10 16:52:20
|
Author: sagamusix Date: Sun Nov 10 17:52:08 2024 New Revision: 22145 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22145 Log: [Imp] Make MIDI mapping dialog resizable. Modified: trunk/OpenMPT/mptrack/MIDIMappingDialog.cpp trunk/OpenMPT/mptrack/MIDIMappingDialog.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/MIDIMappingDialog.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MIDIMappingDialog.cpp Sun Nov 10 17:48:58 2024 (r22144) +++ trunk/OpenMPT/mptrack/MIDIMappingDialog.cpp Sun Nov 10 17:52:08 2024 (r22145) @@ -27,10 +27,10 @@ OPENMPT_NAMESPACE_BEGIN -CMIDIMappingDialog::CMIDIMappingDialog(CWnd *pParent, CSoundFile &rSndfile) - : DialogBase(IDD_MIDIPARAMCONTROL, pParent) - , m_sndFile(rSndfile) - , m_rMIDIMapper(m_sndFile.GetMIDIMapper()) +CMIDIMappingDialog::CMIDIMappingDialog(CWnd *pParent, CSoundFile &sndfile) + : ResizableDialog{IDD_MIDIPARAMCONTROL, pParent} + , m_sndFile{sndfile} + , m_rMIDIMapper{m_sndFile.GetMIDIMapper()} { CMainFrame::GetInputHandler()->Bypass(true); oldMIDIRecondWnd = CMainFrame::GetMainFrame()->GetMidiRecordWnd(); @@ -44,9 +44,9 @@ } -void CMIDIMappingDialog::DoDataExchange(CDataExchange* pDX) +void CMIDIMappingDialog::DoDataExchange(CDataExchange *pDX) { - DialogBase::DoDataExchange(pDX); + ResizableDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO_CONTROLLER, m_ControllerCBox); DDX_Control(pDX, IDC_COMBO_PLUGIN, m_PluginCBox); DDX_Control(pDX, IDC_COMBO_PARAM, m_PlugParamCBox); @@ -57,7 +57,7 @@ } -BEGIN_MESSAGE_MAP(CMIDIMappingDialog, DialogBase) +BEGIN_MESSAGE_MAP(CMIDIMappingDialog, ResizableDialog) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &CMIDIMappingDialog::OnSelectionChanged) ON_BN_CLICKED(IDC_CHECKACTIVE, &CMIDIMappingDialog::OnBnClickedCheckactive) ON_BN_CLICKED(IDC_CHECKCAPTURE, &CMIDIMappingDialog::OnBnClickedCheckCapture) @@ -111,7 +111,7 @@ BOOL CMIDIMappingDialog::OnInitDialog() { - DialogBase::OnInitDialog(); + ResizableDialog::OnInitDialog(); // Add events m_EventCBox.SetItemData(m_EventCBox.AddString(_T("Controller Change")), MIDIEvents::evControllerChange); Modified: trunk/OpenMPT/mptrack/MIDIMappingDialog.h ============================================================================== --- trunk/OpenMPT/mptrack/MIDIMappingDialog.h Sun Nov 10 17:48:58 2024 (r22144) +++ trunk/OpenMPT/mptrack/MIDIMappingDialog.h Sun Nov 10 17:52:08 2024 (r22145) @@ -15,8 +15,8 @@ #ifndef NO_PLUGINS #include "CListCtrl.h" -#include "DialogBase.h" #include "MIDIMapping.h" +#include "ResizableDialog.h" #include "PluginComboBox.h" @@ -25,7 +25,7 @@ class CSoundFile; class CMIDIMapper; -class CMIDIMappingDialog : public DialogBase +class CMIDIMappingDialog : public ResizableDialog { public: CMIDIMappingDirective m_Setting; Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 17:48:58 2024 (r22144) +++ trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 17:52:08 2024 (r22145) @@ -3340,7 +3340,7 @@ // IDD_MIDIPARAMCONTROL DIALOGEX 0, 0, 413, 247 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "MIDI Mapping" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -3585,6 +3585,32 @@ 0 END +IDD_MIDIPARAMCONTROL AFX_DIALOG_LAYOUT +BEGIN + 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 100, 100, + 100, 0, 0, 100, + 100, 100, 0, 0, + 0, 0, 0, 0 +END + ///////////////////////////////////////////////////////////////////////////// // |
From: <sv...@op...> - 2024-11-10 16:49:11
|
Author: sagamusix Date: Sun Nov 10 17:48:58 2024 New Revision: 22144 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22144 Log: [Fix] Fix some labels being cut off at 175% GUI scaling. Modified: trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 17:08:39 2024 (r22143) +++ trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 17:48:58 2024 (r22144) @@ -253,8 +253,8 @@ GROUPBOX "Check for Updates",IDC_STATIC_UPDATECHECK,6,24,276,66 CONTROL "&Install Updates automatically",IDC_CHECK_UPDATEINSTALLAUTOMATICALLY, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,36,264,12 - LTEXT "Automatically check on program &start:",IDC_STATIC_UPDATEFREQUENCY,12,54,126,12,SS_CENTERIMAGE - COMBOBOX IDC_COMBO_UPDATEFREQUENCY,138,54,48,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Automatically check on program &start:",IDC_STATIC_UPDATEFREQUENCY,12,54,132,12,SS_CENTERIMAGE + COMBOBOX IDC_COMBO_UPDATEFREQUENCY,146,54,48,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "&Check now...",IDC_BUTTON1,216,54,60,12 LTEXT "",IDC_LASTUPDATE,12,73,264,12 GROUPBOX "Privacy Settings",IDC_STATIC_UPDATEPRIVACY,6,96,276,84 @@ -1259,11 +1259,11 @@ CONTROL "On Key Hold",IDC_CHECKKEYHOLD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,66,66,8 CONTROL "On Key Up",IDC_CHECKKEYUP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,78,66,8 GROUPBOX "Misc",IDC_STATIC,150,96,132,40 - LTEXT "Repeat notes on hold?",IDC_STATIC,156,108,74,8 + LTEXT "Repeat notes on hold?",IDC_STATIC,156,108,84,8 PUSHBUTTON "Yes",IDC_NOTESREPEAT,240,108,18,9 PUSHBUTTON "No",IDC_NONOTESREPEAT,258,108,18,9 - LTEXT "Chord detect interval (ms):",IDC_STATIC,156,122,88,8 - EDITTEXT IDC_CHORDDETECTWAITTIME,246,120,30,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + LTEXT "Chord detect interval (ms):",IDC_STATIC,156,122,94,8 + EDITTEXT IDC_CHORDDETECTWAITTIME,250,120,26,12,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT GROUPBOX "Keyboard Mapping",IDC_STATIC,150,144,132,48 PUSHBUTTON "&Import Keys...",IDC_LOAD,156,156,54,13 PUSHBUTTON "&Export Keys...",IDC_SAVE,222,156,54,13 @@ -1362,11 +1362,11 @@ GROUPBOX "MIDI File Import",IDC_STATIC,6,240,276,36 LTEXT "&Quantize:",IDC_STATIC,12,258,32,8 COMBOBOX IDC_COMBO3,48,256,60,12,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Tic&ks / Row:",IDC_STATIC,114,258,40,8 - EDITTEXT IDC_EDIT1,156,256,30,12,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "Tic&ks / Row:",IDC_STATIC,114,258,42,8 + EDITTEXT IDC_EDIT1,159,256,30,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "Spin1",IDC_SPIN1,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,174,258,11,14 - LTEXT "Pattern Si&ze:",IDC_STATIC,192,258,48,8 - EDITTEXT IDC_EDIT2,240,256,36,12,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "Pattern Si&ze:",IDC_STATIC,193,258,48,8 + EDITTEXT IDC_EDIT2,241,256,36,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "Spin1",IDC_SPIN2,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,259,254,11,14 END @@ -1411,9 +1411,9 @@ EDITTEXT IDC_EDIT_SONGTITLE,30,3,156,12,ES_AUTOHSCROLL LTEXT "Artist:",IDC_STATIC,2,20,23,8 EDITTEXT IDC_EDIT_ARTIST,30,18,156,12,ES_AUTOHSCROLL - PUSHBUTTON "Type EXT, ## channels",IDC_BUTTON_MODTYPE,192,3,150,12 - LTEXT "Resampling:",IDC_STATIC,192,20,48,8 - COMBOBOX IDC_COMBO1,240,18,102,90,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Type EXT, ## channels",IDC_BUTTON_MODTYPE,192,3,162,12 + LTEXT "Resampling:",IDC_STATIC,192,20,54,8 + COMBOBOX IDC_COMBO1,246,18,108,90,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Initial Tempo",IDC_STATIC,5,42,49,12 CONTROL "",IDC_SLIDER_SONGTEMPO,"msctls_trackbar32",TBS_VERT | TBS_BOTH | TBS_NOTICKS,11,50,15,50 EDITTEXT IDC_EDIT_TEMPO,5,101,43,12,ES_AUTOHSCROLL | ES_NUMBER @@ -1427,23 +1427,23 @@ CONTROL "Spin1",IDC_SPIN_RESTARTPOS,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,132,54,11,14 CONTROL "Loop Song",IDC_CHECK_LOOPSONG,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,102,90,54,10 CTEXT "Not saved in song!",IDC_STATIC,96,102,66,12 - CTEXT "Initial Global Volume",IDC_STATIC,165,42,64,8 + CTEXT "Initial Global Volume",IDC_STATIC,165,42,69,8 CONTROL "",IDC_SLIDER_GLOBALVOL,"msctls_trackbar32",TBS_VERT | TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS,181,50,24,50 EDITTEXT IDC_EDIT_GLOBALVOL,174,100,36,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "",IDC_SPIN_GLOBALVOL,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,203,98,11,14 - CTEXT "Synth Volume",IDC_STATIC,232,42,48,8 - CONTROL "",IDC_SLIDER_VSTIVOL,"msctls_trackbar32",TBS_VERT | TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS,243,50,22,50 - EDITTEXT IDC_EDIT_VSTIVOL,235,100,36,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "",IDC_SPIN_VSTIVOL,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,263,98,11,14 - CTEXT "Sample Volume",IDC_STATIC,280,42,55,8 - CONTROL "Slider1",IDC_SLIDER_SAMPLEPREAMP,"msctls_trackbar32",TBS_VERT | TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS,300,50,19,50 - EDITTEXT IDC_EDIT_SAMPLEPA,291,100,36,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "",IDC_SPIN_SAMPLEPA,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,317,97,11,14 - CONTROL "",IDC_VUMETER_LEFT,"Static",SS_BLACKRECT | SS_SUNKEN,348,3,15,115 - CONTROL "",IDC_VUMETER_RIGHT,"Static",SS_BLACKRECT | SS_SUNKEN,366,3,15,115 + CTEXT "Synth Volume",IDC_STATIC,236,42,48,8 + CONTROL "",IDC_SLIDER_VSTIVOL,"msctls_trackbar32",TBS_VERT | TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS,247,50,22,50 + EDITTEXT IDC_EDIT_VSTIVOL,239,100,36,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_SPIN_VSTIVOL,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,267,98,11,14 + CTEXT "Sample Volume",IDC_STATIC,288,42,55,8 + CONTROL "Slider1",IDC_SLIDER_SAMPLEPREAMP,"msctls_trackbar32",TBS_VERT | TBS_BOTH | TBS_NOTICKS | TBS_TOOLTIPS,308,50,19,50 + EDITTEXT IDC_EDIT_SAMPLEPA,299,100,36,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_SPIN_SAMPLEPA,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,325,97,11,14 + CONTROL "",IDC_VUMETER_LEFT,"Static",SS_BLACKRECT | SS_SUNKEN,360,3,15,115 + CONTROL "",IDC_VUMETER_RIGHT,"Static",SS_BLACKRECT | SS_SUNKEN,378,3,15,115 GROUPBOX "",IDC_STATIC,1,30,96,88 GROUPBOX "",IDC_STATIC,96,30,67,88 - GROUPBOX "",IDC_STATIC,162,30,180,88 + GROUPBOX "",IDC_STATIC,162,30,192,88 END IDD_CONTROL_COMMENTS DIALOGEX 0, 0, 435, 119 @@ -1480,79 +1480,79 @@ GROUPBOX "",IDC_STATIC,378,23,174,24 END -IDD_CONTROL_SAMPLES DIALOGEX 0, 0, 554, 106 +IDD_CONTROL_SAMPLES DIALOGEX 0, 0, 560, 106 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN CONTROL "Toolbar1",IDC_TOOLBAR1,"ToolbarWindow32",WS_GROUP | WS_TABSTOP | 0x4d,4,5,92,19 - RTEXT "Sample",IDC_STATIC,98,8,24,8 - EDITTEXT IDC_EDIT_SAMPLE,128,6,36,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin6",IDC_SPIN_SAMPLE,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,146,4,12,14 - COMBOBOX IDC_COMBO_ZOOM,170,6,36,89,CBS_DROPDOWNLIST | WS_VSCROLL - CTEXT "Length: 000000 (16-bit)",IDC_TEXT5,212,6,102,13,SS_CENTERIMAGE,WS_EX_STATICEDGE - CONTROL "Toolbar2",IDC_TOOLBAR2,"ToolbarWindow32",WS_GROUP | WS_TABSTOP | 0x4d,316,5,232,17 - CTEXT "&Name",IDC_STATIC,102,26,28,12,SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_STATICEDGE - EDITTEXT IDC_SAMPLE_NAME,129,26,135,12,ES_AUTOHSCROLL - CTEXT "File",IDC_STATIC,269,26,23,13,SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_STATICEDGE - EDITTEXT IDC_SAMPLE_FILENAME,292,26,72,13,ES_AUTOHSCROLL - CONTROL "&Keep Sample Data on Disk",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,372,27,150,10 - GROUPBOX "",IDC_STATIC,3,22,94,78 - LTEXT "Default &Volume",IDC_STATIC,8,32,49,8 - EDITTEXT IDC_EDIT7,57,30,36,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_SPIN7,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,87,29,11,11 - LTEXT "&Global Volume",IDC_STATIC,8,45,46,8 - EDITTEXT IDC_EDIT8,57,43,36,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_SPIN8,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,87,42,11,11 - CONTROL "Set Pan",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,9,58,42,10 - EDITTEXT IDC_EDIT9,57,56,36,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_SPIN9,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,87,56,11,11 - LTEXT "FineTune",IDC_TEXT7,8,73,37,8 - EDITTEXT IDC_EDIT5,48,70,45,12,ES_AUTOHSCROLL - CONTROL "Spin1",IDC_SPIN5,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,87,69,11,11 - LTEXT "Trans&pose",IDC_TEXT6,8,86,38,8 - COMBOBOX IDC_COMBO_BASENOTE,48,83,45,89,CBS_DROPDOWNLIST | WS_VSCROLL - GROUPBOX "&Loop",IDC_STATIC,102,43,79,57 - LTEXT "Type",IDC_STATIC,107,57,17,8 - COMBOBOX IDC_COMBO1,130,54,45,46,CBS_DROPDOWNLIST | WS_TABSTOP - LTEXT "Start",IDC_STATIC,107,73,16,8 - EDITTEXT IDC_EDIT1,130,70,45,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_SPIN1,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,169,69,11,11 - LTEXT "End",IDC_STATIC,107,86,14,8 - EDITTEXT IDC_EDIT2,130,83,45,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_SPIN2,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,169,84,11,11 - GROUPBOX "&Sustain Loop",IDC_STATIC,185,43,79,57 - LTEXT "Type",IDC_STATIC,189,57,17,8 - COMBOBOX IDC_COMBO2,212,54,45,46,CBS_DROPDOWNLIST | WS_TABSTOP - LTEXT "Start",IDC_STATIC,189,73,16,8 - EDITTEXT IDC_EDIT3,212,70,45,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_SPIN3,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,253,70,11,11 - LTEXT "End",IDC_STATIC,189,86,14,8 - EDITTEXT IDC_EDIT4,212,83,45,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Spin1",IDC_SPIN4,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,253,83,11,11 - GROUPBOX "",IDC_STATIC,269,43,96,57 - LTEXT "&Auto-Vibrato",IDC_STATIC,275,50,41,8 - COMBOBOX IDC_COMBO3,275,59,47,70,CBS_DROPDOWNLIST | WS_TABSTOP - LTEXT "&Depth",IDC_STATIC,327,50,20,8 - EDITTEXT IDC_EDIT15,327,59,32,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Depth",IDC_SPIN12,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,353,59,11,11 - LTEXT "S&weep",IDC_STATIC,275,74,23,8 - EDITTEXT IDC_EDIT14,275,83,38,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Sweep",IDC_SPIN11,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,305,84,11,11 - LTEXT "&Rate",IDC_STATIC,321,74,16,8 - EDITTEXT IDC_EDIT16,321,83,38,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "Rate",IDC_SPIN13,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,353,83,11,11 - GROUPBOX "Pitch Shifting / &Time Stretching",IDC_GROUPBOX_PITCH_TIME,372,41,180,59 - CONTROL "Lo-&Fi Mode",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,480,54,66,11 - LTEXT "Pitch",IDC_TEXT_PITCH,378,56,42,8 - COMBOBOX IDC_COMBO4,420,54,54,61,CBS_DROPDOWN | WS_VSCROLL | WS_GROUP | WS_TABSTOP - LTEXT "Stretch",IDC_STATIC,378,70,24,8 - EDITTEXT IDC_EDIT6,420,68,42,12,ES_AUTOHSCROLL | ES_NUMBER - CONTROL "",IDC_SPIN16,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,447,66,11,11 - LTEXT "%",IDC_TEXT_PERCENT,465,69,8,10 - PUSHBUTTON "Ratio Calculator",IDC_BUTTON2,480,67,66,13 - LTEXT "Grain Size",IDC_TEXT_QUALITY,378,84,36,8 - COMBOBOX IDC_COMBO5,420,82,54,86,CBS_DROPDOWN | WS_VSCROLL | WS_GROUP | WS_TABSTOP - PUSHBUTTON "Process",IDC_BUTTON1,480,82,66,14 + RTEXT "Sample",IDC_STATIC,105,8,24,8 + EDITTEXT IDC_EDIT_SAMPLE,135,6,36,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Spin6",IDC_SPIN_SAMPLE,"msctls_updown32",UDS_WRAP | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,153,4,12,14 + COMBOBOX IDC_COMBO_ZOOM,177,6,36,89,CBS_DROPDOWNLIST | WS_VSCROLL + CTEXT "Length: 000000 (16-bit)",IDC_TEXT5,219,6,102,13,SS_CENTERIMAGE,WS_EX_STATICEDGE + CONTROL "Toolbar2",IDC_TOOLBAR2,"ToolbarWindow32",WS_GROUP | WS_TABSTOP | 0x4d,323,5,232,17 + CTEXT "&Name",IDC_STATIC,109,26,28,12,SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_STATICEDGE + EDITTEXT IDC_SAMPLE_NAME,136,26,135,12,ES_AUTOHSCROLL + CTEXT "File",IDC_STATIC,276,26,23,13,SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_STATICEDGE + EDITTEXT IDC_SAMPLE_FILENAME,299,26,72,13,ES_AUTOHSCROLL + CONTROL "&Keep Sample Data on Disk",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,379,27,150,10 + GROUPBOX "",IDC_STATIC,3,22,101,78 + LTEXT "Default &Volume",IDC_STATIC,8,32,56,8 + EDITTEXT IDC_EDIT7,64,30,36,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Spin1",IDC_SPIN7,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,94,29,11,11 + LTEXT "&Global Volume",IDC_STATIC,8,45,53,8 + EDITTEXT IDC_EDIT8,64,43,36,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Spin1",IDC_SPIN8,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,94,42,11,11 + CONTROL "Set Pan",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,9,58,49,10 + EDITTEXT IDC_EDIT9,64,56,36,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Spin1",IDC_SPIN9,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,94,56,11,11 + LTEXT "FineTune",IDC_TEXT7,8,73,44,8 + EDITTEXT IDC_EDIT5,55,70,45,12,ES_AUTOHSCROLL + CONTROL "Spin1",IDC_SPIN5,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,94,69,11,11 + LTEXT "Trans&pose",IDC_TEXT6,8,86,45,8 + COMBOBOX IDC_COMBO_BASENOTE,55,83,45,89,CBS_DROPDOWNLIST | WS_VSCROLL + GROUPBOX "&Loop",IDC_STATIC,109,43,79,57 + LTEXT "Type",IDC_STATIC,114,57,17,8 + COMBOBOX IDC_COMBO1,137,54,45,46,CBS_DROPDOWNLIST | WS_TABSTOP + LTEXT "Start",IDC_STATIC,114,73,16,8 + EDITTEXT IDC_EDIT1,137,70,45,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Spin1",IDC_SPIN1,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,176,69,11,11 + LTEXT "End",IDC_STATIC,114,86,14,8 + EDITTEXT IDC_EDIT2,137,83,45,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Spin1",IDC_SPIN2,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,176,84,11,11 + GROUPBOX "&Sustain Loop",IDC_STATIC,192,43,79,57 + LTEXT "Type",IDC_STATIC,196,57,17,8 + COMBOBOX IDC_COMBO2,219,54,45,46,CBS_DROPDOWNLIST | WS_TABSTOP + LTEXT "Start",IDC_STATIC,196,73,16,8 + EDITTEXT IDC_EDIT3,219,70,45,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Spin1",IDC_SPIN3,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,260,70,11,11 + LTEXT "End",IDC_STATIC,196,86,14,8 + EDITTEXT IDC_EDIT4,219,83,45,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Spin1",IDC_SPIN4,"msctls_updown32",UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,260,83,11,11 + GROUPBOX "",IDC_STATIC,276,43,96,57 + LTEXT "&Auto-Vibrato",IDC_STATIC,282,50,41,8 + COMBOBOX IDC_COMBO3,282,59,47,70,CBS_DROPDOWNLIST | WS_TABSTOP + LTEXT "&Depth",IDC_STATIC,334,50,20,8 + EDITTEXT IDC_EDIT15,334,59,32,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Depth",IDC_SPIN12,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,360,59,11,11 + LTEXT "S&weep",IDC_STATIC,282,74,23,8 + EDITTEXT IDC_EDIT14,282,83,38,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Sweep",IDC_SPIN11,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,312,84,11,11 + LTEXT "&Rate",IDC_STATIC,328,74,16,8 + EDITTEXT IDC_EDIT16,328,83,38,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "Rate",IDC_SPIN13,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,360,83,11,11 + GROUPBOX "Pitch Shifting / &Time Stretching",IDC_GROUPBOX_PITCH_TIME,379,41,180,59 + CONTROL "Lo-&Fi Mode",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | BS_FLAT | WS_TABSTOP,487,54,66,11 + LTEXT "Pitch",IDC_TEXT_PITCH,385,56,42,8 + COMBOBOX IDC_COMBO4,427,54,54,61,CBS_DROPDOWN | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Stretch",IDC_STATIC,385,70,24,8 + EDITTEXT IDC_EDIT6,427,68,42,12,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_SPIN16,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,454,66,11,11 + LTEXT "%",IDC_TEXT_PERCENT,472,69,8,10 + PUSHBUTTON "Ratio Calculator",IDC_BUTTON2,487,67,66,13 + LTEXT "Grain Size",IDC_TEXT_QUALITY,385,84,36,8 + COMBOBOX IDC_COMBO5,427,82,54,86,CBS_DROPDOWN | WS_VSCROLL | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Process",IDC_BUTTON1,487,82,66,14 END IDD_CONTROL_INSTRUMENTS DIALOGEX 0, 0, 536, 170 @@ -1708,32 +1708,32 @@ CONTROL "",IDC_BUTTON10,"Button",BS_OWNERDRAW | BS_FLAT | WS_TABSTOP,169,16,33,11,WS_EX_TRANSPARENT CONTROL "",IDC_BUTTON11,"Button",BS_OWNERDRAW | BS_FLAT | WS_TABSTOP,272,16,33,11,WS_EX_TRANSPARENT CONTROL "",IDC_BUTTON12,"Button",BS_OWNERDRAW | BS_FLAT | WS_TABSTOP,375,16,33,11,WS_EX_TRANSPARENT - LTEXT "Initial Volume:",IDC_STATIC,10,48,45,8 + LTEXT "Initial Volume:",IDC_STATIC,10,48,50,8 EDITTEXT IDC_EDIT1,63,46,36,12,ES_NUMBER CONTROL "Spin1",IDC_SPIN1,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,95,45,11,14 - LTEXT "Initial Volume:",IDC_STATIC,113,48,45,8 + LTEXT "Initial Volume:",IDC_STATIC,113,48,50,8 EDITTEXT IDC_EDIT3,166,46,36,12,ES_NUMBER CONTROL "Spin1",IDC_SPIN3,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,198,45,11,14 - LTEXT "Initial Volume:",IDC_STATIC,216,48,45,8 + LTEXT "Initial Volume:",IDC_STATIC,216,48,50,8 EDITTEXT IDC_EDIT5,269,46,36,12,ES_NUMBER CONTROL "Spin1",IDC_SPIN5,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,301,45,11,14 - LTEXT "Initial Volume:",IDC_STATIC,319,48,45,8 + LTEXT "Initial Volume:",IDC_STATIC,319,48,50,8 EDITTEXT IDC_EDIT7,372,46,36,12,ES_NUMBER CONTROL "Spin1",IDC_SPIN7,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,399,45,11,14 CONTROL "Slider2",IDC_SLIDER1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,10,59,92,22 CONTROL "Slider2",IDC_SLIDER3,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,113,59,92,22 CONTROL "Slider2",IDC_SLIDER5,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,216,59,92,22 CONTROL "Slider2",IDC_SLIDER7,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,319,59,92,22 - LTEXT "Initial Pan:",IDC_STATIC,10,89,34,8 + LTEXT "Initial Pan:",IDC_STATIC,10,89,50,8 EDITTEXT IDC_EDIT2,63,88,36,12,ES_NUMBER CONTROL "Spin1",IDC_SPIN2,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,95,86,11,14 - LTEXT "Initial Pan:",IDC_STATIC,113,89,34,8 + LTEXT "Initial Pan:",IDC_STATIC,113,89,50,8 EDITTEXT IDC_EDIT4,166,88,36,12,ES_NUMBER CONTROL "Spin1",IDC_SPIN4,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,198,86,11,14 - LTEXT "Initial Pan:",IDC_STATIC,216,89,34,8 + LTEXT "Initial Pan:",IDC_STATIC,216,89,50,8 EDITTEXT IDC_EDIT6,269,88,36,12,ES_NUMBER CONTROL "Spin1",IDC_SPIN6,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,301,86,11,14 - LTEXT "Initial Pan:",IDC_STATIC,319,89,34,8 + LTEXT "Initial Pan:",IDC_STATIC,319,89,50,8 EDITTEXT IDC_EDIT8,372,88,36,12,ES_NUMBER CONTROL "Spin1",IDC_SPIN8,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,401,86,11,14 CONTROL "Slider2",IDC_SLIDER2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,10,100,92,22 @@ -1748,13 +1748,13 @@ CONTROL "Surround",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,262,129,42,12 CONTROL "Mute",IDC_CHECK7,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,322,129,42,12 CONTROL "Surround",IDC_CHECK8,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,365,129,42,12 - LTEXT "Effect:",IDC_STATIC,10,146,29,8 + LTEXT "Effect:",IDC_STATIC,10,146,44,8 COMBOBOX IDC_COMBO1,10,155,89,99,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Effect:",IDC_STATIC,113,146,29,8 + LTEXT "Effect:",IDC_STATIC,113,146,44,8 COMBOBOX IDC_COMBO2,113,155,89,99,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Effect:",IDC_STATIC,216,146,29,8 + LTEXT "Effect:",IDC_STATIC,216,146,44,8 COMBOBOX IDC_COMBO3,216,155,89,99,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Effect:",IDC_STATIC,319,146,29,8 + LTEXT "Effect:",IDC_STATIC,319,146,44,8 COMBOBOX IDC_COMBO4,319,155,89,99,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP GROUPBOX "Plugins",IDC_STATIC,5,177,408,141,0,WS_EX_TRANSPARENT PUSHBUTTON "<<",IDC_BUTTON5,11,191,18,13 @@ -2293,9 +2293,9 @@ EDITTEXT IDC_EDIT_VOLRAMP_SAMPLES_DOWN,90,90,90,12,ES_AUTOHSCROLL | ES_READONLY PUSHBUTTON "&Reset to Defaults",IDC_BUTTON1,12,110,72,14 GROUPBOX "Behaviour",IDC_STATIC,6,150,276,30 - LTEXT "&Stereo Separation:",IDC_STATIC,12,162,62,8 - CONTROL "",IDC_SLIDER_STEREOSEP,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,78,162,54,12 - LTEXT "100%",IDC_TEXT_STEREOSEP,132,162,36,8 + LTEXT "&Stereo Separation:",IDC_STATIC,12,162,72,8 + CONTROL "",IDC_SLIDER_STEREOSEP,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,86,162,54,12 + LTEXT "100%",IDC_TEXT_STEREOSEP,140,162,36,8 GROUPBOX "Pre-1.17RC3 mixing levels",IDC_STATIC,6,186,276,72 CONTROL "Soft &Panning",IDC_CHECK_SOFTPAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,204,66,12 LTEXT "Sample Pre-A&mp:",IDC_STATIC,102,204,60,12,SS_CENTERIMAGE @@ -2388,7 +2388,7 @@ IDD_CONTROL_SAMPLES, DIALOG BEGIN LEFTMARGIN, 2 - RIGHTMARGIN, 546 + RIGHTMARGIN, 552 BOTTOMMARGIN, 104 END |
From: <sv...@op...> - 2024-11-10 16:08:48
|
Author: sagamusix Date: Sun Nov 10 17:08:39 2024 New Revision: 22143 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22143 Log: [Imp] On Vista and Wine 3.13 and newer, use Task Dialog for message boxes with "don't show again" checkbox. [Reg] On older systems, these messages are now always shown only once. Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/resource.h Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 16:40:44 2024 (r22142) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 17:08:39 2024 (r22143) @@ -25,6 +25,10 @@ #include "../soundlib/mod_specifications.h" #include "../soundlib/plugins/PlugInterface.h" +#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) +#include <afxtaskdialog.h> +#endif + OPENMPT_NAMESPACE_BEGIN @@ -1549,33 +1553,20 @@ /////////////////////////////////////////////////////////////////////////////////////// // Messagebox with 'don't show again'-option. -class CMsgBoxHidable : public DialogBase -{ -public: - CMsgBoxHidable(const TCHAR *strMsg, bool checkStatus = true, CWnd* pParent = NULL); - enum { IDD = IDD_MSGBOX_HIDABLE }; - - const TCHAR *m_StrMsg; - int m_nCheckStatus; -protected: - void DoDataExchange(CDataExchange* pDX) override; // DDX/DDV support - BOOL OnInitDialog() override; -}; - - struct MsgBoxHidableMessage { + const TCHAR *mainTitle; const TCHAR *message; - uint32 mask; - bool defaultDontShowAgainStatus; // true for don't show again, false for show again. + const uint32 mask; + const bool defaultDontShowAgainStatus; // true for don't show again, false for show again. }; static constexpr MsgBoxHidableMessage HidableMessages[] = { - { _T("Note: First two bytes of oneshot samples are silenced for ProTracker compatibility."), 1, true }, - { _T("Hint: To create IT-files without MPT-specific extensions included, try compatibility export from File-menu."), 1 << 1, true }, - { _T("Hint: To create XM-files without MPT-specific extensions included, try compatibility export from File-menu."), 1 << 3, true }, - { _T("Warning: The exported file will not contain any of MPT's file format hacks."), 1 << 4, true }, + { _T("Compatibility Notice"), _T("The first two bytes of oneshot samples are silenced for ProTracker compatibility."), 1, true }, + { _T("Compatibility Hint"), _T("To create IT files without OpenMPT-specific extensions included, try compatibility export from File menu."), 1 << 1, true }, + { _T("Compatibility Hint"), _T("To create XM files without OpenMPT-specific extensions included, try compatibility export from File menu."), 1 << 3, true }, + { _T("Compatibility Notice"), _T("The exported file will not contain any of OpenMPT's file format hacks."), 1 << 4, true }, }; static_assert(mpt::array_size<decltype(HidableMessages)>::size == enMsgBoxHidableMessage_count); @@ -1585,41 +1576,29 @@ // controls the show/don't show-flags. void MsgBoxHidable(enMsgBoxHidableMessage enMsg) { - // Check whether the message should be shown. - if((TrackerSettings::Instance().gnMsgBoxVisiblityFlags & HidableMessages[enMsg].mask) == 0) + const auto &msg = HidableMessages[enMsg]; + if((TrackerSettings::Instance().gnMsgBoxVisiblityFlags & msg.mask) == 0) return; - // Show dialog. - CMsgBoxHidable dlg(HidableMessages[enMsg].message, HidableMessages[enMsg].defaultDontShowAgainStatus); - dlg.DoModal(); - - // Update visibility flags. - const uint32 mask = HidableMessages[enMsg].mask; - if(dlg.m_nCheckStatus == BST_CHECKED) - TrackerSettings::Instance().gnMsgBoxVisiblityFlags &= ~mask; - else - TrackerSettings::Instance().gnMsgBoxVisiblityFlags |= mask; -} - - -CMsgBoxHidable::CMsgBoxHidable(const TCHAR *strMsg, bool checkStatus, CWnd* pParent) - : DialogBase(CMsgBoxHidable::IDD, pParent) - , m_StrMsg(strMsg) - , m_nCheckStatus((checkStatus) ? BST_CHECKED : BST_UNCHECKED) -{} - -BOOL CMsgBoxHidable::OnInitDialog() -{ - DialogBase::OnInitDialog(); - SetDlgItemText(IDC_MESSAGETEXT, m_StrMsg); - SetWindowText(AfxGetAppName()); - return TRUE; -} +#if MPT_WINNT_AT_LEAST(MPT_WIN_VISTA) + if(CTaskDialog::IsSupported() + && !(mpt::OS::Windows::IsWine() && theApp.GetWineVersion()->Version().IsBefore(mpt::OS::Wine::Version(3, 13, 0)))) + { + CTaskDialog taskDialog(msg.message, msg.mainTitle ? CString{msg.mainTitle} : CString{}, AfxGetAppName(), TDCBF_OK_BUTTON); + taskDialog.SetVerificationCheckboxText(_T("Do not show this message again")); + taskDialog.SetVerificationCheckbox(msg.defaultDontShowAgainStatus); + taskDialog.DoModal(); -void CMsgBoxHidable::DoDataExchange(CDataExchange* pDX) -{ - DialogBase::DoDataExchange(pDX); - DDX_Check(pDX, IDC_DONTSHOWAGAIN, m_nCheckStatus); + if(taskDialog.GetVerificationCheckboxState()) + TrackerSettings::Instance().gnMsgBoxVisiblityFlags &= ~msg.mask; + else + TrackerSettings::Instance().gnMsgBoxVisiblityFlags |= msg.mask; + } else +#endif + { + Reporting::Information(msg.message, msg.mainTitle ? CString{msg.mainTitle} : CString{}); + TrackerSettings::Instance().gnMsgBoxVisiblityFlags |= msg.mask; + } } Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 16:40:44 2024 (r22142) +++ trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 17:08:39 2024 (r22143) @@ -3339,16 +3339,6 @@ // Dialog // -IDD_MSGBOX_HIDABLE DIALOGEX 0, 0, 187, 71 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,150,50,30,14 - PUSHBUTTON "Cancel",IDCANCEL,111,49,30,14,NOT WS_VISIBLE - CONTROL "Don't show this again.",IDC_DONTSHOWAGAIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,54,90,10 - LTEXT "Static",IDC_MESSAGETEXT,7,7,173,40 -END - IDD_MIDIPARAMCONTROL DIALOGEX 0, 0, 413, 247 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "MIDI Mapping" @@ -3492,14 +3482,6 @@ #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO BEGIN - IDD_MSGBOX_HIDABLE, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 180 - TOPMARGIN, 7 - BOTTOMMARGIN, 64 - END - IDD_MIDIPARAMCONTROL, DIALOG BEGIN RIGHTMARGIN, 409 Modified: trunk/OpenMPT/mptrack/resource.h ============================================================================== --- trunk/OpenMPT/mptrack/resource.h Sun Nov 10 16:40:44 2024 (r22142) +++ trunk/OpenMPT/mptrack/resource.h Sun Nov 10 17:08:39 2024 (r22143) @@ -95,7 +95,6 @@ #define IDD_MIXSAMPLES 513 #define IDS_ERR_TUNING_SERIALISATION 514 #define IDD_MIDIPARAMCONTROL 515 -#define IDD_MSGBOX_HIDABLE 516 #define IDD_ADDSILENCE 517 #define IDD_OPLEXPORT 518 #define IDD_OPL_PARAMS 520 @@ -802,8 +801,6 @@ #define IDC_EDIT_STRETCHPARAMS 2338 #define IDC_MIDI_MACRO_CONTROL 2339 #define IDC_MIDIPLAYPATTERNONMIDIIN 2340 -#define IDC_DONTSHOWAGAIN 2341 -#define IDC_MESSAGETEXT 2342 #define IDC_SAMPLE_DCOFFSET 2343 #define IDC_OPTIONS_DIR_MODS 2344 #define IDC_OPTIONS_DIR_SAMPS 2345 |
From: <sv...@op...> - 2024-11-10 15:40:56
|
Author: sagamusix Date: Sun Nov 10 16:40:44 2024 New Revision: 22142 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22142 Log: [Ref] Clean up CModDoc::InitializeMod. Modified: trunk/OpenMPT/mptrack/Moddoc.cpp Modified: trunk/OpenMPT/mptrack/Moddoc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp Sun Nov 10 16:24:04 2024 (r22141) +++ trunk/OpenMPT/mptrack/Moddoc.cpp Sun Nov 10 16:40:44 2024 (r22142) @@ -182,13 +182,9 @@ if (!CDocument::OnNewDocument()) return FALSE; m_SndFile.Create(FileReader(), CSoundFile::loadCompleteModule, this); - m_SndFile.ChangeModTypeTo(CTrackApp::GetDefaultDocType()); - - theApp.GetDefaultMidiMacro(m_SndFile.m_MidiCfg); - m_SndFile.m_SongFlags.set((SONG_LINEARSLIDES | SONG_ISAMIGA) & m_SndFile.GetModSpecifications().songFlags); + InitializeMod(); ReinitRecordState(); - InitializeMod(); SetModified(false); return TRUE; } @@ -617,89 +613,79 @@ void CModDoc::InitializeMod() { - // New module ? - if (!m_SndFile.GetNumChannels()) + const auto defaultType = CTrackApp::GetDefaultDocType(); + m_SndFile.ChangeModTypeTo((defaultType == MOD_TYPE_MOD_PC) ? MOD_TYPE_MOD : defaultType); + + theApp.GetDefaultMidiMacro(m_SndFile.m_MidiCfg); + m_SndFile.m_SongFlags.set(SONG_LINEARSLIDES & m_SndFile.GetModSpecifications().songFlags); + + switch(defaultType) { - switch(GetModType()) - { - case MOD_TYPE_MOD: - m_SndFile.ChnSettings.resize(4); - break; - case MOD_TYPE_MOD_PC: - m_SndFile.ChangeModTypeTo(MOD_TYPE_MOD); - m_SndFile.ChnSettings.resize(8); - break; - case MOD_TYPE_S3M: - m_SndFile.ChnSettings.resize(16); - break; - default: - m_SndFile.ChnSettings.resize(32); - break; - } + case MOD_TYPE_MOD: + m_SndFile.ChnSettings.resize(4); + break; + case MOD_TYPE_MOD_PC: + m_SndFile.ChnSettings.resize(8); + break; + case MOD_TYPE_S3M: + m_SndFile.ChnSettings.resize(16); + break; + default: + m_SndFile.ChnSettings.resize(32); + break; + } - SetDefaultChannelColors(); + SetDefaultChannelColors(); - if(GetModType() == MOD_TYPE_MPT) - { - m_SndFile.m_nTempoMode = TempoMode::Modern; - m_SndFile.m_SongFlags.set(SONG_EXFILTERRANGE); - } - m_SndFile.SetDefaultPlaybackBehaviour(GetModType()); + if(GetModType() == MOD_TYPE_MPT) + { + m_SndFile.m_nTempoMode = TempoMode::Modern; + m_SndFile.m_SongFlags.set(SONG_EXFILTERRANGE); + } + m_SndFile.SetDefaultPlaybackBehaviour(GetModType()); - // Refresh mix levels now that the correct mod type has been set - m_SndFile.SetMixLevels(m_SndFile.GetModSpecifications().defaultMixLevels); + // Refresh mix levels now that the correct mod type has been set + m_SndFile.SetMixLevels(m_SndFile.GetModSpecifications().defaultMixLevels); - m_SndFile.Order().assign(1, 0); - if (!m_SndFile.Patterns.IsValidPat(0)) - { - m_SndFile.Patterns.Insert(0, 64); - } + m_SndFile.Order().assign(1, 0); + if(!m_SndFile.Patterns.IsValidPat(0)) + m_SndFile.Patterns.Insert(0, 64); - Clear(m_SndFile.m_szNames); + Clear(m_SndFile.m_szNames); - m_SndFile.Order().SetDefaultTempoInt(125); - m_SndFile.Order().SetDefaultSpeed(6); + m_SndFile.Order().SetDefaultTempoInt(125); + m_SndFile.Order().SetDefaultSpeed(6); - // Set up mix levels - m_SndFile.m_PlayState.m_nGlobalVolume = m_SndFile.m_nDefaultGlobalVolume = MAX_GLOBAL_VOLUME; - m_SndFile.m_nSamplePreAmp = m_SndFile.m_nVSTiVolume = 48; - // Setup LRRL panning scheme for MODs - m_SndFile.SetupMODPanning(); + // Set up mix levels + m_SndFile.m_PlayState.m_nGlobalVolume = m_SndFile.m_nDefaultGlobalVolume = MAX_GLOBAL_VOLUME; + m_SndFile.m_nSamplePreAmp = m_SndFile.m_nVSTiVolume = 48; + // Setup LRRL panning scheme for MODs + m_SndFile.SetupMODPanning(); - if(GetModType() == MOD_TYPE_MOD) - { - const bool isAmiga = GetNumChannels() == 4; - m_SndFile.m_SongFlags.set(SONG_ISAMIGA | SONG_AMIGALIMITS | SONG_PT_MODE, isAmiga); - m_SndFile.m_playBehaviour.set(kMODOneShotLoops, isAmiga); - m_SndFile.m_playBehaviour.set(kMODSampleSwap, isAmiga); - m_SndFile.m_playBehaviour.set(kMODOutOfRangeNoteDelay, isAmiga); - m_SndFile.m_playBehaviour.set(kMODTempoOnSecondTick, isAmiga); - m_SndFile.m_playBehaviour.set(kFT2MODTremoloRampWaveform); - } - } - if (!m_SndFile.m_nSamples) + if(GetModType() == MOD_TYPE_MOD) { - m_SndFile.m_szNames[1] = "untitled"; - m_SndFile.m_nSamples = (GetModType() == MOD_TYPE_MOD) ? 31 : 1; + const bool isAmiga = (defaultType != MOD_TYPE_MOD_PC); + m_SndFile.m_SongFlags.set(SONG_ISAMIGA | SONG_AMIGALIMITS | SONG_PT_MODE, isAmiga); + m_SndFile.m_playBehaviour.set(kMODOneShotLoops, isAmiga); + m_SndFile.m_playBehaviour.set(kMODSampleSwap, isAmiga); + m_SndFile.m_playBehaviour.set(kMODOutOfRangeNoteDelay, isAmiga); + m_SndFile.m_playBehaviour.set(kMODTempoOnSecondTick, isAmiga); + m_SndFile.m_playBehaviour.set(kFT2MODTremoloRampWaveform); + } - SampleEdit::ResetSamples(m_SndFile, SampleEdit::SmpResetInit); + m_SndFile.m_szNames[1] = "untitled"; + m_SndFile.m_nSamples = (GetModType() == MOD_TYPE_MOD) ? 31 : 1; - m_SndFile.GetSample(1).Initialize(m_SndFile.GetType()); + SampleEdit::ResetSamples(m_SndFile, SampleEdit::SmpResetInit); - if ((!m_SndFile.m_nInstruments) && (m_SndFile.GetType() & MOD_TYPE_XM)) - { - if(m_SndFile.AllocateInstrument(1, 1)) - { - m_SndFile.m_nInstruments = 1; - InitializeInstrument(m_SndFile.Instruments[1]); - } - } - if (m_SndFile.GetType() & (MOD_TYPE_IT | MOD_TYPE_MPT | MOD_TYPE_XM)) - { - m_SndFile.m_SongFlags.set(SONG_LINEARSLIDES); - } + m_SndFile.GetSample(1).Initialize(m_SndFile.GetType()); + + if(m_SndFile.GetType() == MOD_TYPE_XM) + { + if(ModInstrument *ins = m_SndFile.AllocateInstrument(1, 1)) + InitializeInstrument(ins); } - m_SndFile.ResetPlayPos(); + m_SndFile.m_songArtist = TrackerSettings::Instance().defaultArtist; } |
From: <sv...@op...> - 2024-11-10 15:24:16
|
Author: sagamusix Date: Sun Nov 10 16:24:04 2024 New Revision: 22141 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22141 Log: [Imp] When creating a new MOD file, it is now possible to specifiy whether it should be an Amiga MOD (4 channels, enable PT quirks and Amiga resampler) or a PC MOD (8 channels, disable PT quirks and Amiga resampler). Fixes https://bugs.openmpt.org/view.php?id=1830 Modified: trunk/OpenMPT/mptrack/GeneralConfigDlg.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/resource.h trunk/OpenMPT/soundlib/Snd_defs.h Modified: trunk/OpenMPT/mptrack/GeneralConfigDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/GeneralConfigDlg.cpp Sun Nov 10 15:58:27 2024 (r22140) +++ trunk/OpenMPT/mptrack/GeneralConfigDlg.cpp Sun Nov 10 16:24:04 2024 (r22141) @@ -95,13 +95,14 @@ m_defaultArtist.SetWindowText(mpt::ToCString(TrackerSettings::Instance().defaultArtist.Get())); - const struct + static constexpr struct { MODTYPE type; const TCHAR *str; } formats[] = { - { MOD_TYPE_MOD, _T("MOD") }, + { MOD_TYPE_MOD, _T("MOD (Amiga)") }, + { MOD_TYPE_MOD_PC, _T("MOD (PC)")}, { MOD_TYPE_XM, _T("XM") }, { MOD_TYPE_S3M, _T("S3M") }, { MOD_TYPE_IT, _T("IT") }, Modified: trunk/OpenMPT/mptrack/Moddoc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp Sun Nov 10 15:58:27 2024 (r22140) +++ trunk/OpenMPT/mptrack/Moddoc.cpp Sun Nov 10 16:24:04 2024 (r22141) @@ -625,6 +625,10 @@ case MOD_TYPE_MOD: m_SndFile.ChnSettings.resize(4); break; + case MOD_TYPE_MOD_PC: + m_SndFile.ChangeModTypeTo(MOD_TYPE_MOD); + m_SndFile.ChnSettings.resize(8); + break; case MOD_TYPE_S3M: m_SndFile.ChnSettings.resize(16); break; @@ -661,6 +665,17 @@ m_SndFile.m_nSamplePreAmp = m_SndFile.m_nVSTiVolume = 48; // Setup LRRL panning scheme for MODs m_SndFile.SetupMODPanning(); + + if(GetModType() == MOD_TYPE_MOD) + { + const bool isAmiga = GetNumChannels() == 4; + m_SndFile.m_SongFlags.set(SONG_ISAMIGA | SONG_AMIGALIMITS | SONG_PT_MODE, isAmiga); + m_SndFile.m_playBehaviour.set(kMODOneShotLoops, isAmiga); + m_SndFile.m_playBehaviour.set(kMODSampleSwap, isAmiga); + m_SndFile.m_playBehaviour.set(kMODOutOfRangeNoteDelay, isAmiga); + m_SndFile.m_playBehaviour.set(kMODTempoOnSecondTick, isAmiga); + m_SndFile.m_playBehaviour.set(kFT2MODTremoloRampWaveform); + } } if (!m_SndFile.m_nSamples) { Modified: trunk/OpenMPT/mptrack/Mptrack.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp Sun Nov 10 15:58:27 2024 (r22140) +++ trunk/OpenMPT/mptrack/Mptrack.cpp Sun Nov 10 16:24:04 2024 (r22141) @@ -620,15 +620,16 @@ BEGIN_MESSAGE_MAP(CTrackApp, CWinApp) //{{AFX_MSG_MAP(CTrackApp) - ON_COMMAND(ID_FILE_NEW, &CTrackApp::OnFileNew) - ON_COMMAND(ID_FILE_NEWMOD, &CTrackApp::OnFileNewMOD) - ON_COMMAND(ID_FILE_NEWS3M, &CTrackApp::OnFileNewS3M) - ON_COMMAND(ID_FILE_NEWXM, &CTrackApp::OnFileNewXM) - ON_COMMAND(ID_FILE_NEWIT, &CTrackApp::OnFileNewIT) - ON_COMMAND(ID_NEW_MPT, &CTrackApp::OnFileNewMPT) - ON_COMMAND(ID_FILE_OPEN, &CTrackApp::OnFileOpen) - ON_COMMAND(ID_FILE_CLOSEALL, &CTrackApp::OnFileCloseAll) - ON_COMMAND(ID_APP_ABOUT, &CTrackApp::OnAppAbout) + ON_COMMAND(ID_FILE_NEW, &CTrackApp::OnFileNew) + ON_COMMAND(ID_FILE_NEWMOD, &CTrackApp::OnFileNewMOD_Amiga) + ON_COMMAND(ID_FILE_NEWMOD_PC, &CTrackApp::OnFileNewMOD_PC) + ON_COMMAND(ID_FILE_NEWS3M, &CTrackApp::OnFileNewS3M) + ON_COMMAND(ID_FILE_NEWXM, &CTrackApp::OnFileNewXM) + ON_COMMAND(ID_FILE_NEWIT, &CTrackApp::OnFileNewIT) + ON_COMMAND(ID_NEW_MPT, &CTrackApp::OnFileNewMPT) + ON_COMMAND(ID_FILE_OPEN, &CTrackApp::OnFileOpen) + ON_COMMAND(ID_FILE_CLOSEALL, &CTrackApp::OnFileCloseAll) + ON_COMMAND(ID_APP_ABOUT, &CTrackApp::OnAppAbout) ON_UPDATE_COMMAND_UI(ID_FILE_CLOSEALL, &CTrackApp::OnUpdateAnyDocsOpen) //}}AFX_MSG_MAP END_MESSAGE_MAP() Modified: trunk/OpenMPT/mptrack/Mptrack.h ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h Sun Nov 10 15:58:27 2024 (r22140) +++ trunk/OpenMPT/mptrack/Mptrack.h Sun Nov 10 16:24:04 2024 (r22141) @@ -329,7 +329,8 @@ CModDoc *NewDocument(MODTYPE newType = MOD_TYPE_NONE); afx_msg void OnFileNew() { NewDocument(); } - afx_msg void OnFileNewMOD() { NewDocument(MOD_TYPE_MOD); } + afx_msg void OnFileNewMOD_Amiga() { NewDocument(MOD_TYPE_MOD); } + afx_msg void OnFileNewMOD_PC() { NewDocument(MOD_TYPE_MOD_PC); } afx_msg void OnFileNewS3M() { NewDocument(MOD_TYPE_S3M); } afx_msg void OnFileNewXM() { NewDocument(MOD_TYPE_XM); } afx_msg void OnFileNewIT() { NewDocument(MOD_TYPE_IT); } Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp ============================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp Sun Nov 10 15:58:27 2024 (r22140) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp Sun Nov 10 16:24:04 2024 (r22141) @@ -77,12 +77,18 @@ mpt::ustring SettingsModTypeToString(MODTYPE modtype) { - return CSoundFile::GetModSpecifications(modtype).GetFileExtension(); + if(modtype == MOD_TYPE_MOD_PC) + return UL_("mod-pc"); + else + return CSoundFile::GetModSpecifications(modtype).GetFileExtension(); } MODTYPE SettingsStringToModType(const mpt::ustring &str) { - return CModSpecifications::ExtensionToType(str); + if(str == UL_("mod-pc")) + return MOD_TYPE_MOD_PC; + else + return CModSpecifications::ExtensionToType(str); } Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 15:58:27 2024 (r22140) +++ trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 16:24:04 2024 (r22141) @@ -2778,7 +2778,8 @@ MENUITEM "&IT", ID_FILE_NEWIT MENUITEM "&XM", ID_FILE_NEWXM MENUITEM "&S3M", ID_FILE_NEWS3M - MENUITEM "M&OD", ID_FILE_NEWMOD + MENUITEM "M&OD (Amiga)", ID_FILE_NEWMOD + MENUITEM "MOD (&PC)", ID_FILE_NEWMOD_PC MENUITEM "Open&MPT Module", ID_NEW_MPT END MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN Modified: trunk/OpenMPT/mptrack/resource.h ============================================================================== --- trunk/OpenMPT/mptrack/resource.h Sun Nov 10 15:58:27 2024 (r22140) +++ trunk/OpenMPT/mptrack/resource.h Sun Nov 10 16:24:04 2024 (r22141) @@ -1148,6 +1148,7 @@ // From here: Command range [ID_PLUGSELECT, ID_PLUGSELECT + MAX_MIXPLUGINS] #define ID_VSTMACRO_INFO 36002 #define ID_VSTINPUT_INFO 36003 +#define ID_FILE_NEWMOD_PC 36004 #define ID_APPROX_BPM 36007 #define ID_FACTORY_MENU 36008 #define ID_PLUG_BYPASS 36009 Modified: trunk/OpenMPT/soundlib/Snd_defs.h ============================================================================== --- trunk/OpenMPT/soundlib/Snd_defs.h Sun Nov 10 15:58:27 2024 (r22140) +++ trunk/OpenMPT/soundlib/Snd_defs.h Sun Nov 10 16:24:04 2024 (r22141) @@ -104,6 +104,8 @@ MOD_TYPE_STP = 0x8000000, MOD_TYPE_PLM = 0x10000000, MOD_TYPE_SFX = 0x20000000, + + MOD_TYPE_MOD_PC = MOD_TYPE_MOD | MOD_TYPE_XM, }; DECLARE_FLAGSET(MODTYPE) |
From: <sv...@op...> - 2024-11-10 14:58:40
|
Author: sagamusix Date: Sun Nov 10 15:58:27 2024 New Revision: 22140 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22140 Log: [Imp] Add shortcut for browsing template modules. Modified: trunk/OpenMPT/mptrack/CommandSet.cpp trunk/OpenMPT/mptrack/CommandSet.h trunk/OpenMPT/mptrack/InputHandler.cpp trunk/OpenMPT/mptrack/MainFrm.cpp Modified: trunk/OpenMPT/mptrack/CommandSet.cpp ============================================================================== --- trunk/OpenMPT/mptrack/CommandSet.cpp Sun Nov 10 15:47:09 2024 (r22139) +++ trunk/OpenMPT/mptrack/CommandSet.cpp Sun Nov 10 15:58:27 2024 (r22140) @@ -1395,9 +1395,10 @@ {2100, kcGotoParamColumn, _T("Go to effect parameter column")}, {2101, kcContextMenu, _T("Open Context Menu")}, {2102, kcOrderlistStreamExport, _T("Stream Export")}, - {2103, kcToggleVisibilityInstrColumn, _T("Toggle instrument column visibility") }, - {2104, kcToggleVisibilityVolumeColumn, _T("Toggle volume column visibility") }, - {2105, kcToggleVisibilityEffectColumn, _T("Toggle effect column visibility") }, + {2103, kcToggleVisibilityInstrColumn, _T("Toggle instrument column visibility")}, + {2104, kcToggleVisibilityVolumeColumn, _T("Toggle volume column visibility")}, + {2105, kcToggleVisibilityEffectColumn, _T("Toggle effect column visibility")}, + {2106, kcFileOpenTemplate, _T("File/Open Template")}, }; // clang-format on Modified: trunk/OpenMPT/mptrack/CommandSet.h ============================================================================== --- trunk/OpenMPT/mptrack/CommandSet.h Sun Nov 10 15:47:09 2024 (r22139) +++ trunk/OpenMPT/mptrack/CommandSet.h Sun Nov 10 15:58:27 2024 (r22140) @@ -82,6 +82,7 @@ kcFileSaveAs, kcFileSaveCopy, kcFileSaveTemplate, + kcFileOpenTemplate, kcFileSaveAsWave, kcFileSaveAsMP3, kcFileSaveMidi, Modified: trunk/OpenMPT/mptrack/InputHandler.cpp ============================================================================== --- trunk/OpenMPT/mptrack/InputHandler.cpp Sun Nov 10 15:47:09 2024 (r22139) +++ trunk/OpenMPT/mptrack/InputHandler.cpp Sun Nov 10 15:58:27 2024 (r22140) @@ -388,22 +388,23 @@ { static constexpr std::tuple<UINT, CommandID, const TCHAR *> MenuItems[] = { - { ID_FILE_NEW, kcFileNew, _T("&New") }, - { ID_FILE_OPEN, kcFileOpen, _T("&Open...") }, - { ID_FILE_OPENTEMPLATE, kcNull, _T("Open &Template") }, - { ID_FILE_CLOSE, kcFileClose, _T("&Close") }, - { ID_FILE_CLOSEALL, kcFileCloseAll, _T("C&lose All") }, - { ID_FILE_APPENDMODULE, kcFileAppend, _T("Appen&d Module...") }, - { ID_FILE_SAVE, kcFileSave, _T("&Save") }, - { ID_FILE_SAVE_AS, kcFileSaveAs, _T("Save &As...") }, - { ID_FILE_SAVE_COPY, kcFileSaveCopy, _T("Save Cop&y...") }, - { ID_FILE_SAVEASTEMPLATE, kcFileSaveTemplate, _T("Sa&ve as Template") }, - { ID_FILE_SAVEASWAVE, kcFileSaveAsWave, _T("Stream Export (&WAV, FLAC, MP3, etc.)...") }, - { ID_FILE_SAVEMIDI, kcFileSaveMidi, _T("Export as M&IDI...") }, - { ID_FILE_SAVEOPL, kcFileSaveOPL, _T("Export O&PL Register Dump...") }, - { ID_FILE_SAVECOMPAT, kcFileExportCompat, _T("Compatibility &Export...") }, - { ID_IMPORT_MIDILIB, kcFileImportMidiLib, _T("Import &MIDI Library...") }, - { ID_ADD_SOUNDBANK, kcFileAddSoundBank, _T("Add Sound &Bank...") }, + { ID_FILE_NEW, kcFileNew, _T("&New") }, + { ID_FILE_OPEN, kcFileOpen, _T("&Open...") }, + { ID_FILE_OPENTEMPLATE, kcNull, _T("Open &Template") }, + { ID_FILE_OPENTEMPLATE_LASTINRANGE, kcFileOpenTemplate, _T("&Browse...") }, + { ID_FILE_CLOSE, kcFileClose, _T("&Close") }, + { ID_FILE_CLOSEALL, kcFileCloseAll, _T("C&lose All") }, + { ID_FILE_APPENDMODULE, kcFileAppend, _T("Appen&d Module...") }, + { ID_FILE_SAVE, kcFileSave, _T("&Save") }, + { ID_FILE_SAVE_AS, kcFileSaveAs, _T("Save &As...") }, + { ID_FILE_SAVE_COPY, kcFileSaveCopy, _T("Save Cop&y...") }, + { ID_FILE_SAVEASTEMPLATE, kcFileSaveTemplate, _T("Sa&ve as Template") }, + { ID_FILE_SAVEASWAVE, kcFileSaveAsWave, _T("Stream Export (&WAV, FLAC, MP3, etc.)...") }, + { ID_FILE_SAVEMIDI, kcFileSaveMidi, _T("Export as M&IDI...") }, + { ID_FILE_SAVEOPL, kcFileSaveOPL, _T("Export O&PL Register Dump...") }, + { ID_FILE_SAVECOMPAT, kcFileExportCompat, _T("Compatibility &Export...") }, + { ID_IMPORT_MIDILIB, kcFileImportMidiLib, _T("Import &MIDI Library...") }, + { ID_ADD_SOUNDBANK, kcFileAddSoundBank, _T("Add Sound &Bank...") }, { ID_PLAYER_PLAY, kcPlayPauseSong, _T("Pause / &Resume") }, { ID_PLAYER_PLAYFROMSTART, kcPlaySongFromStart, _T("&Play from Start") }, @@ -474,6 +475,7 @@ static constexpr int MenuItems[] = { ID_FILE_OPEN, + ID_FILE_OPENTEMPLATE_LASTINRANGE, ID_FILE_APPENDMODULE, ID_FILE_CLOSE, ID_FILE_CLOSEALL, Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 15:47:09 2024 (r22139) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 15:58:27 2024 (r22140) @@ -3095,7 +3095,7 @@ } else { AppendMenu(hMenu, MF_SEPARATOR, 0, 0); - AppendMenu(hMenu, MF_STRING, idRangeBegin + maxCount, _T("Browse...")); + AppendMenu(hMenu, MF_STRING, idRangeBegin + maxCount, _T("&Browse...")); } } |
From: <sv...@op...> - 2024-11-10 14:47:21
|
Author: sagamusix Date: Sun Nov 10 15:47:09 2024 New Revision: 22139 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22139 Log: [Imp] Show new toolbar visbility options in main menu as well. Modified: trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 14:47:34 2024 (r22138) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Sun Nov 10 15:47:09 2024 (r22139) @@ -249,6 +249,14 @@ CreateTemplateModulesMenu(); UpdateMRUList(); + auto [toolbarMenu, toolbarMenuStartPos] = FindMenuItemByCommand(*GetMenu(), ID_VIEW_TOOLBAR); + MPT_ASSERT(toolbarMenu); + if(toolbarMenu) + { + toolbarMenu->DeleteMenu(toolbarMenuStartPos, MF_BYPOSITION); + AddToolBarMenuEntries(*toolbarMenu); + } + #ifdef MPT_ENABLE_PLAYBACK_TEST_MENU CMenu debugMenu; debugMenu.CreatePopupMenu(); @@ -2517,23 +2525,30 @@ void CMainFrame::ShowToolbarMenu(CPoint screenPt) { - CMenu menu, subMenu; - if(!menu.CreatePopupMenu() || !subMenu.CreatePopupMenu()) + CMenu menu; + if(!menu.CreatePopupMenu()) return; + AddToolBarMenuEntries(menu); + menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, screenPt.x, screenPt.y, this); +} + + +void CMainFrame::AddToolBarMenuEntries(CMenu &menu) +{ menu.AppendMenu(MF_STRING, ID_VIEW_TOOLBAR, m_InputHandler->GetMenuText(ID_VIEW_TOOLBAR)); menu.AppendMenu(MF_STRING, IDD_TREEVIEW, m_InputHandler->GetMenuText(IDD_TREEVIEW)); - + const FlagSet<MainToolBarItem> visibleItems = TrackerSettings::Instance().mainToolBarVisibleItems.Get(); + CMenu subMenu; + VERIFY(subMenu.CreatePopupMenu()); subMenu.AppendMenu(MF_STRING | (visibleItems[MainToolBarItem::Octave] ? MF_CHECKED : 0), ID_MAINBAR_SHOW_OCTAVE, _T("Base &Octave")); subMenu.AppendMenu(MF_STRING | (visibleItems[MainToolBarItem::Tempo] ? MF_CHECKED : 0), ID_MAINBAR_SHOW_TEMPO, _T("&Tempo")); subMenu.AppendMenu(MF_STRING | (visibleItems[MainToolBarItem::Speed] ? MF_CHECKED : 0), ID_MAINBAR_SHOW_SPEED, _T("Ticks/&Row")); subMenu.AppendMenu(MF_STRING | (visibleItems[MainToolBarItem::RowsPerBeat] ? MF_CHECKED : 0), ID_MAINBAR_SHOW_ROWSPERBEAT, _T("Rows Per &Beat")); subMenu.AppendMenu(MF_STRING | (visibleItems[MainToolBarItem::GlobalVolume] ? MF_CHECKED : 0), ID_MAINBAR_SHOW_GLOBALVOLUME, _T("&Global Volume")); subMenu.AppendMenu(MF_STRING | (visibleItems[MainToolBarItem::VUMeter] ? MF_CHECKED : 0), ID_MAINBAR_SHOW_VUMETER, _T("&VU Meters")); - menu.AppendMenu(MF_POPUP, reinterpret_cast<UINT_PTR>(subMenu.m_hMenu), _T("Main Toolbar &Items")); - - menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, screenPt.x, screenPt.y, this); + menu.AppendMenu(MF_POPUP, reinterpret_cast<UINT_PTR>(subMenu.Detach()), _T("Main Toolbar &Items")); } @@ -3101,19 +3116,21 @@ } -// Hack-ish way to get the file menu (this is necessary because the MDI document icon next to the File menu is a sub menu, too). -CMenu *CMainFrame::GetFileMenu() const +std::pair<CMenu *, int> CMainFrame::FindMenuItemByCommand(CMenu &menu, UINT commandID) { - CMenu *mainMenu = GetMenu(); - CMenu *fileMenu = mainMenu ? mainMenu->GetSubMenu(0) : nullptr; - if(fileMenu) - { - if(fileMenu->GetMenuItemID(1) != ID_FILE_OPEN) - fileMenu = mainMenu->GetSubMenu(1); - ASSERT(fileMenu->GetMenuItemID(1) == ID_FILE_OPEN); + const int numItems = menu.GetMenuItemCount(); + for(int item = 0; item < numItems; item++) + { + if(menu.GetMenuItemID(item) == commandID) + return {&menu, item}; + CMenu *subMenu = menu.GetSubMenu(item); + if(subMenu != nullptr) + { + if(auto result = FindMenuItemByCommand(*subMenu, commandID); result.first != nullptr) + return result; + } } - ASSERT(fileMenu); - return fileMenu; + return {}; } @@ -3122,35 +3139,23 @@ static_assert(nMaxItemsInTemplateModulesMenu == ID_FILE_OPENTEMPLATE_LASTINRANGE - ID_FILE_OPENTEMPLATE, "Make sure that there's a proper range for menu commands in resources."); HMENU hMenu = CreateFileMenu(nMaxItemsInTemplateModulesMenu, m_TemplateModulePaths, P_("TemplateModules\\"), ID_FILE_OPENTEMPLATE); - CMenu *pFileMenu = GetFileMenu(); - if (hMenu && pFileMenu && m_InputHandler) + auto [fileMenu, position] = FindMenuItemByCommand(*GetMenu(), ID_FILE_OPEN); + if(hMenu && fileMenu && m_InputHandler) { - VERIFY(pFileMenu->RemoveMenu(2, MF_BYPOSITION)); - VERIFY(pFileMenu->InsertMenu(2, MF_BYPOSITION | MF_POPUP, (UINT_PTR)hMenu, m_InputHandler->GetMenuText(ID_FILE_OPENTEMPLATE))); + VERIFY(fileMenu->RemoveMenu(position + 1, MF_BYPOSITION)); + VERIFY(fileMenu->InsertMenu(position + 1, MF_BYPOSITION | MF_POPUP, (UINT_PTR)hMenu, m_InputHandler->GetMenuText(ID_FILE_OPENTEMPLATE))); } else - ASSERT(false); + MPT_ASSERT_NOTREACHED(); } void CMainFrame::UpdateMRUList() { - CMenu *pMenu = GetFileMenu(); - if(!pMenu) return; - - static int firstMenu = -1; - if(firstMenu == -1) - { - int numMenus = pMenu->GetMenuItemCount(); - for(int i = 0; i < numMenus; i++) - { - if(pMenu->GetMenuItemID(i) == ID_MRU_LIST_FIRST) - { - firstMenu = i; - break; - } - } - } + const auto [pMenu, firstMenu] = FindMenuItemByCommand(*GetMenu(), ID_MRU_LIST_FIRST); + MPT_ASSERT(pMenu); + if(!pMenu) + return; for(int i = ID_MRU_LIST_FIRST; i <= ID_MRU_LIST_LAST; i++) { Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 14:47:34 2024 (r22138) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 15:47:09 2024 (r22139) @@ -670,13 +670,12 @@ case ID_FILE_NEW: { auto *mainFrm = CMainFrame::GetMainFrame(); - CMenu *newMenu = mainFrm->GetFileMenu()->GetSubMenu(0); - CMenu *templateMenu = mainFrm->GetFileMenu()->GetSubMenu(2); - const bool hasTemplates = templateMenu->GetMenuItemID(0) != 0; - if(hasTemplates) + auto [newMenu, newPos] = CMainFrame::FindMenuItemByCommand(*mainFrm->GetMenu(), ID_FILE_NEWIT); + auto [templateMenu, templatePos] = CMainFrame::FindMenuItemByCommand(*mainFrm->GetMenu(), ID_FILE_OPENTEMPLATE); + if(templateMenu) newMenu->AppendMenu(MF_POPUP, reinterpret_cast<UINT_PTR>(templateMenu->m_hMenu), _T("&Templates")); newMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pToolBar->rcButton.left, pToolBar->rcButton.bottom, this); - if(hasTemplates) + if(templateMenu) newMenu->RemoveMenu(newMenu->GetMenuItemCount() - 1, MF_BYPOSITION); } break; Modified: trunk/OpenMPT/mptrack/Mainfrm.h ============================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 14:47:34 2024 (r22138) +++ trunk/OpenMPT/mptrack/Mainfrm.h Sun Nov 10 15:47:09 2024 (r22139) @@ -292,7 +292,7 @@ void CreateExampleModulesMenu(); void CreateTemplateModulesMenu(); - CMenu *GetFileMenu() const; + static std::pair<CMenu *, int> FindMenuItemByCommand(CMenu &menu, UINT commandID); // Creates submenu whose items are filenames of files in both // AppDirectory\folderName\ (usually C:\Program Files\OpenMPT\folderName\) @@ -372,6 +372,7 @@ void OpenMenuItemFile(const UINT nId, const bool isTemplateFile); void ShowToolbarMenu(CPoint screenPt); + static void AddToolBarMenuEntries(CMenu &menu); void RecreateImageLists(); Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 14:47:34 2024 (r22138) +++ trunk/OpenMPT/mptrack/mptrack.rc Sun Nov 10 15:47:09 2024 (r22139) @@ -2849,7 +2849,6 @@ POPUP "&Toolbars" BEGIN MENUITEM "&Main", ID_VIEW_TOOLBAR - MENUITEM "&Tree", IDD_TREEVIEW END MENUITEM SEPARATOR MENUITEM "S&etup...", ID_VIEW_OPTIONS |
From: <sv...@op...> - 2024-11-10 13:47:47
|
Author: sagamusix Date: Sun Nov 10 14:47:34 2024 New Revision: 22138 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22138 Log: [Imp] Pattern tab: In sample mode, show default volume also for note-less instruments (adapted from https://github.com/OpenMPT/openmpt/pull/29). Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/View_pat.h Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp Sun Nov 10 13:03:23 2024 (r22137) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp Sun Nov 10 14:47:34 2024 (r22138) @@ -986,13 +986,13 @@ const ModCommand *m = pattern.GetpModCommand(row, static_cast<CHANNELINDEX>(col)); // Should empty volume commands be replaced with a volume command showing the default volume? - const bool drawDefaultVolume = DrawDefaultVolume(m); + const bool drawDefaultVolume = (patternSetupFlags & PATTERN_SHOWDEFAULTVOLUME) && DrawDefaultVolume(*m, sndFile); DWORD dwSpeedUpMask = 0; if(useSpeedUpMask && (m_chnState[col].selectedCols & COLUMN_BITS_SKIP) && (row)) { const ModCommand *mold = m - ncols; - const bool drawOldDefaultVolume = DrawDefaultVolume(mold); + const bool drawOldDefaultVolume = (patternSetupFlags & PATTERN_SHOWDEFAULTVOLUME) && DrawDefaultVolume(*mold, sndFile); if(m->note == mold->note || !m_visibleColumns[PatternCursor::noteColumn]) dwSpeedUpMask |= COLUMN_BITS_NOTE; @@ -1219,6 +1219,27 @@ } +bool CViewPattern::DrawDefaultVolume(const ModCommand &m, const CSoundFile &sndFile) +{ + if(m.instr == 0 || m.volcmd != VOLCMD_NONE || m.command == CMD_VOLUME || m.command == CMD_VOLUME8) + return false; + // In instrument mode, we'd need to know the played for note-less instrument numbers + const bool hasNote = m.IsNote(); + if(sndFile.GetNumInstruments() && !hasNote) + return false; + const SAMPLEINDEX smp = sndFile.GetSampleIndex(m.note, m.instr); + if(smp != 0) + { + const ModSample &sample = sndFile.GetSample(smp); + if(sample.uFlags[SMP_NODEFAULTVOLUME]) + return false; + if(sndFile.GetType() == MOD_TYPE_S3M && !sample.HasSampleData()) + return false; + } + return smp != 0; +} + + void CViewPattern::DrawChannelVUMeter(HDC hdc, int x, int y, UINT nChn) { if(m_chnState[nChn].vuMeter == m_chnState[nChn].vuMeterOld) Modified: trunk/OpenMPT/mptrack/View_pat.h ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.h Sun Nov 10 13:03:23 2024 (r22137) +++ trunk/OpenMPT/mptrack/View_pat.h Sun Nov 10 14:47:34 2024 (r22138) @@ -301,7 +301,7 @@ void DrawDragSel(HDC hdc); void OnDrawDragSel(); // True if default volume should be drawn for a given cell. - static bool DrawDefaultVolume(const ModCommand *m) { return (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_SHOWDEFAULTVOLUME) && m->volcmd == VOLCMD_NONE && m->command != CMD_VOLUME && m->command != CMD_VOLUME8 && m->instr != 0 && m->IsNote(); } + static bool DrawDefaultVolume(const ModCommand &m, const CSoundFile &sndFile); void CursorJump(int distance, bool snap); |
From: <sv...@op...> - 2024-11-10 12:03:30
|
Author: sagamusix Date: Sun Nov 10 13:03:23 2024 New Revision: 22137 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22137 Log: [Mod] Remove code for choosing pattern font size on first run based on DPI. It is no longer required, and was pretty much unable to run anyway because on first run, DPI-awareness is always disabled. Modified: trunk/OpenMPT/mptrack/Mptrack.cpp Modified: trunk/OpenMPT/mptrack/Mptrack.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp Sun Nov 10 13:01:28 2024 (r22136) +++ trunk/OpenMPT/mptrack/Mptrack.cpp Sun Nov 10 13:03:23 2024 (r22137) @@ -1422,10 +1422,6 @@ if(TrackerSettings::Instance().FirstRun) { - // On high-DPI devices, automatically upscale pattern font - FontSetting font = TrackerSettings::Instance().patternFont; - font.size = Clamp(static_cast<int>(HighDPISupport::GetDpiForWindow(m_pMainWnd->m_hWnd)) / 96 - 1, 0, 9); - TrackerSettings::Instance().patternFont = font; new WelcomeDlg(m_pMainWnd); } else { |
From: <sv...@op...> - 2024-11-10 12:01:39
|
Author: sagamusix Date: Sun Nov 10 13:01:28 2024 New Revision: 22136 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22136 Log: [Fix] Fix ANSI builds. Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 03:10:44 2024 (r22135) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 13:01:28 2024 (r22136) @@ -135,7 +135,7 @@ using PLOADICONWITHSCALEDOWN = HRESULT(WINAPI *)(HINSTANCE, PCWSTR, int, int, HICON *); PLOADICONWITHSCALEDOWN LoadIconWithScaleDown = nullptr; if(comctl32.Bind(LoadIconWithScaleDown, "LoadIconWithScaleDown")) - LoadIconWithScaleDown(NULL, IDI_EXCLAMATION, iconSize, iconSize, &m_warnIcon); + LoadIconWithScaleDown(NULL, MAKEINTRESOURCEW(reinterpret_cast<uintptr_t>(IDI_EXCLAMATION)), iconSize, iconSize, &m_warnIcon); } if(!m_warnIcon) m_warnIcon = reinterpret_cast<HICON>(::LoadImage(NULL, IDI_EXCLAMATION, IMAGE_ICON, iconSize, iconSize, LR_SHARED)); |
From: <sv...@op...> - 2024-11-10 02:10:52
|
Author: sagamusix Date: Sun Nov 10 03:10:44 2024 New Revision: 22135 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22135 Log: [Imp] Song Properties: Render warning icon at requested DPI. Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/mptrack/dlg_misc.h trunk/OpenMPT/mptrack/view_com.cpp Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Sun Nov 10 02:54:59 2024 (r22134) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Sun Nov 10 03:10:44 2024 (r22135) @@ -182,6 +182,7 @@ { m_font.DeleteObject(); ResizeWindow(); + DialogBase::OnDPIChanged(); } Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 02:54:59 2024 (r22134) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Sun Nov 10 03:10:44 2024 (r22135) @@ -84,7 +84,7 @@ m_nChannels = sndFile.GetNumChannels(); m_tempoSwing = sndFile.m_tempoSwing; m_playBehaviour = sndFile.m_playBehaviour; - initialized = false; + m_initialized = false; // Mod types @@ -112,17 +112,39 @@ if(sndFile.m_dwCreatedWithVersion) SetDlgItemText(IDC_EDIT_CREATEDWITH, _T("OpenMPT ") + FormatVersionNumber(sndFile.m_dwCreatedWithVersion)); SetDlgItemText(IDC_EDIT_SAVEDWITH, mpt::ToCString(sndFile.m_modFormat.madeWithTracker.empty() ? sndFile.m_modFormat.formatName : sndFile.m_modFormat.madeWithTracker)); - const int iconSize = HighDPISupport::ScalePixels(32, m_hWnd); - m_warnIcon = (HICON)::LoadImage(NULL, IDI_EXCLAMATION, IMAGE_ICON, iconSize, iconSize, LR_SHARED); - + OnDPIChanged(); UpdateDialog(); - initialized = true; + m_initialized = true; EnableToolTips(TRUE); return TRUE; } +void CModTypeDlg::OnDPIChanged() +{ + DialogBase::OnDPIChanged(); + + const int iconSize = HighDPISupport::ScalePixels(32, m_hWnd); + DestroyIcon(m_warnIcon); + m_warnIcon = nullptr; + + mpt::Library comctl32(mpt::LibraryPath::System(P_("Comctl32"))); + if(comctl32.IsValid()) + { + using PLOADICONWITHSCALEDOWN = HRESULT(WINAPI *)(HINSTANCE, PCWSTR, int, int, HICON *); + PLOADICONWITHSCALEDOWN LoadIconWithScaleDown = nullptr; + if(comctl32.Bind(LoadIconWithScaleDown, "LoadIconWithScaleDown")) + LoadIconWithScaleDown(NULL, IDI_EXCLAMATION, iconSize, iconSize, &m_warnIcon); + } + if(!m_warnIcon) + m_warnIcon = reinterpret_cast<HICON>(::LoadImage(NULL, IDI_EXCLAMATION, IMAGE_ICON, iconSize, iconSize, LR_SHARED)); + + if(m_showWarning) + static_cast<CStatic *>(GetDlgItem(IDC_STATIC1))->SetIcon(m_warnIcon); +} + + CString CModTypeDlg::FormatVersionNumber(Version version) { return mpt::ToCString(version.ToUString() + (version.IsTestVersion() ? U_(" (test build)") : U_(""))); @@ -186,7 +208,7 @@ if(allowedFlags[SONG_PT_MODE]) OnPTModeChanged(); // Tempo modes - const TempoMode oldTempoMode = initialized ? static_cast<TempoMode>(m_TempoModeBox.GetItemData(m_TempoModeBox.GetCurSel())) : sndFile.m_nTempoMode; + const TempoMode oldTempoMode = m_initialized ? static_cast<TempoMode>(m_TempoModeBox.GetItemData(m_TempoModeBox.GetCurSel())) : sndFile.m_nTempoMode; m_TempoModeBox.ResetContent(); m_TempoModeBox.SetItemData(m_TempoModeBox.AddString(_T("Classic")), static_cast<DWORD_PTR>(TempoMode::Classic)); @@ -206,7 +228,7 @@ OnTempoModeChanged(); // Mix levels - const MixLevels oldMixLevels = initialized ? static_cast<MixLevels>(m_PlugMixBox.GetItemData(m_PlugMixBox.GetCurSel())) : sndFile.GetMixLevels(); + const MixLevels oldMixLevels = m_initialized ? static_cast<MixLevels>(m_PlugMixBox.GetItemData(m_PlugMixBox.GetCurSel())) : sndFile.GetMixLevels(); m_PlugMixBox.ResetContent(); if(m_nType == MOD_TYPE_MPT || sndFile.GetMixLevels() == MixLevels::v1_17RC3) // In XM/IT, this is only shown for backwards compatibility with existing tunes m_PlugMixBox.SetItemData(m_PlugMixBox.AddString(_T("OpenMPT 1.17RC3")), static_cast<DWORD_PTR>(MixLevels::v1_17RC3)); @@ -252,7 +274,8 @@ // Compatibility settings const PlayBehaviourSet defaultBehaviour = CSoundFile::GetDefaultPlaybackBehaviour(m_nType); const PlayBehaviourSet supportedBehaviour = CSoundFile::GetSupportedPlaybackBehaviour(m_nType); - bool enableSetDefaults = false, showWarning = false; + bool enableSetDefaults = false; + m_showWarning = false; if(m_nType & (MOD_TYPE_MPT | MOD_TYPE_IT | MOD_TYPE_XM)) { for(size_t i = 0; i < m_playBehaviour.size(); i++) @@ -265,7 +288,7 @@ enableSetDefaults = true; if(!isMPTM) { - showWarning = true; + m_showWarning = true; break; } } @@ -273,13 +296,13 @@ { enableSetDefaults = true; - showWarning = true; + m_showWarning = true; break; } } } - static_cast<CStatic *>(GetDlgItem(IDC_STATIC1))->SetIcon(showWarning ? m_warnIcon : nullptr); - GetDlgItem(IDC_STATIC2)->SetWindowText(showWarning + static_cast<CStatic *>(GetDlgItem(IDC_STATIC1))->SetIcon(m_showWarning ? m_warnIcon : nullptr); + GetDlgItem(IDC_STATIC2)->SetWindowText(m_showWarning ? _T("Playback settings have been set to legacy compatibility mode. Click \"Set Defaults\" to use the recommended settings instead.") : _T("Compatibility settings are currently optimal. It is advised to not edit them.")); GetDlgItem(IDC_BUTTON3)->EnableWindow(enableSetDefaults ? TRUE : FALSE); Modified: trunk/OpenMPT/mptrack/dlg_misc.h ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.h Sun Nov 10 02:54:59 2024 (r22134) +++ trunk/OpenMPT/mptrack/dlg_misc.h Sun Nov 10 03:10:44 2024 (r22135) @@ -36,7 +36,8 @@ PlayBehaviourSet m_playBehaviour; CHANNELINDEX m_nChannels = 0; MODTYPE m_nType = MOD_TYPE_NONE; - bool initialized = false; + bool m_showWarning = false; + bool m_initialized = false; public: CModTypeDlg(CSoundFile &sf, CWnd *parent); @@ -56,6 +57,7 @@ //{{AFX_VIRTUAL(CModTypeDlg) void DoDataExchange(CDataExchange* pDX) override; BOOL OnInitDialog() override; + void OnDPIChanged() override; void OnOK() override; //}}AFX_VIRTUAL Modified: trunk/OpenMPT/mptrack/view_com.cpp ============================================================================== --- trunk/OpenMPT/mptrack/view_com.cpp Sun Nov 10 02:54:59 2024 (r22134) +++ trunk/OpenMPT/mptrack/view_com.cpp Sun Nov 10 03:10:44 2024 (r22135) @@ -152,6 +152,7 @@ m_ToolBar.SetButtonSize(CSize(btnSizeX, btnSizeY)); m_ToolBar.SetBitmapSize(CSize(imgSize, imgSize)); RecalcLayout(); + CModScrollView::OnDPIChanged(); } |
From: <sv...@op...> - 2024-11-10 01:55:12
|
Author: sagamusix Date: Sun Nov 10 02:54:59 2024 New Revision: 22134 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22134 Log: [Imp] Built-in pattern font is now automatically scaled according to DPI settings. From 150% onwards it is upscaled 2x, from 250% onwards it's 3x, etc... Modified: trunk/OpenMPT/mptrack/PatternFont.cpp Modified: trunk/OpenMPT/mptrack/PatternFont.cpp ============================================================================== --- trunk/OpenMPT/mptrack/PatternFont.cpp Sun Nov 10 02:01:15 2024 (r22133) +++ trunk/OpenMPT/mptrack/PatternFont.cpp Sun Nov 10 02:54:59 2024 (r22134) @@ -120,6 +120,7 @@ void PatternFont::UpdateFont(HWND hwnd) { + const int dpi = HighDPISupport::GetDpiForWindow(hwnd); FontSetting font = TrackerSettings::Instance().patternFont; const PATTERNFONT *builtinFont = nullptr; if(font.name == PATTERNFONT_SMALL || font.name.empty()) @@ -130,7 +131,8 @@ builtinFont = &gDefaultPatternFont; } - if(builtinFont != nullptr && font.size < 1) + const int builtInFontSize = Util::muldivr(std::min(font.size + 1, 11), dpi, 96); + if(builtinFont != nullptr && builtInFontSize < 2) { currentFont = builtinFont; return; @@ -141,7 +143,6 @@ static FontSetting previousFont; static int previousDPI = 0; - const int dpi = HighDPISupport::GetDpiForWindow(hwnd); if(previousFont == font && previousDPI == dpi) { // Nothing to do @@ -157,18 +158,16 @@ if(builtinFont != nullptr) { // Copy and scale original 4-bit bitmap - LimitMax(font.size, 10); - font.size++; customFontBitmap.bmiHeader = CMainFrame::bmpNotes->bmiHeader; - customFontBitmap.bmiHeader.biWidth *= font.size; - customFontBitmap.bmiHeader.biHeight *= font.size; + customFontBitmap.bmiHeader.biWidth *= builtInFontSize; + customFontBitmap.bmiHeader.biHeight *= builtInFontSize; customFontBitmap.bmiHeader.biSizeImage = customFontBitmap.bmiHeader.biWidth * customFontBitmap.bmiHeader.biHeight / 2; customFontBitmap.lpDibBits = new uint8[customFontBitmap.bmiHeader.biSizeImage]; // Upscale the image (ugly code ahead) const uint8 *origPixels = CMainFrame::bmpNotes->lpDibBits; uint8 *scaledPixels = customFontBitmap.lpDibBits; - const int bytesPerLine = customFontBitmap.bmiHeader.biWidth / 2, scaleBytes = bytesPerLine * font.size; + const int bytesPerLine = customFontBitmap.bmiHeader.biWidth / 2, scaleBytes = bytesPerLine * builtInFontSize; bool outPos = false; for(int y = 0; y < CMainFrame::bmpNotes->bmiHeader.biHeight; y++, scaledPixels += scaleBytes - bytesPerLine) { @@ -183,7 +182,7 @@ pixel &= 0x0F; origPixels++; } - for(int scaleX = 0; scaleX < font.size; scaleX++) + for(int scaleX = 0; scaleX < builtInFontSize; scaleX++) { if(!outPos) { @@ -203,43 +202,43 @@ } } } - pf.nWidth = (builtinFont->nWidth - 4) * font.size + 4; - pf.nHeight = builtinFont->nHeight * font.size; - pf.nClrX = builtinFont->nClrX * font.size; - pf.nClrY = builtinFont->nClrY * font.size; - pf.nSpaceX = builtinFont->nSpaceX * font.size; - pf.nSpaceY = builtinFont->nSpaceY * font.size; + pf.nWidth = (builtinFont->nWidth - 4) * builtInFontSize + 4; + pf.nHeight = builtinFont->nHeight * builtInFontSize; + pf.nClrX = builtinFont->nClrX * builtInFontSize; + pf.nClrY = builtinFont->nClrY * builtInFontSize; + pf.nSpaceX = builtinFont->nSpaceX * builtInFontSize; + pf.nSpaceY = builtinFont->nSpaceY * builtInFontSize; for(std::size_t i = 0; i < std::size(pf.nEltWidths); i++) { - pf.nEltWidths[i] = builtinFont->nEltWidths[i] * font.size; - pf.padding[i] = builtinFont->padding[i] * font.size; + pf.nEltWidths[i] = builtinFont->nEltWidths[i] * builtInFontSize; + pf.padding[i] = builtinFont->padding[i] * builtInFontSize; } - pf.nNumX = builtinFont->nNumX * font.size; - pf.nNumY = builtinFont->nNumY * font.size; - pf.nNum10X = builtinFont->nNum10X * font.size; - pf.nNum10Y = builtinFont->nNum10Y * font.size; - pf.nAlphaAM_X = builtinFont->nAlphaAM_X * font.size; - pf.nAlphaAM_Y = builtinFont->nAlphaAM_Y * font.size; - pf.nAlphaNZ_X = builtinFont->nAlphaNZ_X * font.size; - pf.nAlphaNZ_Y = builtinFont->nAlphaNZ_Y * font.size; - pf.nNoteX = builtinFont->nNoteX * font.size; - pf.nNoteY = builtinFont->nNoteY * font.size; - pf.nNoteWidth[0] = builtinFont->nNoteWidth[0] * font.size; - pf.nNoteWidth[1] = builtinFont->nNoteWidth[1] * font.size; - pf.nOctaveWidth = builtinFont->nOctaveWidth * font.size; - pf.nVolX = builtinFont->nVolX * font.size; - pf.nVolY = builtinFont->nVolY * font.size; - pf.nVolCmdWidth = builtinFont->nVolCmdWidth * font.size; - pf.nVolHiWidth = builtinFont->nVolHiWidth * font.size; - pf.nCmdOfs = builtinFont->nCmdOfs * font.size; - pf.nParamHiWidth = builtinFont->nParamHiWidth * font.size; - pf.nInstrOfs = builtinFont->nInstrOfs * font.size; - pf.nInstr10Ofs = builtinFont->nInstr10Ofs * font.size; - pf.nInstrHiWidth = builtinFont->nInstrHiWidth * font.size; - pf.pcParamMargin = builtinFont->pcParamMargin * font.size; - pf.pcValMargin = builtinFont->pcValMargin * font.size; - pf.paramLoMargin = builtinFont->paramLoMargin * font.size; - pf.spacingY = builtinFont->spacingY * font.size; + pf.nNumX = builtinFont->nNumX * builtInFontSize; + pf.nNumY = builtinFont->nNumY * builtInFontSize; + pf.nNum10X = builtinFont->nNum10X * builtInFontSize; + pf.nNum10Y = builtinFont->nNum10Y * builtInFontSize; + pf.nAlphaAM_X = builtinFont->nAlphaAM_X * builtInFontSize; + pf.nAlphaAM_Y = builtinFont->nAlphaAM_Y * builtInFontSize; + pf.nAlphaNZ_X = builtinFont->nAlphaNZ_X * builtInFontSize; + pf.nAlphaNZ_Y = builtinFont->nAlphaNZ_Y * builtInFontSize; + pf.nNoteX = builtinFont->nNoteX * builtInFontSize; + pf.nNoteY = builtinFont->nNoteY * builtInFontSize; + pf.nNoteWidth[0] = builtinFont->nNoteWidth[0] * builtInFontSize; + pf.nNoteWidth[1] = builtinFont->nNoteWidth[1] * builtInFontSize; + pf.nOctaveWidth = builtinFont->nOctaveWidth * builtInFontSize; + pf.nVolX = builtinFont->nVolX * builtInFontSize; + pf.nVolY = builtinFont->nVolY * builtInFontSize; + pf.nVolCmdWidth = builtinFont->nVolCmdWidth * builtInFontSize; + pf.nVolHiWidth = builtinFont->nVolHiWidth * builtInFontSize; + pf.nCmdOfs = builtinFont->nCmdOfs * builtInFontSize; + pf.nParamHiWidth = builtinFont->nParamHiWidth * builtInFontSize; + pf.nInstrOfs = builtinFont->nInstrOfs * builtInFontSize; + pf.nInstr10Ofs = builtinFont->nInstr10Ofs * builtInFontSize; + pf.nInstrHiWidth = builtinFont->nInstrHiWidth * builtInFontSize; + pf.pcParamMargin = builtinFont->pcParamMargin * builtInFontSize; + pf.pcValMargin = builtinFont->pcValMargin * builtInFontSize; + pf.paramLoMargin = builtinFont->paramLoMargin * builtInFontSize; + pf.spacingY = builtinFont->spacingY * builtInFontSize; // Create 4-pixel border const int bmWidth2 = pf.dib->bmiHeader.biWidth / 2; |
From: <sv...@op...> - 2024-11-10 01:01:21
|
Author: sagamusix Date: Sun Nov 10 02:01:15 2024 New Revision: 22133 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22133 Log: [Mod] Display all main toolbar items by default again. Modified: trunk/OpenMPT/mptrack/TrackerSettings.h Modified: trunk/OpenMPT/mptrack/TrackerSettings.h ============================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h Sun Nov 10 01:59:17 2024 (r22132) +++ trunk/OpenMPT/mptrack/TrackerSettings.h Sun Nov 10 02:01:15 2024 (r22133) @@ -370,7 +370,7 @@ GlobalVolume = 0x10, VUMeter = 0x20, - Default = Octave | Tempo | Speed | GlobalVolume | VUMeter + Default = Octave | Tempo | Speed | RowsPerBeat | GlobalVolume | VUMeter }; DECLARE_FLAGSET(MainToolBarItem) |
From: <sv...@op...> - 2024-11-10 00:59:29
|
Author: sagamusix Date: Sun Nov 10 01:59:17 2024 New Revision: 22132 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22132 Log: [Imp] Allow the main toolbar to wrap if the main window is too narrow. Modified: trunk/OpenMPT/mptrack/Mainbar.cpp Modified: trunk/OpenMPT/mptrack/Mainbar.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 00:38:13 2024 (r22131) +++ trunk/OpenMPT/mptrack/Mainbar.cpp Sun Nov 10 01:59:17 2024 (r22132) @@ -45,6 +45,19 @@ CSize CToolBarEx::CalcDynamicLayout(int nLength, DWORD dwMode) { + // Make the toolbar go into multiline mode when it's docked + if(dwMode & LM_HORZDOCK) + { + if(auto mainFrm = CMainFrame::GetMainFrame()) + { + CRect rect; + mainFrm->GetClientRect(rect); + nLength = rect.right; + dwMode &= ~LM_HORZDOCK; + dwMode |= LM_COMMIT; + } + } + CSize sizeResult; // if we're committing set the buttons appropriately if(dwMode & LM_COMMIT) @@ -227,9 +240,7 @@ BOOL CMainToolBar::Create(CWnd *parent) { - DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY; - - if(!CToolBar::Create(parent, dwStyle)) + if(!CToolBar::Create(parent, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY)) return FALSE; SetButtons(MainButtons, static_cast<int>(std::size(MainButtons))); |