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