Author: emaste
Date: Tue May 12 18:09:54 2015
New Revision: 282823
URL: https://svnweb.freebsd.org/changeset/base/282823

Log:
  MFC r281944: vt(4): Simplify mouse area detection
  
    vt_is_cursor_in_area needs to return true if any part of the mouse
    cursor is visible in the rectangle area. Replace the existing test with
    a simpler version of a test for overlapping rectangles.
  
  Sponsored by: The FreeBSD Foundation

Modified:
  stable/10/sys/dev/vt/vt_core.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/vt/vt_core.c
==============================================================================
--- stable/10/sys/dev/vt/vt_core.c      Tue May 12 18:08:07 2015        
(r282822)
+++ stable/10/sys/dev/vt/vt_core.c      Tue May 12 18:09:54 2015        
(r282823)
@@ -1018,7 +1018,7 @@ vt_determine_colors(term_char_t c, int c
 int
 vt_is_cursor_in_area(const struct vt_device *vd, const term_rect_t *area)
 {
-       unsigned int mx, my, x1, y1, x2, y2;
+       unsigned int mx, my;
 
        /*
         * We use the cursor position saved during the current refresh,
@@ -1027,18 +1027,12 @@ vt_is_cursor_in_area(const struct vt_dev
        mx = vd->vd_mx_drawn + vd->vd_curwindow->vw_draw_area.tr_begin.tp_col;
        my = vd->vd_my_drawn + vd->vd_curwindow->vw_draw_area.tr_begin.tp_row;
 
-       x1 = area->tr_begin.tp_col;
-       y1 = area->tr_begin.tp_row;
-       x2 = area->tr_end.tp_col;
-       y2 = area->tr_end.tp_row;
-
-       if (((mx >= x1 && x2 - 1 >= mx) ||
-            (mx < x1 && mx + vd->vd_mcursor->width >= x1)) &&
-           ((my >= y1 && y2 - 1 >= my) ||
-            (my < y1 && my + vd->vd_mcursor->height >= y1)))
-               return (1);
-
-       return (0);
+       if (mx >= area->tr_end.tp_col ||
+           mx + vd->vd_mcursor->width <= area->tr_begin.tp_col ||
+           my >= area->tr_end.tp_row ||
+           my + vd->vd_mcursor->height <= area->tr_begin.tp_row)
+               return (0);
+       return (1);
 }
 
 static void
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to