cleaned up the selection code a bit
This commit is contained in:
parent
d54d8587c9
commit
359f5a2eed
@ -29,7 +29,6 @@ TrackView::TrackView()
|
|||||||
|
|
||||||
selectStartTrack = selectStopTrack = 0;
|
selectStartTrack = selectStopTrack = 0;
|
||||||
selectStartRow = selectStopRow = 0;
|
selectStartRow = selectStopRow = 0;
|
||||||
selectActive = false;
|
|
||||||
|
|
||||||
this->hwnd = NULL;
|
this->hwnd = NULL;
|
||||||
|
|
||||||
@ -223,7 +222,7 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
|
|||||||
|
|
||||||
if (!RectVisible(hdc, &patternDataRect)) continue;
|
if (!RectVisible(hdc, &patternDataRect)) continue;
|
||||||
|
|
||||||
bool selected = selectActive && (track >= selectLeft && track <= selectRight) && (row >= selectTop && row <= selectBottom);
|
bool selected = (track >= selectLeft && track <= selectRight) && (row >= selectTop && row <= selectBottom);
|
||||||
|
|
||||||
HBRUSH baseBrush = bgBaseBrush;
|
HBRUSH baseBrush = bgBaseBrush;
|
||||||
HBRUSH darkBrush = bgDarkBrush;
|
HBRUSH darkBrush = bgDarkBrush;
|
||||||
@ -309,8 +308,6 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
|
|||||||
|
|
||||||
void TrackView::copy()
|
void TrackView::copy()
|
||||||
{
|
{
|
||||||
if (!selectActive) return;
|
|
||||||
|
|
||||||
int selectLeft = min(selectStartTrack, selectStopTrack);
|
int selectLeft = min(selectStartTrack, selectStopTrack);
|
||||||
int selectRight = max(selectStartTrack, selectStopTrack);
|
int selectRight = max(selectStartTrack, selectStopTrack);
|
||||||
int selectTop = min(selectStartRow, selectStopRow);
|
int selectTop = min(selectStartRow, selectStopRow);
|
||||||
@ -373,10 +370,10 @@ void TrackView::copy()
|
|||||||
|
|
||||||
void TrackView::cut()
|
void TrackView::cut()
|
||||||
{
|
{
|
||||||
int selectLeft = min(selectStartTrack, selectStopTrack);
|
/* int selectLeft = min(selectStartTrack, selectStopTrack);
|
||||||
int selectRight = max(selectStartTrack, selectStopTrack);
|
int selectRight = max(selectStartTrack, selectStopTrack);
|
||||||
int selectTop = min(selectStartRow, selectStopRow);
|
int selectTop = min(selectStartRow, selectStopRow);
|
||||||
int selectBottom = max(selectStartRow, selectStopRow);
|
int selectBottom = max(selectStartRow, selectStopRow); */
|
||||||
|
|
||||||
copy();
|
copy();
|
||||||
#if 0
|
#if 0
|
||||||
@ -394,10 +391,10 @@ void TrackView::cut()
|
|||||||
|
|
||||||
void TrackView::paste()
|
void TrackView::paste()
|
||||||
{
|
{
|
||||||
int selectLeft = min(selectStartTrack, selectStopTrack);
|
/* int selectLeft = min(selectStartTrack, selectStopTrack);
|
||||||
int selectRight = max(selectStartTrack, selectStopTrack);
|
int selectRight = max(selectStartTrack, selectStopTrack);
|
||||||
int selectTop = min(selectStartRow, selectStopRow);
|
int selectTop = min(selectStartRow, selectStopRow);
|
||||||
int selectBottom = max(selectStartRow, selectStopRow);
|
int selectBottom = max(selectStartRow, selectStopRow); */
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::setupScrollBars()
|
void TrackView::setupScrollBars()
|
||||||
@ -465,18 +462,19 @@ void TrackView::setEditRow(int newEditRow)
|
|||||||
// clamp to document
|
// clamp to document
|
||||||
editRow = min(max(editRow, 0), rows - 1);
|
editRow = min(max(editRow, 0), rows - 1);
|
||||||
|
|
||||||
bool selecting = GetKeyState(VK_SHIFT) < 0 ? true : false;
|
if (oldEditRow != editRow)
|
||||||
if (selecting)
|
{
|
||||||
|
if (GetKeyState(VK_SHIFT) < 0)
|
||||||
{
|
{
|
||||||
selectActive = true;
|
|
||||||
selectStopRow = editRow;
|
selectStopRow = editRow;
|
||||||
invalidateRange(selectStartTrack, selectStopTrack, oldEditRow, editRow);
|
invalidateRange(selectStartTrack, selectStopTrack, oldEditRow, editRow);
|
||||||
}
|
}
|
||||||
else if (selectActive)
|
else
|
||||||
{
|
{
|
||||||
// leave select mode
|
|
||||||
selectActive = false;
|
|
||||||
invalidateRange(selectStartTrack, selectStopTrack, selectStartRow, selectStopRow);
|
invalidateRange(selectStartTrack, selectStopTrack, selectStartRow, selectStopRow);
|
||||||
|
selectStartRow = selectStopRow = editRow;
|
||||||
|
selectStartTrack = selectStopTrack = editTrack;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
invalidateRow(oldEditRow);
|
invalidateRow(oldEditRow);
|
||||||
@ -494,18 +492,19 @@ void TrackView::setEditTrack(int newEditTrack)
|
|||||||
editTrack = max(editTrack, 0);
|
editTrack = max(editTrack, 0);
|
||||||
editTrack = min(editTrack, getTrackCount() - 1);
|
editTrack = min(editTrack, getTrackCount() - 1);
|
||||||
|
|
||||||
bool selecting = GetKeyState(VK_SHIFT) < 0 ? true : false;
|
if (oldEditTrack != editTrack)
|
||||||
if (selecting)
|
{
|
||||||
|
if (GetKeyState(VK_SHIFT) < 0)
|
||||||
{
|
{
|
||||||
selectActive = true;
|
|
||||||
selectStopTrack = editTrack;
|
selectStopTrack = editTrack;
|
||||||
invalidateRange(oldEditTrack, editTrack, selectStartRow, selectStopRow);
|
invalidateRange(oldEditTrack, editTrack, selectStartRow, selectStopRow);
|
||||||
}
|
}
|
||||||
else if (selectActive)
|
else
|
||||||
{
|
{
|
||||||
// leave select mode
|
|
||||||
selectActive = false;
|
|
||||||
invalidateRange(selectStartTrack, selectStopTrack, selectStartRow, selectStopRow);
|
invalidateRange(selectStartTrack, selectStopTrack, selectStartRow, selectStopRow);
|
||||||
|
selectStartRow = selectStopRow = editRow;
|
||||||
|
selectStartTrack = selectStopTrack = editTrack;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
invalidateTrack(oldEditTrack);
|
invalidateTrack(oldEditTrack);
|
||||||
@ -529,14 +528,13 @@ static int getScrollPos(HWND hwnd, int bar)
|
|||||||
|
|
||||||
void TrackView::setRows(int rows)
|
void TrackView::setRows(int rows)
|
||||||
{
|
{
|
||||||
int oldRows = getRows();
|
|
||||||
this->rows = rows;
|
this->rows = rows;
|
||||||
InvalidateRect(getWin(), NULL, FALSE);
|
InvalidateRect(getWin(), NULL, FALSE);
|
||||||
setEditRow(min(editRow, rows - 1));
|
setEditRow(min(editRow, rows - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LRESULT TrackView::onVScroll(UINT sbCode, int newPos)
|
LRESULT TrackView::onVScroll(UINT sbCode, int /*newPos*/)
|
||||||
{
|
{
|
||||||
switch (sbCode)
|
switch (sbCode)
|
||||||
{
|
{
|
||||||
@ -569,7 +567,7 @@ LRESULT TrackView::onVScroll(UINT sbCode, int newPos)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT TrackView::onHScroll(UINT sbCode, int newPos)
|
LRESULT TrackView::onHScroll(UINT sbCode, int /*newPos*/)
|
||||||
{
|
{
|
||||||
switch (sbCode)
|
switch (sbCode)
|
||||||
{
|
{
|
||||||
@ -629,13 +627,8 @@ void TrackView::onDelete()
|
|||||||
else MessageBeep(0);
|
else MessageBeep(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT TrackView::onKeyDown(UINT keyCode, UINT flags)
|
LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
||||||
{
|
{
|
||||||
bool refreshCaret = false;
|
|
||||||
bool ctrlDown = GetKeyState(VK_CONTROL) < 0 ? true : false;
|
|
||||||
bool shiftDown = GetKeyState(VK_SHIFT) < 0 ? true : false;
|
|
||||||
bool altDown = GetKeyState(VK_MENU) < 0 ? true : false;
|
|
||||||
|
|
||||||
if (editString.empty())
|
if (editString.empty())
|
||||||
{
|
{
|
||||||
switch (keyCode)
|
switch (keyCode)
|
||||||
@ -649,17 +642,6 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT flags)
|
|||||||
case VK_PRIOR: setEditRow(editRow - windowRows / 2); break;
|
case VK_PRIOR: setEditRow(editRow - windowRows / 2); break;
|
||||||
case VK_NEXT: setEditRow(editRow + windowRows / 2); break;
|
case VK_NEXT: setEditRow(editRow + windowRows / 2); break;
|
||||||
|
|
||||||
case VK_SHIFT:
|
|
||||||
// if (selectActive) invalidateRange(selectStartTrack, selectStopTrack, selectStartRow, selectStopRow);
|
|
||||||
if (!selectActive)
|
|
||||||
{
|
|
||||||
selectStartTrack = selectStopTrack = editTrack;
|
|
||||||
selectStartRow = selectStopRow = editRow;
|
|
||||||
// selectActive = true;
|
|
||||||
// printf("select active\n");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -681,11 +663,6 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT flags)
|
|||||||
|
|
||||||
case VK_CANCEL:
|
case VK_CANCEL:
|
||||||
case VK_ESCAPE:
|
case VK_ESCAPE:
|
||||||
if (selectActive)
|
|
||||||
{
|
|
||||||
selectActive = false;
|
|
||||||
invalidateRange(selectStartTrack, selectStopTrack, selectStartRow, selectStopRow);
|
|
||||||
}
|
|
||||||
if (editString.size() > 0)
|
if (editString.size() > 0)
|
||||||
{
|
{
|
||||||
// return to old value (i.e don't clear)
|
// return to old value (i.e don't clear)
|
||||||
@ -700,8 +677,8 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT flags)
|
|||||||
|
|
||||||
LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
||||||
{
|
{
|
||||||
printf("char: \"%c\" (%d) - flags: %x\n", (char)keyCode, keyCode, flags);
|
printf("char: \"%c\" (%d) - flags: %x\n", char(keyCode), keyCode, flags);
|
||||||
switch ((char)keyCode)
|
switch (char(keyCode))
|
||||||
{
|
{
|
||||||
case '.':
|
case '.':
|
||||||
// only one '.' allowed
|
// only one '.' allowed
|
||||||
@ -721,8 +698,8 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
|||||||
case '7':
|
case '7':
|
||||||
case '8':
|
case '8':
|
||||||
case '9':
|
case '9':
|
||||||
editString.push_back(keyCode);
|
editString.push_back(char(keyCode));
|
||||||
printf("accepted: %c - %s\n", (char)keyCode, editString.c_str());
|
printf("accepted: %c - %s\n", char(keyCode), editString.c_str());
|
||||||
invalidatePos(editTrack, editRow);
|
invalidatePos(editTrack, editRow);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -731,9 +708,6 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
|||||||
|
|
||||||
LRESULT TrackView::onSize(int width, int height)
|
LRESULT TrackView::onSize(int width, int height)
|
||||||
{
|
{
|
||||||
const int oldWindowWidth = windowWidth;
|
|
||||||
const int oldWindowHeight = windowHeight;
|
|
||||||
|
|
||||||
windowWidth = width;
|
windowWidth = width;
|
||||||
windowHeight = height;
|
windowHeight = height;
|
||||||
|
|
||||||
@ -830,7 +804,6 @@ static LRESULT CALLBACK trackViewWindowProc(HWND hwnd, UINT msg, WPARAM wParam,
|
|||||||
ASSERT(NULL != trackView);
|
ASSERT(NULL != trackView);
|
||||||
return trackView->windowProc(hwnd, msg, wParam, lParam);
|
return trackView->windowProc(hwnd, msg, wParam, lParam);
|
||||||
}
|
}
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ATOM registerTrackViewWindowClass(HINSTANCE hInstance)
|
ATOM registerTrackViewWindowClass(HINSTANCE hInstance)
|
||||||
@ -861,7 +834,7 @@ HWND TrackView::create(HINSTANCE hInstance, HWND hwndParent)
|
|||||||
WS_VSCROLL | WS_HSCROLL | WS_CHILD | WS_VISIBLE,
|
WS_VSCROLL | WS_HSCROLL | WS_CHILD | WS_VISIBLE,
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT, // x, y
|
CW_USEDEFAULT, CW_USEDEFAULT, // x, y
|
||||||
CW_USEDEFAULT, CW_USEDEFAULT, // width, height
|
CW_USEDEFAULT, CW_USEDEFAULT, // width, height
|
||||||
hwndParent, NULL, GetModuleHandle(NULL), (void*)this
|
hwndParent, NULL, hInstance, (void*)this
|
||||||
);
|
);
|
||||||
return hwnd;
|
return hwnd;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,7 +116,6 @@ private:
|
|||||||
return int(syncData->getTrackCount());
|
return int(syncData->getTrackCount());
|
||||||
};
|
};
|
||||||
|
|
||||||
bool selectActive;
|
|
||||||
int selectStartTrack, selectStopTrack;
|
int selectStartTrack, selectStopTrack;
|
||||||
int selectStartRow, selectStopRow;
|
int selectStartRow, selectStopRow;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user