basic mouse support

This commit is contained in:
cy384 2020-12-21 19:38:12 -05:00
parent af285b6e6c
commit f119a63078
3 changed files with 18 additions and 0 deletions

View File

@ -149,6 +149,15 @@ void draw_screen(Rect* r)
}
}
// p is in window local coordinates
void mouse_click(Point p, bool click)
{
int row = p.v / con.cell_height;
int col = p.h / con.cell_width;
vterm_mouse_move(con.vterm, row, col, VTERM_MOD_NONE);
vterm_mouse_button(con.vterm, 1, click, VTERM_MOD_NONE);
}
void draw_screen_color(Rect* r)
{
// get the intersection of our console region and the update region

View File

@ -38,4 +38,6 @@ Rect cell_rect(int x, int y, Rect bounds);
void toggle_cursor(void);
void check_cursor(void);
void mouse_click(Point p, bool click);
void update_console_colors(void);

View File

@ -646,6 +646,7 @@ void event_loop(void)
int exit_event_loop = 0;
EventRecord event;
WindowPtr eventWin;
Point local_mouse_position;
// maximum length of time to sleep (in ticks)
// GetCaretTime gets the number of ticks between system caret on/off time
@ -713,9 +714,15 @@ void event_loop(void)
break;
case inContent:
GetMouse(&local_mouse_position);
mouse_click(local_mouse_position, true);
break;
}
break;
case mouseUp:
GetMouse(&local_mouse_position);
mouse_click(local_mouse_position, false);
break;
}
YieldToAnyThread();