Improve scrollbar

This commit is contained in:
Krzosa Karol
2024-07-22 14:43:27 +02:00
parent ce20a1d940
commit 9f2aafb95e
2 changed files with 14 additions and 7 deletions

View File

@@ -9,10 +9,10 @@ struct View {
Rect2I scrollbar_rect;
Vec2I scroll;
bool mouse_selecting_scrollbar;
bool mouse_selecting;
Range selection_anchor;
float mouse_scroller_offset;
int mouse_selecting_scrollbar;
bool mouse_selecting;
Range selection_anchor;
double mouse_scroller_offset;
Buffer *buffer;
Array<Caret> carets;

View File

@@ -351,15 +351,22 @@ void HandleKeybindings(View *_view) {
double line_count = (double)view.buffer->line_starts.len;
double size_y = (double)GetSize(view.scrollbar_rect).y;
double p = _mouse.y - view.scrollbar_rect.min.y;
if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
view.mouse_scroller_offset = (float)((s.rect.min.y - p) / size_y);
}
view.mouse_selecting_scrollbar = true;
} else if (!IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
view.mouse_selecting_scrollbar = false;
}
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
if (_mouse.y < s.rect.min.y || _mouse.y > s.rect.max.y) {
view.scroll.y = (Int)(p / size_y * line_count * view.line_spacing);
view.mouse_scroller_offset = -GetSize(s.rect).y / 2.0 / size_y;
} else {
view.mouse_scroller_offset = (s.rect.min.y - p) / size_y;
}
}
if (view.mouse_selecting_scrollbar) {
double v = p / size_y;
v = v + (view.mouse_scroller_offset);