emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r99799: Fix bug #5816.


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r99799: Fix bug #5816.
Date: Thu, 01 Apr 2010 15:37:28 +0300
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 99799
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Thu 2010-04-01 15:37:28 +0300
message:
  Fix bug #5816.
  
   xdisp.c (set_cursor_from_row): Fix cursor positioning when the
   string with `cursor' property comes from an `after-string' overlay.
modified:
  src/ChangeLog
  src/xdisp.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-04-01 07:10:31 +0000
+++ b/src/ChangeLog     2010-04-01 12:37:28 +0000
@@ -1,3 +1,9 @@
+2010-04-01  Eli Zaretskii  <address@hidden>
+
+       * xdisp.c (set_cursor_from_row): Fix cursor positioning when the
+       string with `cursor' property comes from an `after-string'
+       overlay.  (Bug#5816)
+
 2010-04-01  Glenn Morris  <address@hidden>
 
        * Makefile.in (LIBTIFF, LIBJPEG, LIBPNG, LIBGIF, LIBXPM, XFT_LIBS):

=== modified file 'src/xdisp.c'
--- a/src/xdisp.c       2010-03-31 14:28:16 +0000
+++ b/src/xdisp.c       2010-04-01 12:37:28 +0000
@@ -12823,12 +12823,19 @@
 
                  str = glyph->object;
                  tem = string_buffer_position_lim (w, str, pos, pos_after, 0);
-                 if (pos <= tem)
+                 if (tem == 0  /* from overlay */
+                     || pos <= tem)
                    {
                      /* If the string from which this glyph came is
                         found in the buffer at point, then we've
-                        found the glyph we've been looking for.  */
-                     if (tem == pt_old)
+                        found the glyph we've been looking for.  If
+                        it comes from an overlay (tem == 0), and it
+                        has the `cursor' property on one of its
+                        glyphs, record that glyph as a candidate for
+                        displaying the cursor.  (As in the
+                        unidirectional version, we will display the
+                        cursor on the last candidate we find.)  */
+                     if (tem == 0 || tem == pt_old)
                        {
                          /* The glyphs from this string could have
                             been reordered.  Find the one with the
@@ -12861,9 +12868,11 @@
                                }
                            }
 
-                         goto compute_x;
+                         if (tem == pt_old)
+                           goto compute_x;
                        }
-                     pos = tem + 1; /* don't find previous instances */
+                     if (tem)
+                       pos = tem + 1; /* don't find previous instances */
                    }
                  /* This string is not what we want; skip all of the
                     glyphs that came from it.  */


reply via email to

[Prev in Thread] Current Thread [Next in Thread]