diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2021-02-16 15:38:59 -0500 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2021-02-16 15:38:59 -0500 |
commit | 4b8db533619ee8eef64ded0793f413faaa7609c2 (patch) | |
tree | 8b3f158897ae2ff2f3e8f78ad0712bc4b40b328f /buffer.c | |
parent | 824c4ff4be5a0bf55b6644fed06fcfe2248c4301 (diff) |
detecting errors in build output
Diffstat (limited to 'buffer.c')
-rw-r--r-- | buffer.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -2085,6 +2085,38 @@ void buffer_render(TextBuffer *buffer, Rect r) { buffer->x1 = x1; buffer->y1 = y1; buffer->x2 = x2; buffer->y2 = y2; + // handle mouse clicks + for (u32 i = 0; i < ted->nmouse_clicks[SDL_BUTTON_LEFT]; ++i) { + v2 point = ted->mouse_clicks[SDL_BUTTON_LEFT][i]; + u8 times = ted->mouse_click_times[SDL_BUTTON_LEFT][i]; + BufferPos pos; + if (buffer_pixels_to_pos(buffer, point, &pos)) { + // user clicked on buffer + if (!ted->menu) + ted->active_buffer = buffer; + if (buffer == ted->active_buffer) { + buffer_cursor_move_to_pos(buffer, pos); + + switch ((times - 1) % 3) { + case 0: break; // single-click + case 1: // double-click: select word + buffer_select_word(buffer); + break; + case 2: // triple-click: select line + buffer_select_line(buffer); + break; + } + ted->drag_buffer = buffer; + } + } + } + + if (rect_contains_point(rect4(x1, y1, x2, y2), ted->mouse_pos)) { + // scroll with mouse wheel + double scroll_speed = 2.5; + buffer_scroll(buffer, ted->scroll_total_x * scroll_speed, ted->scroll_total_y * scroll_speed); + } + // get screen coordinates of cursor v2 cursor_display_pos = buffer_pos_to_pixels(buffer, buffer->cursor_pos); // the rectangle that the cursor is rendered as @@ -2283,6 +2315,7 @@ void buffer_render(TextBuffer *buffer, Rect r) { } gl_geometry_draw(); } + } // if you do: |