From: <sag...@us...> - 2010-01-08 12:01:48
|
Revision: 457 http://modplug.svn.sourceforge.net/modplug/?rev=457&view=rev Author: saga-games Date: 2010-01-08 12:01:38 +0000 (Fri, 08 Jan 2010) Log Message: ----------- [Fix] Instrument Editor: Toggle Release Node was buggy [Ref] Minor improvements Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_ins.h Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2010-01-07 17:10:05 UTC (rev 456) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2010-01-08 12:01:38 UTC (rev 457) @@ -247,14 +247,16 @@ ::EnableWindow(::GetDlgItem(m_hWnd, IDC_PATINSTROPLUGGUI), false); // Enable/disable multisequence controls according the current modtype. - GetDlgItem(IDC_STATIC_SEQUENCE_NAME)->EnableWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE); - GetDlgItem(IDC_EDIT_SEQUENCE_NAME)->EnableWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE); - GetDlgItem(IDC_EDIT_SEQNUM)->EnableWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE); - GetDlgItem(IDC_SPIN_SEQNUM)->EnableWindow( (m_pSndFile->GetType() == MOD_TYPE_MPT) ? SW_SHOW : SW_HIDE); + BOOL isMultiSeqAvail = (m_pSndFile->GetType() == MOD_TYPE_MPT) ? TRUE : FALSE; + GetDlgItem(IDC_STATIC_SEQUENCE_NAME)->EnableWindow(isMultiSeqAvail); + GetDlgItem(IDC_EDIT_SEQUENCE_NAME)->EnableWindow(isMultiSeqAvail); + GetDlgItem(IDC_EDIT_SEQNUM)->EnableWindow(isMultiSeqAvail); + GetDlgItem(IDC_SPIN_SEQNUM)->EnableWindow(isMultiSeqAvail); // Enable/disable pattern names - GetDlgItem(IDC_STATIC_PATTERNNAME)->EnableWindow( (m_pSndFile->GetType() & (MOD_TYPE_MPT|MOD_TYPE_IT|MOD_TYPE_XM)) ? SW_SHOW : SW_HIDE); - GetDlgItem(IDC_EDIT_PATTERNNAME)->EnableWindow( (m_pSndFile->GetType() & (MOD_TYPE_MPT|MOD_TYPE_IT|MOD_TYPE_XM)) ? SW_SHOW : SW_HIDE); + BOOL isPatNameAvail = (m_pSndFile->GetType() & (MOD_TYPE_MPT|MOD_TYPE_IT|MOD_TYPE_XM)) ? TRUE : FALSE; + GetDlgItem(IDC_STATIC_PATTERNNAME)->EnableWindow(isPatNameAvail); + GetDlgItem(IDC_EDIT_PATTERNNAME)->EnableWindow(isPatNameAvail); } //end rewbs.instroVST if (dwHintMask & HINT_MPTOPTIONS) @@ -1253,3 +1255,4 @@ m_OrderList.SelectSequence(newSeq); } } + Modified: trunk/OpenMPT/mptrack/View_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp 2010-01-07 17:10:05 UTC (rev 456) +++ trunk/OpenMPT/mptrack/View_ins.cpp 2010-01-08 12:01:38 UTC (rev 457) @@ -1436,7 +1436,7 @@ { BOOL bChanged = FALSE; if (pt.x >= m_rcClient.right - 2) nTick++; - if (m_nDragItem <= MAX_ENVPOINTS) + if (IsDragItemEnvPoint()) { bChanged = EnvSetValue(m_nDragItem - 1, nTick, nVal); } else @@ -1597,11 +1597,8 @@ { SetCapture(); m_dwStatus |= INSSTATUS_DRAGGING; - // refrsh active node colour - if(GetDocument()) - { - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); - } + // refresh active node colour + InvalidateRect(NULL, FALSE); } else { @@ -1757,10 +1754,9 @@ } void CViewInstrument::OnEnvToggleReleasNode() -//--------------------------------------------------- +//------------------------------------------- { - if(m_nDragItem < 2 || m_nDragItem >= EnvGetLastPoint()) return; - if(EnvToggleReleaseNode(m_nDragItem - 1)) + if(IsDragItemEnvPoint() && EnvToggleReleaseNode(m_nDragItem - 1)) { if(GetDocument() != nullptr) GetDocument()->SetModified(); InvalidateRect(NULL, FALSE); @@ -2258,7 +2254,7 @@ m_nDragItem = pEnv->nNodes; else m_nDragItem--; - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); + InvalidateRect(NULL, FALSE); } @@ -2271,7 +2267,7 @@ m_nDragItem = 1; else m_nDragItem++; - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } @@ -2279,14 +2275,13 @@ //----------------------------------------- { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; if(m_nDragItem == 1 || pEnv->Ticks[m_nDragItem - 1] == pEnv->Ticks[m_nDragItem - 2]) return; pEnv->Ticks[m_nDragItem - 1]--; - CModDoc *pModDoc = GetDocument(); // sanity checks are done in GetEnvelopePtr() already - pModDoc->SetModified(); - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); // sanity checks are done in GetEnvelopePtr() already + GetDocument()->SetModified(); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } @@ -2294,14 +2289,13 @@ //------------------------------------------ { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; if(m_nDragItem == 1 || (m_nDragItem < pEnv->nNodes && pEnv->Ticks[m_nDragItem - 1] == pEnv->Ticks[m_nDragItem])) return; pEnv->Ticks[m_nDragItem - 1]++; - CModDoc *pModDoc = GetDocument(); // sanity checks are done in GetEnvelopePtr() already - pModDoc->SetModified(); - pModDoc->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); + GetDocument()->SetModified(); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } @@ -2309,15 +2303,14 @@ //---------------------------------------------------- { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; if(pEnv->Values[m_nDragItem - 1] <= 64 - stepsize) pEnv->Values[m_nDragItem - 1] += stepsize; else pEnv->Values[m_nDragItem - 1] = 64; - CModDoc *pModDoc = GetDocument(); // sanity checks are done in GetEnvelopePtr() already - pModDoc->SetModified(); - pModDoc->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); + GetDocument()->SetModified(); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } @@ -2325,15 +2318,14 @@ //------------------------------------------------------ { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; if(pEnv->Values[m_nDragItem - 1] >= stepsize) pEnv->Values[m_nDragItem - 1] -= stepsize; else pEnv->Values[m_nDragItem - 1] = 0; - CModDoc *pModDoc = GetDocument(); // sanity checks are done in GetEnvelopePtr() already - pModDoc->SetModified(); - pModDoc->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); + GetDocument()->SetModified(); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } void CViewInstrument::EnvKbdInsertPoint() @@ -2341,7 +2333,7 @@ { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); if(pEnv == nullptr) return; - if(m_nDragItem > pEnv->nNodes) m_nDragItem = pEnv->nNodes; + if(!IsDragItemEnvPoint()) m_nDragItem = pEnv->nNodes; WORD newTick = pEnv->Ticks[pEnv->nNodes - 1] + 4; // if last point is selected: add point after last point BYTE newVal = pEnv->Values[pEnv->nNodes - 1]; // if some other point is selected: interpolate between this and next point (if there's room between them) @@ -2360,7 +2352,7 @@ //--------------------------------------- { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || pEnv->nNodes == 0) return; + if(pEnv == nullptr || !IsDragItemEnvPoint() || pEnv->nNodes == 0) return; if(m_nDragItem > pEnv->nNodes) m_nDragItem = pEnv->nNodes; EnvRemovePoint(m_nDragItem - 1); } @@ -2370,11 +2362,11 @@ //---------------------------------------- { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; if(!EnvGetLoop()) EnvSetLoopStart(0); EnvSetLoopStart(m_nDragItem - 1); - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } @@ -2382,14 +2374,14 @@ //-------------------------------------- { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; if(!EnvGetLoop()) { EnvSetLoop(true); EnvSetLoopStart(0); } EnvSetLoopEnd(m_nDragItem - 1); - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } @@ -2397,11 +2389,11 @@ //------------------------------------------- { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; if(!EnvGetSustain()) EnvSetSustain(true); EnvSetSustainStart(m_nDragItem - 1); - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } @@ -2409,14 +2401,14 @@ //----------------------------------------- { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; if(!EnvGetSustain()) { EnvSetSustain(true); EnvSetSustainStart(0); } EnvSetSustainEnd(m_nDragItem - 1); - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); // sanity checks are done in GetEnvelopePtr() already + InvalidateRect(NULL, FALSE); } @@ -2424,9 +2416,12 @@ //--------------------------------------------- { INSTRUMENTENVELOPE *pEnv = GetEnvelopePtr(); - if(pEnv == nullptr || m_nDragItem == 0 || m_nDragItem > pEnv->nNodes) return; - EnvToggleReleaseNode(m_nDragItem - 1); - GetDocument()->UpdateAllViews(NULL, (m_nInstrument << HINT_SHIFT_INS) | HINT_ENVELOPE, NULL); // sanity checks are done in GetEnvelopePtr() already + if(pEnv == nullptr || !IsDragItemEnvPoint()) return; + if(EnvToggleReleaseNode(m_nDragItem - 1)) + { + GetDocument()->SetModified(); + InvalidateRect(NULL, FALSE); + } } Modified: trunk/OpenMPT/mptrack/View_ins.h =================================================================== --- trunk/OpenMPT/mptrack/View_ins.h 2010-01-07 17:10:05 UTC (rev 456) +++ trunk/OpenMPT/mptrack/View_ins.h 2010-01-08 12:01:38 UTC (rev 457) @@ -109,6 +109,8 @@ void EnvKbdSetSustainEnd(); void EnvKbdToggleReleaseNode(); + bool IsDragItemEnvPoint() const { return (m_nDragItem < 1 || m_nDragItem > EnvGetLastPoint() + 1) ? false : true; } + //////////////////////// // Misc stuff void UpdateScrollSize(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |