From: <sag...@us...> - 2011-03-19 13:56:10
|
Revision: 817 http://modplug.svn.sourceforge.net/modplug/?rev=817&view=rev Author: saga-games Date: 2011-03-19 13:56:03 +0000 (Sat, 19 Mar 2011) Log Message: ----------- [New] Pattern Editor: The new keyboard shortcuts "Select beat" and "Select measure" can be used to automatically extend the current selection to the beat / measure boundaries. Modified Paths: -------------- trunk/OpenMPT/mptrack/CommandSet.cpp trunk/OpenMPT/mptrack/CommandSet.h trunk/OpenMPT/mptrack/PatternEditorDialogs.h trunk/OpenMPT/mptrack/View_pat.cpp Modified: trunk/OpenMPT/mptrack/CommandSet.cpp =================================================================== --- trunk/OpenMPT/mptrack/CommandSet.cpp 2011-03-19 13:26:38 UTC (rev 816) +++ trunk/OpenMPT/mptrack/CommandSet.cpp 2011-03-19 13:56:03 UTC (rev 817) @@ -604,6 +604,8 @@ DefineKeyCommand(kcViewEditHistory, 1855, kcVisible, kcNoDummy, _T("View Edit History")); DefineKeyCommand(kcSampleQuickFade, 1856, kcVisible, kcNoDummy, _T("Quick fade")); DefineKeyCommand(kcSampleXFade, 1857, kcVisible, kcNoDummy, _T("Crossfade sample loop")); + DefineKeyCommand(kcSelectBeat, 1858, kcVisible, kcNoDummy, _T("Select beat")); + DefineKeyCommand(kcSelectMeasure, 1859, kcVisible, kcNoDummy, _T("Select measure")); // Add new key commands here. #ifdef _DEBUG Modified: trunk/OpenMPT/mptrack/CommandSet.h =================================================================== --- trunk/OpenMPT/mptrack/CommandSet.h 2011-03-19 13:26:38 UTC (rev 816) +++ trunk/OpenMPT/mptrack/CommandSet.h 2011-03-19 13:56:03 UTC (rev 817) @@ -201,7 +201,9 @@ kcCopySelectWithSelect, kcCopySelectOffWithSelect, kcSelectColumn, - kcEndSelect=kcSelectColumn, + kcSelectBeat, + kcSelectMeasure, + kcEndSelect=kcSelectMeasure, kcStartPatternEditMisc, kcToggleFollowSong=kcStartPatternEditMisc, Modified: trunk/OpenMPT/mptrack/PatternEditorDialogs.h =================================================================== --- trunk/OpenMPT/mptrack/PatternEditorDialogs.h 2011-03-19 13:26:38 UTC (rev 816) +++ trunk/OpenMPT/mptrack/PatternEditorDialogs.h 2011-03-19 13:56:03 UTC (rev 817) @@ -35,7 +35,7 @@ //========================================= { protected: - BOOL m_bReplace; + bool m_bReplace; // is this the replace tab? CModDoc *m_pModDoc; public: @@ -69,7 +69,7 @@ void ChangeEffect(); public: - CFindReplaceTab(UINT nIDD, BOOL bReplaceTab, CModDoc *pModDoc):CPropertyPage(nIDD) { m_bReplace = bReplaceTab; m_pModDoc = pModDoc; } + CFindReplaceTab(UINT nIDD, bool bReplaceTab, CModDoc *pModDoc):CPropertyPage(nIDD) { m_bReplace = bReplaceTab; m_pModDoc = pModDoc; } protected: virtual BOOL OnInitDialog(); Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2011-03-19 13:26:38 UTC (rev 816) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2011-03-19 13:56:03 UTC (rev 817) @@ -1694,8 +1694,8 @@ CModDoc *pModDoc = GetDocument(); if (pModDoc) { - CFindReplaceTab pageFind(IDD_EDIT_FIND, FALSE, pModDoc); - CFindReplaceTab pageReplace(IDD_EDIT_REPLACE, TRUE, pModDoc); + CFindReplaceTab pageFind(IDD_EDIT_FIND, false, pModDoc); + CFindReplaceTab pageReplace(IDD_EDIT_REPLACE, true, pModDoc); CPropertySheet dlg("Find/Replace"); pageFind.m_nNote = m_findReplace.cmdFind.note; @@ -3695,6 +3695,27 @@ case kcCopySelectOffWithNav: case kcCopySelectOff: m_dwStatus &= ~PATSTATUS_CTRLDRAGSEL; return wParam; + case kcSelectBeat: + case kcSelectMeasure: + // Select whole beat / measure + { + const ROWINDEX adjust = (wParam == kcSelectBeat) ? GetRowsPerBeat() : GetRowsPerMeasure(); + const ROWINDEX startRow = GetSelectionStartRow() - (GetSelectionStartRow() % adjust); // Snap to start of beat / measure of upper-left corner of current selection + const ROWINDEX endRow = GetSelectionEndRow() + adjust - (GetSelectionEndRow() % adjust) - 1; // Snap to end of beat / measure of lower-right corner of current selection + DWORD startMask = (GetSelectionStartChan() << 3), endMask = (GetSelectionEndChan() << 3); + if(m_dwBeginSel == m_dwEndSel) + { + endMask |= LAST_COLUMN; // Extend to param column; + } else + { + // Remember start / end column + startMask |= (m_dwBeginSel & 0x07); + endMask |= (m_dwEndSel & 0x07); + } + SetCurSel((startRow << 16) | startMask, (endRow << 16) | endMask); + } + return wParam; + case kcClearRow: OnClearField(-1, false); return wParam; case kcClearField: OnClearField(m_dwCursor & 0x07, false); return wParam; case kcClearFieldITStyle: OnClearField(m_dwCursor & 0x07, false, true); return wParam; @@ -4778,8 +4799,8 @@ if (newIns == 0) { - RowMask sp = {0,1,0,0,0}; // Setup mask to only clear instrument data in OnClearSelection - OnClearSelection(false, sp); // Clears instrument selection from pattern + RowMask sp = {false, true, false, false, false}; // Setup mask to only clear instrument data in OnClearSelection + OnClearSelection(false, sp); // Clears instrument selection from pattern } else { SetSelectionInstrument(newIns); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |