commit f5a246b185540e853a48147e75e5688d38b4cd46
Author: Enrico Forestieri <for...@lyx.org>
Date:   Fri May 16 21:58:21 2014 +0200

    Fix an on-screen representation glitch.
    
    If a layout has NextNoIndent set to true, the following paragraph
    is not indented on screen. LyX checks the previous layout for that
    style parameter to decide whether to indent or not. Of course,
    what matters is the latex output and the on-screen representation
    should match this output. Now, when a layout has NextNoIndent==true,
    the latex output is correctly not indented, while the on-screen
    representation may fail to match this output. This can occur when,
    for example, a standard paragraph is nested in the previous layout,
    because LyX would check the property of the nested layout instead
    of the container layout. Thus, LyX should check the property of a
    previous layout at the same depth for correctly deciding whether
    a paragraph has to be indented or not.
    See also http://www.lyx.org/trac/ticket/9055#comment:12 for an
    example document where the previous scenario actually occurs.

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index e122d6a..9e34839 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -1903,12 +1903,13 @@ int TextMetrics::leftMargin(int max_width,
                }
        }
 
-       // This happens after sections in standard classes. The 1.3.x
-       // code compared depths too, but it does not seem necessary
-       // (JMarc)
-       if (tclass.isDefaultLayout(par.layout())
-           && pit > 0 && pars[pit - 1].layout().nextnoindent)
-               parindent.erase();
+       // This happens after sections or environments in standard classes.
+       // We have to check the previous layout at same depth.
+       if (tclass.isDefaultLayout(par.layout()) && pit > 0) {
+           pit_type prev = text_->depthHook(pit, par.getDepth());
+           if (pars[prev < pit ? prev : pit - 1].layout().nextnoindent)
+                   parindent.erase();
+       }
 
        FontInfo const labelfont = text_->labelFont(par);
        FontMetrics const & labelfont_metrics = theFontMetrics(labelfont);
diff --git a/status.21x b/status.21x
index 9f32d4f..5e7c88f 100644
--- a/status.21x
+++ b/status.21x
@@ -119,6 +119,8 @@ What's new
 
 - Fix problem with drawing of background in math when selection is active.
 
+- Fix wrong on-screen indentation of a paragraph occurring in some cases.
+
 
 * INTERNALS
 

Reply via email to