Box mouse select
This commit is contained in:
@@ -315,9 +315,30 @@ void OnCommand(Event event) {
|
||||
}
|
||||
}
|
||||
|
||||
Int p = ScreenSpaceToBufferPos(selected.window, selected.view, selected.buffer, mouse);
|
||||
Int p = ScreenSpaceToBufferPos(selected.window, selected.view, selected.buffer, mouse);
|
||||
Caret &caret = selected.view->carets[0];
|
||||
caret = SetFrontWithAnchor(caret, DocumentAnchor, p);
|
||||
|
||||
if (event.alt && event.shift) {
|
||||
Int front = GetFront(DocumentAnchor);
|
||||
XY from = PosToXY(selected.buffer, front);
|
||||
XY to = ScreenSpaceToXY(selected.window, selected.view, mouse);
|
||||
Int min_line = Min(from.y, to.y);
|
||||
Int max_line = Max(from.y, to.y);
|
||||
Int min_col = Min(from.x, to.x);
|
||||
Int max_col = Max(from.x, to.x);
|
||||
|
||||
selected.view->carets.len = 0;
|
||||
for (Int line = min_line; line <= max_line; line += 1) {
|
||||
XY left_xy = {min_col, line};
|
||||
XY right_xy = {max_col, line};
|
||||
Int left = XYToPosWithoutNL(selected.buffer, left_xy);
|
||||
Int right = XYToPosWithoutNL(selected.buffer, right_xy);
|
||||
Caret new_selection = MakeCaret(left, right);
|
||||
Add(&selected.view->carets, new_selection);
|
||||
}
|
||||
MergeCarets(selected.buffer, &selected.view->carets);
|
||||
}
|
||||
}
|
||||
|
||||
if (ResizerSelected.id != -1 && Mouse(LEFT_UP)) {
|
||||
|
||||
Reference in New Issue
Block a user