From: <sv...@op...> - 2024-11-23 15:45:26
|
Author: sagamusix Date: Sat Nov 23 16:45:13 2024 New Revision: 22264 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=22264 Log: [Mod] Open various context menus on right mouse button release as it should be done, not on button down. Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_ins.h trunk/OpenMPT/mptrack/Ctrl_pat.h trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/Globals.h trunk/OpenMPT/mptrack/Mpdlgs.cpp trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_ins.h trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp Sat Nov 23 16:45:13 2024 (r22264) @@ -54,7 +54,7 @@ ON_WM_KILLFOCUS() ON_WM_LBUTTONDOWN() ON_WM_MBUTTONDOWN() - ON_WM_RBUTTONDOWN() + ON_WM_RBUTTONUP() ON_WM_LBUTTONDBLCLK() ON_WM_MOUSEWHEEL() ON_COMMAND(ID_NOTEMAP_TRANS_UP, &CNoteMapWnd::OnMapTransposeUp) @@ -322,7 +322,7 @@ } -void CNoteMapWnd::OnRButtonDown(UINT, CPoint pt) +void CNoteMapWnd::OnRButtonUp(UINT, CPoint pt) { CInputHandler* ih = CMainFrame::GetInputHandler(); @@ -623,7 +623,7 @@ CRect clientRect; GetClientRect(clientRect); clientRect.bottom = clientRect.top + mpt::align_up(clientRect.Height(), m_cyFont); - OnRButtonDown(0, clientRect.CenterPoint()); + OnRButtonUp(0, clientRect.CenterPoint()); } return wParam; case kcInsNoteMapTransposeDown: MapTranspose(-1); return wParam; Modified: trunk/OpenMPT/mptrack/Ctrl_ins.h ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.h Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/Ctrl_ins.h Sat Nov 23 16:45:13 2024 (r22264) @@ -69,7 +69,7 @@ //{{AFX_MSG(CNoteMapWnd) afx_msg void OnLButtonDown(UINT, CPoint); afx_msg void OnMButtonDown(UINT flags, CPoint pt) { OnLButtonDown(flags, pt); } - afx_msg void OnRButtonDown(UINT, CPoint); + afx_msg void OnRButtonUp(UINT, CPoint); afx_msg void OnLButtonDblClk(UINT, CPoint); afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); afx_msg void OnSetFocus(CWnd *pOldWnd); Modified: trunk/OpenMPT/mptrack/Ctrl_pat.h ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.h Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/Ctrl_pat.h Sat Nov 23 16:45:13 2024 (r22264) @@ -148,7 +148,7 @@ afx_msg void OnKillFocus(CWnd *); afx_msg void OnLButtonDown(UINT, CPoint); afx_msg void OnLButtonDblClk(UINT, CPoint); - afx_msg void OnRButtonDown(UINT, CPoint); + afx_msg void OnRButtonUp(UINT, CPoint); afx_msg void OnLButtonUp(UINT, CPoint); afx_msg void OnMButtonDown(UINT, CPoint); afx_msg void OnMouseMove(UINT, CPoint); Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp Sat Nov 23 16:45:13 2024 (r22264) @@ -52,7 +52,7 @@ ON_WM_LBUTTONDOWN() ON_WM_LBUTTONDBLCLK() ON_WM_LBUTTONUP() - ON_WM_RBUTTONDOWN() + ON_WM_RBUTTONUP() ON_WM_MBUTTONDOWN() ON_WM_SETFOCUS() ON_WM_KILLFOCUS() @@ -478,7 +478,7 @@ GetClientRect(clientRect); if(!clientRect.PtInRect(pt)) pt = clientRect.CenterPoint(); - OnRButtonDown(0, pt); + OnRButtonUp(0, pt); } return wParam; @@ -1073,7 +1073,7 @@ } -void COrderList::OnRButtonDown(UINT nFlags, CPoint pt) +void COrderList::OnRButtonUp(UINT nFlags, CPoint pt) { CRect rect; GetClientRect(&rect); Modified: trunk/OpenMPT/mptrack/Globals.h ============================================================================== --- trunk/OpenMPT/mptrack/Globals.h Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/Globals.h Sat Nov 23 16:45:13 2024 (r22264) @@ -43,7 +43,7 @@ CModControlView &m_parent; HWND m_hWndView = nullptr; HWND m_lastFocusItem = nullptr; - LONG m_nLockCount = 0; + int m_nLockCount = 0; bool m_initialized = false; public: Modified: trunk/OpenMPT/mptrack/Mpdlgs.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.cpp Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/Mpdlgs.cpp Sat Nov 23 16:45:13 2024 (r22264) @@ -1298,7 +1298,7 @@ BOOL CEQSlider::PreTranslateMessage(MSG *pMsg) { - if ((pMsg) && (pMsg->message == WM_RBUTTONDOWN) && (m_pParent)) + if ((pMsg) && (pMsg->message == WM_RBUTTONUP) && (m_pParent)) { m_x = LOWORD(pMsg->lParam); m_y = HIWORD(pMsg->lParam); Modified: trunk/OpenMPT/mptrack/View_ins.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/View_ins.cpp Sat Nov 23 16:45:13 2024 (r22264) @@ -92,9 +92,10 @@ ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_LBUTTONDBLCLK() - ON_WM_RBUTTONDOWN() - ON_WM_MBUTTONDOWN() + ON_WM_RBUTTONUP() + ON_WM_MBUTTONUP() ON_WM_XBUTTONUP() + ON_WM_MOUSEWHEEL() ON_WM_NCLBUTTONDOWN() ON_WM_NCLBUTTONUP() ON_WM_NCLBUTTONDBLCLK() @@ -133,7 +134,6 @@ ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, &CViewInstrument::OnUpdateRedo) //}}AFX_MSG_MAP - ON_WM_MOUSEWHEEL() END_MESSAGE_MAP() @@ -1747,7 +1747,7 @@ } -void CViewInstrument::OnRButtonDown(UINT flags, CPoint pt) +void CViewInstrument::OnRButtonUp(UINT flags, CPoint pt) { const CModDoc *pModDoc = GetDocument(); if(!pModDoc) @@ -1760,7 +1760,7 @@ // Ctrl + Right-Click = Delete point if(flags & MK_CONTROL) { - OnMButtonDown(flags, pt); + OnMButtonUp(flags, pt); return; } @@ -1789,7 +1789,7 @@ } } -void CViewInstrument::OnMButtonDown(UINT, CPoint pt) +void CViewInstrument::OnMButtonUp(UINT, CPoint pt) { // Middle mouse button: Remove envelope point int point = ScreenToPoint(pt.x, pt.y); @@ -2289,7 +2289,7 @@ uint32 point = DragItemToEnvPoint(); pt.SetPoint(PointToScreen(point), ValueToScreen(EnvGetValue(point))); } - OnRButtonDown(0, pt); + OnRButtonUp(0, pt); } return wParam; case kcPrevInstrument: OnPrevInstrument(); return wParam; Modified: trunk/OpenMPT/mptrack/View_ins.h ============================================================================== --- trunk/OpenMPT/mptrack/View_ins.h Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/View_ins.h Sat Nov 23 16:45:13 2024 (r22264) @@ -209,8 +209,8 @@ afx_msg void OnLButtonDown(UINT, CPoint); afx_msg void OnLButtonUp(UINT, CPoint); afx_msg void OnLButtonDblClk(UINT /*nFlags*/, CPoint point) { InsertAtPoint(point); } - afx_msg void OnRButtonDown(UINT, CPoint); - afx_msg void OnMButtonDown(UINT, CPoint); + afx_msg void OnRButtonUp(UINT, CPoint); + afx_msg void OnMButtonUp(UINT, CPoint); afx_msg void OnNcMouseMove(UINT nHitTest, CPoint point); afx_msg void OnNcLButtonDown(UINT, CPoint); afx_msg void OnNcLButtonUp(UINT, CPoint); Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/View_pat.cpp Sat Nov 23 16:45:13 2024 (r22264) @@ -57,9 +57,9 @@ ON_WM_LBUTTONDBLCLK() ON_WM_LBUTTONUP() ON_WM_RBUTTONDOWN() + ON_WM_RBUTTONUP() ON_WM_SETFOCUS() ON_WM_KILLFOCUS() - ON_WM_SYSKEYDOWN() ON_WM_DESTROY() ON_MESSAGE(WM_MOD_KEYCOMMAND, &CViewPattern::OnCustomKeyMsg) ON_MESSAGE(WM_MOD_MIDIMSG, &CViewPattern::OnMidiMsg) @@ -136,12 +136,7 @@ ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, &CViewPattern::OnUpdateUndo) ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, &CViewPattern::OnUpdateRedo) ON_COMMAND_RANGE(ID_PLUGSELECT, ID_PLUGSELECT+MAX_MIXPLUGINS, &CViewPattern::OnSelectPlugin) - - //}}AFX_MSG_MAP - ON_WM_INITMENU() - ON_WM_RBUTTONDBLCLK() - ON_WM_RBUTTONUP() END_MESSAGE_MAP() static_assert(ModCommand::maxColumnValue <= 999, "Command range for ID_CHANGE_PCNOTE_PARAM is designed for 999"); @@ -1422,16 +1417,7 @@ void CViewPattern::OnRButtonDown(UINT flags, CPoint pt) { - CModDoc *modDoc = GetDocument(); - HMENU hMenu; - - // Too far left to get a ctx menu: - if(!modDoc || pt.x < m_szHeader.cx) - { - return; - } - - // Handle drag n drop + // Abort drag n drop if(m_Status[psDragnDropEdit]) { if(m_Status[psDragnDropping]) @@ -1450,10 +1436,46 @@ return; } - if((hMenu = ::CreatePopupMenu()) == NULL) + const bool inChannelHeader = (pt.y < m_szHeader.cy); + if(/*(flags & MK_SHIFT) &&*/ inChannelHeader) { + // Drag-select record channels + StartRecordGroupDragging(GetDragItem(pt, m_rcDragItem)); + m_Status.set(psShiftDragging, (flags & MK_SHIFT) != 0); + } +} + + +void CViewPattern::OnRButtonUp(UINT flags, CPoint pt) +{ + CModDoc *modDoc = GetDocument(); + + // Too far left to get a ctx menu: + if(!modDoc || pt.x < m_szHeader.cx) return; + + ResetRecordGroupDragging(); + const CHANNELINDEX sourceChn = static_cast<CHANNELINDEX>(m_nDragItem.Value()); + const CHANNELINDEX targetChn = m_nDropItem.IsValid() ? static_cast<CHANNELINDEX>(m_nDropItem.Value()) : CHANNELINDEX_INVALID; + switch(m_nDragItem.Type()) + { + case DragItem::ChannelHeader: + if(m_Status[psShiftDragging]) + { + if(sourceChn < modDoc->GetNumChannels() && sourceChn == targetChn) + { + modDoc->ToggleChannelRecordGroup(sourceChn, RecordGroup::Group2); + InvalidateChannelsHeaders(sourceChn); + } + } + break; + default: + break; } + + HMENU hMenu = ::CreatePopupMenu(); + if(hMenu == nullptr) + return; CSoundFile &sndFile = modDoc->GetSoundFile(); m_MenuCursor = GetPositionFromPoint(pt); @@ -1477,10 +1499,6 @@ // Ctrl+Right-Click: Open quick channel properties. ClientToScreen(&pt); m_quickChannelProperties.Show(GetDocument(), nChn, pt); - } else if((flags & MK_SHIFT) && inChannelHeader) - { - // Drag-select record channels - StartRecordGroupDragging(GetDragItem(pt, m_rcDragItem)); } else if(nChn < sndFile.GetNumChannels() && sndFile.Patterns.IsValidPat(m_nPattern) && !(flags & (MK_CONTROL | MK_SHIFT))) { CInputHandler *ih = CMainFrame::GetInputHandler(); @@ -1558,34 +1576,6 @@ ::DestroyMenu(hMenu); } -void CViewPattern::OnRButtonUp(UINT nFlags, CPoint point) -{ - CModDoc *pModDoc = GetDocument(); - if(!pModDoc) - return; - - ResetRecordGroupDragging(); - const CHANNELINDEX sourceChn = static_cast<CHANNELINDEX>(m_nDragItem.Value()); - const CHANNELINDEX targetChn = m_nDropItem.IsValid() ? static_cast<CHANNELINDEX>(m_nDropItem.Value()) : CHANNELINDEX_INVALID; - switch(m_nDragItem.Type()) - { - case DragItem::ChannelHeader: - if(nFlags & MK_SHIFT) - { - if(sourceChn < pModDoc->GetNumChannels() && sourceChn == targetChn) - { - pModDoc->ToggleChannelRecordGroup(sourceChn, RecordGroup::Group2); - InvalidateChannelsHeaders(sourceChn); - } - } - break; - default: - break; - } - - CModScrollView::OnRButtonUp(nFlags, point); -} - // cppcheck-suppress duplInheritedMember BOOL CViewPattern::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) @@ -4373,7 +4363,7 @@ switch(wParam) { - case kcContextMenu: OnRButtonDown(0, GetPointFromPosition(m_Cursor)); return wParam; + case kcContextMenu: OnRButtonUp(0, GetPointFromPosition(m_Cursor)); return wParam; case kcPrevInstrument: OnPrevInstrument(); return wParam; case kcNextInstrument: OnNextInstrument(); return wParam; @@ -4676,7 +4666,7 @@ CPoint pt = GetPointFromPosition(m_Cursor); pt.x += GetChannelWidth() / 2; pt.y += GetRowHeight() / 2; - OnRButtonDown(0, pt); + OnRButtonUp(0, pt); } return wParam; case kcShowChannelCtxMenu: @@ -4684,7 +4674,7 @@ CPoint pt = GetPointFromPosition(m_Cursor); pt.x += GetChannelWidth() / 2; pt.y = (m_szHeader.cy - m_szPluginHeader.cy) / 2; - OnRButtonDown(0, pt); + OnRButtonUp(0, pt); } return wParam; case kcShowChannelPluginCtxMenu: @@ -4692,7 +4682,7 @@ CPoint pt = GetPointFromPosition(m_Cursor); pt.x += GetChannelWidth() / 2; pt.y = m_szHeader.cy - m_szPluginHeader.cy / 2; - OnRButtonDown(0, pt); + OnRButtonUp(0, pt); } return wParam; case kcPatternGoto: OnEditGoto(); return wParam; @@ -6408,12 +6398,6 @@ } - -void CViewPattern::OnInitMenu(CMenu *pMenu) -{ - CModScrollView::OnInitMenu(pMenu); -} - void CViewPattern::TogglePluginEditor(int chan) { CModDoc *modDoc = GetDocument(); @@ -7079,13 +7063,6 @@ } -void CViewPattern::OnRButtonDblClk(UINT nFlags, CPoint point) -{ - OnRButtonDown(nFlags, point); - CModScrollView::OnRButtonDblClk(nFlags, point); -} - - // Toggle pending mute status for channel from context menu. void CViewPattern::OnTogglePendingMuteFromClick() { Modified: trunk/OpenMPT/mptrack/View_pat.h ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.h Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/View_pat.h Sat Nov 23 16:45:13 2024 (r22264) @@ -465,10 +465,6 @@ //}}AFX_MSG DECLARE_MESSAGE_MAP() - -public: - afx_msg void OnInitMenu(CMenu *pMenu); - private: // Copy&Paste bool CopyPattern(PATTERNINDEX nPattern, const PatternRect &selection); @@ -535,9 +531,6 @@ void DragChannel(CHANNELINDEX source, CHANNELINDEX target, CHANNELINDEX numChannels, bool duplicate); -public: - afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point); - private: void TogglePendingMute(CHANNELINDEX nChn); void PendingSoloChn(CHANNELINDEX first, CHANNELINDEX last); Modified: trunk/OpenMPT/mptrack/View_smp.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/View_smp.cpp Sat Nov 23 16:45:13 2024 (r22264) @@ -104,7 +104,7 @@ ON_WM_NCLBUTTONDOWN() ON_WM_NCLBUTTONUP() ON_WM_NCLBUTTONDBLCLK() - ON_WM_RBUTTONDOWN() + ON_WM_RBUTTONUP() ON_WM_CHAR() ON_WM_DROPFILES() ON_WM_MOUSEWHEEL() @@ -2158,7 +2158,7 @@ } -void CViewSample::OnRButtonDown(UINT, CPoint pt) +void CViewSample::OnRButtonUp(UINT, CPoint pt) { CModDoc *pModDoc = GetDocument(); if(pModDoc) @@ -3676,7 +3676,7 @@ switch(wParam) { - case kcContextMenu: OnRButtonDown(0, CPoint(0, TimelineHeight(m_hWnd))); return wParam; + case kcContextMenu: OnRButtonUp(0, CPoint(0, TimelineHeight(m_hWnd))); return wParam; case kcSampleTrim: TrimSample(false); return wParam; case kcSampleTrimToLoopEnd: TrimSample(true); return wParam; Modified: trunk/OpenMPT/mptrack/View_smp.h ============================================================================== --- trunk/OpenMPT/mptrack/View_smp.h Sat Nov 23 00:25:11 2024 (r22263) +++ trunk/OpenMPT/mptrack/View_smp.h Sat Nov 23 16:45:13 2024 (r22264) @@ -187,7 +187,7 @@ afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); - afx_msg void OnRButtonDown(UINT, CPoint); + afx_msg void OnRButtonUp(UINT, CPoint); afx_msg void OnMouseMove(UINT, CPoint); afx_msg BOOL OnSetCursor(CWnd *pWnd, UINT nHitTest, UINT message); afx_msg void OnEditSelectAll(); |