* Use caca_set_cursor() in test/input.c.tags/v0.99.beta14
| @@ -350,6 +350,11 @@ static void ncurses_display(caca_display_t *dp) | |||||
| ncurses_write_utf32(*chars++); | ncurses_write_utf32(*chars++); | ||||
| } | } | ||||
| } | } | ||||
| x = cucul_get_cursor_x(dp->cv); | |||||
| y = cucul_get_cursor_y(dp->cv); | |||||
| move(y, x); | |||||
| refresh(); | refresh(); | ||||
| } | } | ||||
| @@ -531,6 +536,11 @@ static int ncurses_get_event(caca_display_t *dp, caca_event_t *ev) | |||||
| return 1; | return 1; | ||||
| } | } | ||||
| static void ncurses_set_cursor(caca_display_t *dp, int flags) | |||||
| { | |||||
| curs_set(flags ? 2 : 0); | |||||
| } | |||||
| /* | /* | ||||
| * XXX: following functions are local | * XXX: following functions are local | ||||
| */ | */ | ||||
| @@ -803,7 +813,7 @@ int ncurses_install(caca_display_t *dp) | |||||
| dp->drv.handle_resize = ncurses_handle_resize; | dp->drv.handle_resize = ncurses_handle_resize; | ||||
| dp->drv.get_event = ncurses_get_event; | dp->drv.get_event = ncurses_get_event; | ||||
| dp->drv.set_mouse = NULL; | dp->drv.set_mouse = NULL; | ||||
| dp->drv.set_cursor = NULL; | |||||
| dp->drv.set_cursor = ncurses_set_cursor; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -258,6 +258,7 @@ static void slang_display(caca_display_t *dp) | |||||
| #endif | #endif | ||||
| } | } | ||||
| } | } | ||||
| SLsmg_gotorc(cucul_get_cursor_y(dp->cv), cucul_get_cursor_x(dp->cv)); | |||||
| SLsmg_refresh(); | SLsmg_refresh(); | ||||
| } | } | ||||
| @@ -402,6 +403,11 @@ static int slang_get_event(caca_display_t *dp, caca_event_t *ev) | |||||
| return 1; | return 1; | ||||
| } | } | ||||
| static void slang_set_cursor(caca_display_t *dp, int flags) | |||||
| { | |||||
| SLtt_set_cursor_visibility(flags ? 1 : 0); | |||||
| } | |||||
| /* | /* | ||||
| * XXX: following functions are local | * XXX: following functions are local | ||||
| */ | */ | ||||
| @@ -522,7 +528,7 @@ int slang_install(caca_display_t *dp) | |||||
| dp->drv.handle_resize = slang_handle_resize; | dp->drv.handle_resize = slang_handle_resize; | ||||
| dp->drv.get_event = slang_get_event; | dp->drv.get_event = slang_get_event; | ||||
| dp->drv.set_mouse = NULL; | dp->drv.set_mouse = NULL; | ||||
| dp->drv.set_cursor = NULL; | |||||
| dp->drv.set_cursor = slang_set_cursor; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -64,6 +64,7 @@ struct driver_private | |||||
| Bool autorepeat; | Bool autorepeat; | ||||
| #endif | #endif | ||||
| uint32_t max_char; | uint32_t max_char; | ||||
| int cursor_flags; | |||||
| }; | }; | ||||
| #define UNICODE_XLFD_SUFFIX "-iso10646-1" | #define UNICODE_XLFD_SUFFIX "-iso10646-1" | ||||
| @@ -243,6 +244,8 @@ static int x11_init_graphics(caca_display_t *dp) | |||||
| DefaultScreen(dp->drv.p->dpy))); | DefaultScreen(dp->drv.p->dpy))); | ||||
| dp->drv.p->pointer = None; | dp->drv.p->pointer = None; | ||||
| dp->drv.p->cursor_flags = 0; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -329,6 +332,18 @@ static void x11_display(caca_display_t *dp) | |||||
| } | } | ||||
| } | } | ||||
| /* Print the cursor if necessary */ | |||||
| if(dp->drv.p->cursor_flags) | |||||
| { | |||||
| XSetForeground(dp->drv.p->dpy, dp->drv.p->gc, | |||||
| dp->drv.p->colors[0xfff]); | |||||
| x = cucul_get_cursor_x(dp->cv); | |||||
| y = cucul_get_cursor_y(dp->cv); | |||||
| XFillRectangle(dp->drv.p->dpy, dp->drv.p->pixmap, dp->drv.p->gc, | |||||
| x * dp->drv.p->font_width, y * dp->drv.p->font_height, | |||||
| dp->drv.p->font_width, dp->drv.p->font_height); | |||||
| } | |||||
| XCopyArea(dp->drv.p->dpy, dp->drv.p->pixmap, dp->drv.p->window, | XCopyArea(dp->drv.p->dpy, dp->drv.p->pixmap, dp->drv.p->window, | ||||
| dp->drv.p->gc, 0, 0, | dp->drv.p->gc, 0, 0, | ||||
| dp->cv->width * dp->drv.p->font_width, | dp->cv->width * dp->drv.p->font_width, | ||||
| @@ -536,6 +551,11 @@ static void x11_set_mouse(caca_display_t *dp, int flags) | |||||
| XSync(dp->drv.p->dpy, False); | XSync(dp->drv.p->dpy, False); | ||||
| } | } | ||||
| static void x11_set_cursor(caca_display_t *dp, int flags) | |||||
| { | |||||
| dp->drv.p->cursor_flags = flags; | |||||
| } | |||||
| /* | /* | ||||
| * XXX: following functions are local | * XXX: following functions are local | ||||
| */ | */ | ||||
| @@ -770,7 +790,7 @@ int x11_install(caca_display_t *dp) | |||||
| dp->drv.handle_resize = x11_handle_resize; | dp->drv.handle_resize = x11_handle_resize; | ||||
| dp->drv.get_event = x11_get_event; | dp->drv.get_event = x11_get_event; | ||||
| dp->drv.set_mouse = x11_set_mouse; | dp->drv.set_mouse = x11_set_mouse; | ||||
| dp->drv.set_cursor = NULL; | |||||
| dp->drv.set_cursor = x11_set_cursor; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -54,6 +54,7 @@ int main(int argc, char *argv[]) | |||||
| printf("Can't create display\n"); | printf("Can't create display\n"); | ||||
| return -1; | return -1; | ||||
| } | } | ||||
| caca_set_cursor(dp, 1); | |||||
| cucul_set_color_ansi(cv, CUCUL_WHITE, CUCUL_BLUE); | cucul_set_color_ansi(cv, CUCUL_WHITE, CUCUL_BLUE); | ||||
| cucul_put_str(cv, 1, 1, "Text entries - press tab to cycle"); | cucul_put_str(cv, 1, 1, "Text entries - press tab to cycle"); | ||||
| @@ -87,8 +88,7 @@ int main(int argc, char *argv[]) | |||||
| } | } | ||||
| /* Put the cursor on the active textentry */ | /* Put the cursor on the active textentry */ | ||||
| cucul_set_color_ansi(cv, CUCUL_LIGHTRED, CUCUL_LIGHTRED); | |||||
| cucul_put_char(cv, 2 + entries[e].cursor, 3 * e + 4, ' '); | |||||
| cucul_gotoxy(cv, 2 + entries[e].cursor, 3 * e + 4); | |||||
| caca_refresh_display(dp); | caca_refresh_display(dp); | ||||