diff options
Diffstat (limited to 'src/Editor.cxx')
| -rw-r--r-- | src/Editor.cxx | 20 | 
1 files changed, 16 insertions, 4 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index 41f274529..3f7c9db0f 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -6743,18 +6743,30 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {  		return pdoc->CharAt(wParam);  	case SCI_SETCURRENTPOS: -		SetSelection(wParam, sel.MainAnchor()); +		if (sel.IsRectangular()) { +			sel.Rectangular().caret.SetPosition(wParam); +			SetRectangularRange(); +			Redraw(); +		} else { +			SetSelection(wParam, sel.MainAnchor()); +		}  		break;  	case SCI_GETCURRENTPOS: -		return sel.MainCaret(); +		return sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret();  	case SCI_SETANCHOR: -		SetSelection(sel.MainCaret(), wParam); +		if (sel.IsRectangular()) { +			sel.Rectangular().anchor.SetPosition(wParam); +			SetRectangularRange(); +			Redraw(); +		} else { +			SetSelection(sel.MainCaret(), wParam); +		}  		break;  	case SCI_GETANCHOR: -		return sel.MainAnchor(); +		return sel.IsRectangular() ? sel.Rectangular().anchor.Position() : sel.MainAnchor();  	case SCI_SETSELECTIONSTART:  		SetSelection(Platform::Maximum(sel.MainCaret(), wParam), wParam); | 
