commit 4fa54014d7a8317ec97f95dbcd782d9065ba8dec
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Thu Oct 13 20:33:57 2016 +0200

    When breaking an empty paragraph reduces depth, set layout too
    
    This requires an adaptation of the Separator inset insertion code,
    which has been duly provided by Enrico.
    (cherry picked from commit b162bd6d2b4284d02d7f4ce5883ae4bef3880883)
---
 src/Text.cpp  |    8 ++++++--
 src/Text3.cpp |    8 +-------
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/src/Text.cpp b/src/Text.cpp
index a6176bc..36d0dec 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -764,9 +764,13 @@ void Text::breakParagraph(Cursor & cur, bool inverse_logic)
        Layout const & layout = cpar.layout();
 
        if (cur.lastpos() == 0 && !cpar.allowEmpty()) {
-               if (changeDepthAllowed(cur, DEC_DEPTH))
+               if (changeDepthAllowed(cur, DEC_DEPTH)) {
                        changeDepth(cur, DEC_DEPTH);
-               else {
+                       pit_type const prev = depthHook(cpit, cpar.getDepth());
+                       docstring const & lay = pars_[prev].layout().name();
+                       if (lay != layout.name())
+                               setLayout(cur, lay);
+               } else {
                        docstring const & lay = cur.paragraph().usePlainLayout()
                            ? tclass.plainLayoutName() : 
tclass.defaultLayoutName();
                        if (lay != layout.name())
diff --git a/src/Text3.cpp b/src/Text3.cpp
index bfb5d79..45cc763 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -1088,13 +1088,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                Paragraph const & par = pars_[pit];
                bool lastpar = (pit == pit_type(pars_.size() - 1));
                Paragraph const & nextpar = lastpar ? par : pars_[pit + 1];
-               pit_type prev = pit;
-               if (pit > 0) {
-                       if (!pars_[pit - 1].layout().isEnvironment())
-                               prev = depthHook(pit, par.getDepth());
-                       else if (pars_[pit - 1].getDepth() >= par.getDepth())
-                               prev = pit - 1;
-               }
+               pit_type prev = pit > 0 ? depthHook(pit, par.getDepth()) : pit;
                if (prev < pit && cur.pos() == par.beginOfBody()
                    && !par.size() && !par.isEnvSeparator(cur.pos())
                    && !par.layout().isCommand()

Reply via email to