From: <sag...@us...> - 2010-12-02 22:53:00
|
Revision: 767 http://modplug.svn.sourceforge.net/modplug/?rev=767&view=rev Author: saga-games Date: 2010-12-02 22:52:54 +0000 (Thu, 02 Dec 2010) Log Message: ----------- [New] Pattern Editor: Clicking and dragging the row numbers selects the whole row now (Excel/Calc style) - see http://bugs.openmpt.org/view.php?id=45 Modified Paths: -------------- trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2010-11-27 23:28:39 UTC (rev 766) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2010-12-02 22:52:54 UTC (rev 767) @@ -987,10 +987,10 @@ void CViewPattern::OnLButtonDown(UINT nFlags, CPoint point) -//-------------------------------------------------- +//--------------------------------------------------------- { CModDoc *pModDoc = GetDocument(); - if (/*(m_bDragging) ||*/ (!pModDoc)) return; + if (/*(m_bDragging) ||*/ (pModDoc == nullptr) || (pModDoc->GetSoundFile() == nullptr)) return; SetFocus(); m_nDragItem = GetDragItem(point, &m_rcDragItem); m_bDragging = true; @@ -1049,7 +1049,20 @@ } } } + } else if ((point.x < m_szHeader.cx) && (point.y > m_szHeader.cy)) + { + // Mark row number => mark whole row (start) + InvalidateSelection(); + DWORD dwPoint = GetPositionFromPoint(point); + if((dwPoint >> 16) < pModDoc->GetSoundFile()->Patterns[m_nPattern].GetNumRows()) + { + m_dwBeginSel = m_dwStartSel = dwPoint; + m_dwEndSel = m_dwBeginSel | 0xFFFF; + SetCurSel(m_dwStartSel, m_dwEndSel); + m_dwStatus |= PATSTATUS_SELECTROW; + } } + if (m_nDragItem) { InvalidateRect(&m_rcDragItem, FALSE); @@ -1079,7 +1092,7 @@ m_bDragging = false; m_bInItemRect = false; ReleaseCapture(); - m_dwStatus &= ~PATSTATUS_MOUSEDRAGSEL; + m_dwStatus &= ~(PATSTATUS_MOUSEDRAGSEL|PATSTATUS_SELECTROW); // Drag & Drop Editing if (m_dwStatus & PATSTATUS_DRAGNDROPEDIT) { @@ -1303,8 +1316,14 @@ UpdateWindow(); } } - if (m_dwStatus & PATSTATUS_MOUSEDRAGSEL) + if ((m_dwStatus & PATSTATUS_SELECTROW) /*&& (point.x < m_szHeader.cx)*/ && (point.y > m_szHeader.cy)) { + // Mark row number => mark whole row (continue) + InvalidateSelection(); + m_dwEndSel = GetPositionFromPoint(point) | 0xFFFF; + SetCurSel(m_dwStartSel, m_dwEndSel); + } else if (m_dwStatus & PATSTATUS_MOUSEDRAGSEL) + { CModDoc *pModDoc = GetDocument(); DWORD dwPos = GetPositionFromPoint(point); if ((pModDoc) && (m_nPattern < pModDoc->GetSoundFile()->Patterns.Size())) Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2010-11-27 23:28:39 UTC (rev 766) +++ trunk/OpenMPT/mptrack/View_pat.h 2010-12-02 22:52:54 UTC (rev 767) @@ -14,21 +14,21 @@ #define DRAGITEM_PATTERNHEADER 0x020000 #define DRAGITEM_PLUGNAME 0x040000 //rewbs.patPlugName -#define PATSTATUS_MOUSEDRAGSEL 0x01 -#define PATSTATUS_KEYDRAGSEL 0x02 -#define PATSTATUS_FOCUS 0x04 -#define PATSTATUS_FOLLOWSONG 0x08 -#define PATSTATUS_RECORD 0x10 -#define PATSTATUS_DRAGHSCROLL 0x20 -#define PATSTATUS_DRAGVSCROLL 0x40 -#define PATSTATUS_VUMETERS 0x80 -#define PATSTATUS_CHORDPLAYING 0x100 -#define PATSTATUS_DRAGNDROPEDIT 0x200 -#define PATSTATUS_DRAGNDROPPING 0x400 -#define PATSTATUS_MIDISPACINGPENDING 0x800 -#define PATSTATUS_CTRLDRAGSEL 0x1000 -#define PATSTATUS_PLUGNAMESINHEADERS 0x2000 //rewbs.patPlugName -#define PATSTATUS_PATTERNLOOP 0x4000 +#define PATSTATUS_MOUSEDRAGSEL 0x01 // Creating a selection using the mouse +#define PATSTATUS_KEYDRAGSEL 0x02 // Creating a selection using shortcuts +#define PATSTATUS_FOCUS 0x04 // Is the pattern editor focussed +#define PATSTATUS_FOLLOWSONG 0x08 // Does the cursor follow playback +#define PATSTATUS_RECORD 0x10 // Recording enabled +#define PATSTATUS_DRAGHSCROLL 0x20 // Some weird dragging stuff (?) +#define PATSTATUS_DRAGVSCROLL 0x40 // Some weird dragging stuff (?) +#define PATSTATUS_VUMETERS 0x80 // Display channel VU meters? +#define PATSTATUS_CHORDPLAYING 0x100 // Is a chord playing? (pretty much unused) +#define PATSTATUS_DRAGNDROPEDIT 0x200 // Drag & Drop editing (?) +#define PATSTATUS_DRAGNDROPPING 0x400 // Dragging a selection around +#define PATSTATUS_MIDISPACINGPENDING 0x800 // Unused (?) +#define PATSTATUS_CTRLDRAGSEL 0x1000 // Creating a selection using Ctrl +#define PATSTATUS_PLUGNAMESINHEADERS 0x2000 // Show plugin names in channel headers //rewbs.patPlugName +#define PATSTATUS_SELECTROW 0x4000 // Selecting a whole pattern row by clicking the row numbers // Row Spacing #define MAX_SPACING 64 // MAX_PATTERN_ROWS This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |