]> git.eshelyaron.com Git - emacs.git/commitdiff
Make display_min_width work from the mode line
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 24 Nov 2021 13:43:37 +0000 (14:43 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 24 Nov 2021 13:48:17 +0000 (14:48 +0100)
* src/xdisp.c (display_min_width): Make this work from mode line
constructs via display_string.

src/xdisp.c

index e8de0634a168d57a2e5bb4f2ca49b38ef72e7612..cda7e04522c67fba60c0958e2f69cf815c8283de 100644 (file)
@@ -5214,11 +5214,18 @@ display_min_width (struct it *it, ptrdiff_t bufpos,
       if (!it->glyph_row)
        return;
 
-      /* Check that we're really right after the sequence of
-        characters covered by this `min-width'.  */
-      if (bufpos > BEGV
-         && EQ (it->min_width_property,
-                get_display_property (bufpos - 1, Qmin_width, object)))
+      /* When called form display_string (i.e., the mode line),
+        we're being called with a string as the object, and we
+        may be called with many sub-strings belonging to the same
+        :propertize run. */
+      if ((bufpos == 0
+          && !EQ (it->min_width_property,
+                  get_display_property (0, Qmin_width, object)))
+         /* In a buffer -- check that we're really right after the
+            sequence of characters covered by this `min-width'.  */
+         || (bufpos > BEGV
+             && EQ (it->min_width_property,
+                    get_display_property (bufpos - 1, Qmin_width, object))))
        {
          Lisp_Object w = Qnil;
          double width;
@@ -5258,6 +5265,11 @@ display_min_width (struct it *it, ptrdiff_t bufpos,
   if (CONSP (width_spec))
     {
       if (bufpos == BEGV
+         /* Mode line (see above).  */
+         || (bufpos == 0
+             && !EQ (it->min_width_property,
+                     get_display_property (0, Qmin_width, object)))
+         /* Buffer.  */
          || (bufpos > BEGV
              && !EQ (width_spec,
                      get_display_property (bufpos - 1, Qmin_width, object))))