From b162bd6d2b4284d02d7f4ce5883ae4bef3880883 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 13 Oct 2016 20:33:57 +0200 Subject: [PATCH] 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. --- 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 007271d639..16bf8995ca 100644 --- a/src/Text.cpp +++ b/src/Text.cpp @@ -738,9 +738,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 eafce2854c..85d0c3cd73 100644 --- a/src/Text3.cpp +++ b/src/Text3.cpp @@ -1089,13 +1089,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() -- 2.39.5