]> git.eshelyaron.com Git - emacs.git/commitdiff
A better fix for tab-line mouse highlight on TTY frames
authorEli Zaretskii <eliz@gnu.org>
Sat, 19 Oct 2019 07:42:14 +0000 (10:42 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 19 Oct 2019 07:42:14 +0000 (10:42 +0300)
* src/dispnew.c (mode_line_string):
* src/xdisp.c (note_mode_line_or_margin_highlight): Remove
recently-added workarounds for incorrect TTY mouse highlight:
they are no longer needed.
(mark_window_display_accurate_1): Set the header_line_p and
tab_line_p flags of the window's current_matrix if the window
displays these.
(display_mode_line): Set the header_line_p and tab_line_p
flags of the window's desired_matrix if the window displays
these.  (Bug#37807)

src/dispnew.c
src/xdisp.c

index 47bf3c26cb27e68d49dd51faea8d675f4c9ddaa2..4cdc76f5bcffee0c1024c40aa4838aa5207f29d4 100644 (file)
@@ -5517,15 +5517,7 @@ mode_line_string (struct window *w, enum window_part part,
   else if (part == ON_TAB_LINE)
     row = MATRIX_TAB_LINE_ROW (w->current_matrix);
   else
-    {
-      row = MATRIX_HEADER_LINE_ROW (w->current_matrix);
-      /* On TTY frames the matrix's tab_line_p flag is not set
-        (FIXME!), so we need to adjust by hand.  */
-      if (!FRAME_WINDOW_P (XFRAME (w->frame))
-         && window_wants_tab_line (w))
-
-       row++;
-    }
+    row = MATRIX_HEADER_LINE_ROW (w->current_matrix);
   y0 = *y - row->y;
   *y = row - MATRIX_FIRST_TEXT_ROW (w->current_matrix);
 
index 0d8f9a1edd51ee05e1aa87b424c0a54d0e3de5ea..8cbda08efc5b827cd13da888936f901c921e5e1c 100644 (file)
@@ -15988,6 +15988,8 @@ mark_window_display_accurate_1 (struct window *w, bool accurate_p)
       w->current_matrix->buffer = b;
       w->current_matrix->begv = BUF_BEGV (b);
       w->current_matrix->zv = BUF_ZV (b);
+      w->current_matrix->header_line_p = window_wants_header_line (w);
+      w->current_matrix->tab_line_p = window_wants_tab_line (w);
 
       w->last_cursor_vpos = w->cursor.vpos;
       w->last_cursor_off_p = w->cursor_off_p;
@@ -24947,7 +24949,12 @@ display_mode_line (struct window *w, enum face_id face_id, Lisp_Object format)
 
   it.glyph_row->mode_line_p = true;
   if (face_id == TAB_LINE_FACE_ID)
-    it.glyph_row->tab_line_p = true;
+    {
+      it.glyph_row->tab_line_p = true;
+      w->desired_matrix->tab_line_p = true;
+    }
+  else if (face_id == HEADER_LINE_FACE_ID)
+    w->desired_matrix->header_line_p = true;
 
   /* FIXME: This should be controlled by a user option.  But
      supporting such an option is not trivial, since the mode line is
@@ -32488,11 +32495,6 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
                ? MATRIX_TAB_LINE_ROW (w->current_matrix)
                : MATRIX_HEADER_LINE_ROW (w->current_matrix)));
 
-      /* On TTY frames the matrix's tab_line_p flag is not set
-        (FIXME!), so we need to adjust by hand.  */
-      if (!FRAME_WINDOW_P (f) && area == ON_HEADER_LINE
-         && window_wants_tab_line (w))
-       row++;
       /* Find the glyph under the mouse pointer.  */
       if (row->mode_line_p && row->enabled_p)
        {
@@ -32707,11 +32709,7 @@ note_mode_line_or_margin_highlight (Lisp_Object window, int x, int y,
                  ? (w->current_matrix)->nrows - 1
                  : (area == ON_TAB_LINE
                     ? 0
-                    : ((w->current_matrix->tab_line_p
-                        /* The window_wants_tab_line test is for TTY
-                           frames where the tab_line_p flag is not
-                           set (FIXME!).  */
-                        || window_wants_tab_line (w))
+                    : (w->current_matrix->tab_line_p
                        ? 1
                        : 0)));