On Fri, May 16, 2014 at 03:31:51PM +0200, Enrico Forestieri wrote:
> commit 95787a0a4c3f6c037b22cb4ba8c98f2e8fa988de
> Author: Enrico Forestieri <[email protected]>
> Date:   Fri May 16 15:11:08 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.

Richard, this could go to branch. It's only cosmetic, though.

> diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
> index 790d706..0be9058 100644
> --- a/src/TextMetrics.cpp
> +++ b/src/TextMetrics.cpp
> @@ -1907,12 +1907,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);

-- 
Enrico

Reply via email to