diff options
author | yokota <yokota@FreeBSD.org> | 2000-03-31 16:05:46 +0000 |
---|---|---|
committer | yokota <yokota@FreeBSD.org> | 2000-03-31 16:05:46 +0000 |
commit | ec0df31c65a92ec4abf516f31fde6c07ef136dd8 (patch) | |
tree | eae4e14d31313a306f2eed0e38eeb57ada63ab3c /sys/dev/syscons/scmouse.c | |
parent | f6d236e3a23822aff581ece94f1dbb92418fc696 (diff) | |
download | FreeBSD-src-ec0df31c65a92ec4abf516f31fde6c07ef136dd8.zip FreeBSD-src-ec0df31c65a92ec4abf516f31fde6c07ef136dd8.tar.gz |
- Fix SC_ALT_MOUSE_IMAGE; don't blink the mouse cursor.
- Fix non-destructive, underline text cursor.
Diffstat (limited to 'sys/dev/syscons/scmouse.c')
-rw-r--r-- | sys/dev/syscons/scmouse.c | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/sys/dev/syscons/scmouse.c b/sys/dev/syscons/scmouse.c index 509eb35..b94980e 100644 --- a/sys/dev/syscons/scmouse.c +++ b/sys/dev/syscons/scmouse.c @@ -119,13 +119,14 @@ sc_mouse_move(scr_stat *scp, int x, int y) int s; s = spltty(); - scp->mouse_xpos = x; - scp->mouse_ypos = y; - if (ISGRAPHSC(scp)) + scp->mouse_xpos = scp->mouse_oldxpos = x; + scp->mouse_ypos = scp->mouse_oldypos = y; + if (scp->font_size <= 0) scp->mouse_pos = scp->mouse_oldpos = 0; else scp->mouse_pos = scp->mouse_oldpos = (y/scp->font_size - scp->yoff)*scp->xsize + x/8 - scp->xoff; + scp->status |= MOUSE_MOVED; splx(s); } @@ -133,8 +134,6 @@ sc_mouse_move(scr_stat *scp, int x, int y) static void set_mouse_pos(scr_stat *scp) { - static int last_xpos = -1, last_ypos = -1; - if (scp->mouse_xpos < scp->xoff*8) scp->mouse_xpos = scp->xoff*8; if (scp->mouse_ypos < scp->yoff*scp->font_size) @@ -152,7 +151,7 @@ set_mouse_pos(scr_stat *scp) scp->mouse_ypos = (scp->ysize + scp->yoff)*scp->font_size - 1; } - if (scp->mouse_xpos != last_xpos || scp->mouse_ypos != last_ypos) { + if (scp->mouse_xpos != scp->mouse_oldxpos || scp->mouse_ypos != scp->mouse_oldypos) { scp->status |= MOUSE_MOVED; scp->mouse_pos = (scp->mouse_ypos/scp->font_size - scp->yoff)*scp->xsize @@ -175,6 +174,9 @@ sc_draw_mouse_image(scr_stat *scp) ++scp->sc->videoio_in_progress; (*scp->rndr->draw_mouse)(scp, scp->mouse_xpos, scp->mouse_ypos, TRUE); scp->mouse_oldpos = scp->mouse_pos; + scp->mouse_oldxpos = scp->mouse_xpos; + scp->mouse_oldypos = scp->mouse_ypos; + scp->status |= MOUSE_VISIBLE; --scp->sc->videoio_in_progress; } @@ -206,6 +208,7 @@ sc_remove_mouse_image(scr_stat *scp) mark_for_update(scp, i + 1); } #endif /* PC98 */ + scp->status &= ~MOUSE_VISIBLE; --scp->sc->videoio_in_progress; } @@ -666,10 +669,9 @@ sc_mouse_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, s = spltty(); if (!(scp->sc->flags & SC_MOUSE_ENABLED)) { scp->sc->flags |= SC_MOUSE_ENABLED; - if (!ISGRAPHSC(cur_scp)) { - cur_scp->status |= MOUSE_VISIBLE; + cur_scp->status &= ~MOUSE_HIDDEN; + if (!ISGRAPHSC(cur_scp)) mark_all(cur_scp); - } splx(s); return 0; } else { @@ -749,10 +751,7 @@ sc_mouse_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, sc_touch_scrn_saver(); } -#ifndef SC_NO_CUTPASTE - if (!ISGRAPHSC(cur_scp) && (cur_scp->sc->flags & SC_MOUSE_ENABLED)) - cur_scp->status |= MOUSE_VISIBLE; -#endif /* SC_NO_CUTPASTE */ + cur_scp->status &= ~MOUSE_HIDDEN; if (cur_scp->mouse_signal) { /* has controlling process died? */ @@ -806,10 +805,7 @@ sc_mouse_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, if (mouse->u.event.value > 0) sc_touch_scrn_saver(); -#ifndef SC_NO_CUTPASTE - if (!ISGRAPHSC(cur_scp) && (cur_scp->sc->flags & SC_MOUSE_ENABLED)) - cur_scp->status |= MOUSE_VISIBLE; -#endif /* SC_NO_CUTPASTE */ + cur_scp->status &= ~MOUSE_HIDDEN; if (cur_scp->mouse_signal) { if (cur_scp->mouse_proc && |