]> git.eshelyaron.com Git - emacs.git/commitdiff
Update Android port
authorPo Lu <luangruo@yahoo.com>
Sun, 18 Jun 2023 03:30:54 +0000 (11:30 +0800)
committerPo Lu <luangruo@yahoo.com>
Sun, 18 Jun 2023 03:30:54 +0000 (11:30 +0800)
* src/window.h (GCALIGNED_STRUCT): Improve documentation of
`last_mark'.
* src/xdisp.c (mark_window_display_accurate_1): Don't set
`last_mark' to -1 if the mark is inactive.

src/window.h
src/xdisp.c

index 6b151efbe60d177866f5d95566cb27ef66353b2f..5a620c958de0810a1e46b46183821620b223944a 100644 (file)
@@ -302,7 +302,7 @@ struct window
 #endif
 
     /* Value of mark in the selected window at the time of the last
-       redisplay.  */
+       redisplay.  -1 if the mark is not valid or active.  */
     ptrdiff_t last_mark;
 
     /* Line number and position of a line somewhere above the top of the
index d0b0720b0058976ad235d391c1da9f4b4f95626a..117df85e97e8bf6936ddad864067c26ac6a5ad93 100644 (file)
@@ -17468,7 +17468,7 @@ mark_window_display_accurate_1 (struct window *w, bool accurate_p)
   struct buffer *b = XBUFFER (w->contents);
 #ifdef HAVE_TEXT_CONVERSION
   ptrdiff_t prev_point, prev_mark;
-#endif
+#endif /* HAVE_TEXT_CONVERSION */
 
   w->last_modified = accurate_p ? BUF_MODIFF (b) : 0;
   w->last_overlay_modified = accurate_p ? BUF_OVERLAY_MODIFF (b) : 0;
@@ -17501,14 +17501,19 @@ mark_window_display_accurate_1 (struct window *w, bool accurate_p)
 #ifdef HAVE_TEXT_CONVERSION
       prev_point = w->last_point;
       prev_mark = w->last_mark;
-#endif
+#endif /* HAVE_TEXT_CONVERSION */
 
       if (w == XWINDOW (selected_window))
        w->last_point = BUF_PT (b);
       else
        w->last_point = marker_position (w->pointm);
 
-      if (XMARKER (BVAR (b, mark))->buffer == b)
+      /* w->last_mark is recorded for text conversion purposes.
+         Input methods aren't interested in the value of the mark
+         if it is inactive, so set it to -1 if it's not.  */
+
+      if (XMARKER (BVAR (b, mark))->buffer == b
+         && !NILP (BVAR (b, mark_active)))
        w->last_mark = marker_position (BVAR (b, mark));
       else
        w->last_mark = -1;
@@ -17536,7 +17541,7 @@ mark_window_display_accurate_1 (struct window *w, bool accurate_p)
          && FRAME_WINDOW_P (WINDOW_XFRAME (w))
          && w == XWINDOW (WINDOW_XFRAME (w)->selected_window))
        report_point_change (WINDOW_XFRAME (w), w, b);
-#endif
+#endif /* HAVE_TEXT_CONVERSION */
 
       w->window_end_valid = true;
       w->update_mode_line = false;