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); } |