Debugger: Handle memview select right click better.

Shouldn't reset if you click inside.  Also should basically ignore
modifiers, that's how it normally behaves.
This commit is contained in:
Unknown W. Brackets 2023-01-01 22:49:04 -08:00
parent a7101b128f
commit bba748d627
2 changed files with 29 additions and 18 deletions

View File

@ -118,9 +118,9 @@ LRESULT CALLBACK CtrlMemView::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
break;
case WM_MOUSEWHEEL:
if (GET_WHEEL_DELTA_WPARAM(wParam) > 0) {
ccp->ScrollWindow(-3, GotoModeFromModifiers());
ccp->ScrollWindow(-3, GotoModeFromModifiers(false));
} else if (GET_WHEEL_DELTA_WPARAM(wParam) < 0) {
ccp->ScrollWindow(3, GotoModeFromModifiers());
ccp->ScrollWindow(3, GotoModeFromModifiers(false));
}
break;
case WM_ERASEBKGND:
@ -344,16 +344,16 @@ void CtrlMemView::onPaint(WPARAM wParam, LPARAM lParam) {
void CtrlMemView::onVScroll(WPARAM wParam, LPARAM lParam) {
switch (wParam & 0xFFFF) {
case SB_LINEDOWN:
ScrollWindow(1, GotoModeFromModifiers());
ScrollWindow(1, GotoModeFromModifiers(false));
break;
case SB_LINEUP:
ScrollWindow(-1, GotoModeFromModifiers());
ScrollWindow(-1, GotoModeFromModifiers(false));
break;
case SB_PAGEDOWN:
ScrollWindow(visibleRows_, GotoModeFromModifiers());
ScrollWindow(visibleRows_, GotoModeFromModifiers(false));
break;
case SB_PAGEUP:
ScrollWindow(-visibleRows_, GotoModeFromModifiers());
ScrollWindow(-visibleRows_, GotoModeFromModifiers(false));
break;
default:
return;
@ -384,22 +384,22 @@ void CtrlMemView::onKeyDown(WPARAM wParam, LPARAM lParam) {
switch (wParam & 0xFFFF) {
case VK_DOWN:
ScrollCursor(rowSize_, GotoModeFromModifiers());
ScrollCursor(rowSize_, GotoModeFromModifiers(false));
break;
case VK_UP:
ScrollCursor(-rowSize_, GotoModeFromModifiers());
ScrollCursor(-rowSize_, GotoModeFromModifiers(false));
break;
case VK_LEFT:
ScrollCursor(-1, GotoModeFromModifiers());
ScrollCursor(-1, GotoModeFromModifiers(false));
break;
case VK_RIGHT:
ScrollCursor(1, GotoModeFromModifiers());
ScrollCursor(1, GotoModeFromModifiers(false));
break;
case VK_NEXT:
ScrollWindow(visibleRows_, GotoModeFromModifiers());
ScrollWindow(visibleRows_, GotoModeFromModifiers(false));
break;
case VK_PRIOR:
ScrollWindow(-visibleRows_, GotoModeFromModifiers());
ScrollWindow(-visibleRows_, GotoModeFromModifiers(false));
break;
case VK_TAB:
SendMessage(GetParent(wnd),WM_DEB_TABPRESSED,0,0);
@ -467,9 +467,11 @@ void CtrlMemView::redraw() {
}
}
CtrlMemView::GotoMode CtrlMemView::GotoModeFromModifiers() {
CtrlMemView::GotoMode CtrlMemView::GotoModeFromModifiers(bool isRightClick) {
GotoMode mode = GotoMode::RESET;
if (KeyDownAsync(VK_SHIFT)) {
if (isRightClick) {
mode = GotoMode::RESET_IF_OUTSIDE;
} else if (KeyDownAsync(VK_SHIFT)) {
if (KeyDownAsync(VK_CONTROL))
mode = GotoMode::EXTEND;
else
@ -482,7 +484,7 @@ void CtrlMemView::onMouseDown(WPARAM wParam, LPARAM lParam, int button) {
int x = LOWORD(lParam);
int y = HIWORD(lParam);
GotoPoint(x, y, GotoModeFromModifiers());
GotoPoint(x, y, GotoModeFromModifiers(button == 2));
}
void CtrlMemView::onMouseUp(WPARAM wParam, LPARAM lParam, int button) {
@ -583,7 +585,7 @@ void CtrlMemView::onMouseUp(WPARAM wParam, LPARAM lParam, int button) {
int x = LOWORD(lParam);
int y = HIWORD(lParam);
ReleaseCapture();
GotoPoint(x, y, GotoModeFromModifiers());
GotoPoint(x, y, GotoModeFromModifiers(button == 2));
}
void CtrlMemView::onMouseMove(WPARAM wParam, LPARAM lParam, int button) {
@ -591,7 +593,7 @@ void CtrlMemView::onMouseMove(WPARAM wParam, LPARAM lParam, int button) {
int y = HIWORD(lParam);
if (button & 1) {
GotoPoint(x, y, GotoModeFromModifiers());
GotoPoint(x, y, GotoModeFromModifiers(button == 2));
}
}
@ -620,6 +622,14 @@ void CtrlMemView::UpdateSelectRange(uint32_t target, GotoMode mode) {
lastSelectReset_ = target;
break;
case GotoMode::RESET_IF_OUTSIDE:
if (target < selectRangeStart_ || target >= selectRangeEnd_) {
selectRangeStart_ = target;
selectRangeEnd_ = target + 1;
lastSelectReset_ = target;
}
break;
case GotoMode::FROM_CUR:
selectRangeStart_ = lastSelectReset_ > target ? target : lastSelectReset_;
selectRangeEnd_ = selectRangeStart_ == lastSelectReset_ ? target + 1 : lastSelectReset_ + 1;

View File

@ -71,10 +71,11 @@ private:
enum class GotoMode {
RESET,
RESET_IF_OUTSIDE,
FROM_CUR,
EXTEND,
};
static GotoMode GotoModeFromModifiers();
static GotoMode GotoModeFromModifiers(bool isRightClick);
void UpdateSelectRange(uint32_t target, GotoMode mode);
void GotoPoint(int x, int y, GotoMode mode);
void ScrollWindow(int lines, GotoMode mdoe);