From: <sv...@op...> - 2025-02-02 20:27:32
|
Author: sagamusix Date: Sun Feb 2 21:27:19 2025 New Revision: 22863 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22863 Log: [Fix] Plugin editors: Avoid bad interaction between resizable window auto-layout code and double-clicking the plugin editor title bar to minimize the client area, in particular for the MIDI I/O plugin. VSTs should not have been affected by this. Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.cpp trunk/OpenMPT/mptrack/ResizableDialog.cpp trunk/OpenMPT/mptrack/ResizableDialog.h Modified: trunk/OpenMPT/mptrack/AbstractVstEditor.cpp ============================================================================== --- trunk/OpenMPT/mptrack/AbstractVstEditor.cpp Sat Feb 1 13:19:30 2025 (r22862) +++ trunk/OpenMPT/mptrack/AbstractVstEditor.cpp Sun Feb 2 21:27:19 2025 (r22863) @@ -139,7 +139,8 @@ m_clientHeight = -m_clientHeight; int rcHeight = rcWnd.Height() + m_clientHeight; - SetWindowPos(NULL, 0, 0, + EnableAutoLayout(!m_isMinimized); + SetWindowPos(nullptr, 0, 0, rcWnd.Width(), rcHeight, SWP_NOZORDER | SWP_NOMOVE); } Modified: trunk/OpenMPT/mptrack/ResizableDialog.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ResizableDialog.cpp Sat Feb 1 13:19:30 2025 (r22862) +++ trunk/OpenMPT/mptrack/ResizableDialog.cpp Sun Feb 2 21:27:19 2025 (r22863) @@ -145,7 +145,7 @@ void ResizableDialog::ResizeDynamicLayout() { - if(m_dynamicItems.empty() || IsIconic()) + if(m_dynamicItems.empty() || IsIconic() || !m_enableAutoLayout) return; CRect rectWindow; @@ -166,13 +166,16 @@ void ResizableDialog::OnGetMinMaxInfo(MINMAXINFO *mmi) { - auto size = m_minSize; - if(GetDPI() != m_originalDPI) + if(m_enableAutoLayout) { - size.x = MulDiv(size.x, GetDPI(), m_originalDPI); - size.y = MulDiv(size.y, GetDPI(), m_originalDPI); + auto size = m_minSize; + if(GetDPI() != m_originalDPI) + { + size.x = MulDiv(size.x, GetDPI(), m_originalDPI); + size.y = MulDiv(size.y, GetDPI(), m_originalDPI); + } + mmi->ptMinTrackSize = size; } - mmi->ptMinTrackSize = size; DialogBase::OnGetMinMaxInfo(mmi); } Modified: trunk/OpenMPT/mptrack/ResizableDialog.h ============================================================================== --- trunk/OpenMPT/mptrack/ResizableDialog.h Sat Feb 1 13:19:30 2025 (r22862) +++ trunk/OpenMPT/mptrack/ResizableDialog.h Sun Feb 2 21:27:19 2025 (r22863) @@ -37,6 +37,8 @@ afx_msg void OnGetMinMaxInfo(MINMAXINFO *mmi); + void EnableAutoLayout(bool enable) { m_enableAutoLayout = enable; } + DECLARE_MESSAGE_MAP() private: @@ -47,6 +49,7 @@ CPoint m_minSize; CSize m_originalClientSize; int m_originalDPI = 0; + bool m_enableAutoLayout = true; }; OPENMPT_NAMESPACE_END |