svn commit: r270721 - head/sys/dev/vt
Jean-Sebastien Pedron
dumbbell at FreeBSD.org
Wed Aug 27 17:16:53 UTC 2014
Author: dumbbell
Date: Wed Aug 27 17:16:52 2014
New Revision: 270721
URL: http://svnweb.freebsd.org/changeset/base/270721
Log:
vt(4): If the terminal shrinks, make sure the mouse is inside the new area
MFC after: 1 week
Modified:
head/sys/dev/vt/vt_core.c
Modified: head/sys/dev/vt/vt_core.c
==============================================================================
--- head/sys/dev/vt/vt_core.c Wed Aug 27 15:10:28 2014 (r270720)
+++ head/sys/dev/vt/vt_core.c Wed Aug 27 17:16:52 2014 (r270721)
@@ -1381,9 +1381,20 @@ vt_change_font(struct vt_window *vw, str
*/
vtfont_unref(vw->vw_font);
vw->vw_font = vtfont_ref(vf);
- vt_compute_drawable_area(vw);
}
+ /*
+ * Compute the drawable area and move the mouse cursor inside
+ * it, in case the new area is smaller than the previous one.
+ */
+ vt_compute_drawable_area(vw);
+ vd->vd_mx = min(vd->vd_mx,
+ vw->vw_draw_area.tr_end.tp_col -
+ vw->vw_draw_area.tr_begin.tp_col - 1);
+ vd->vd_my = min(vd->vd_my,
+ vw->vw_draw_area.tr_end.tp_row -
+ vw->vw_draw_area.tr_begin.tp_row - 1);
+
/* Force a full redraw the next timer tick. */
if (vd->vd_curwindow == vw) {
vt_set_border(vw, vf, TC_BLACK);
@@ -2272,8 +2283,8 @@ vt_resize(struct vt_device *vd)
if (!(vd->vd_flags & VDF_TEXTMODE) && vw->vw_font == NULL)
vw->vw_font = vtfont_ref(&vt_font_default);
VT_UNLOCK(vd);
+
/* Resize terminal windows */
- vt_compute_drawable_area(vw);
while (vt_change_font(vw, vw->vw_font) == EBUSY) {
DPRINTF(100, "%s: vt_change_font() is busy, "
"window %d\n", __func__, i);
More information about the svn-src-head
mailing list