From f771d9a99414d3ef08724a10314d1d5ae0fd1911 Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Tue, 28 Oct 2008 14:11:24 +0000 Subject: [PATCH] This is a conservative fix for the layout setting bug discussed in this thread: http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg145547.html The more dramatic fix suggested there can wait. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27164 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Paragraph.cpp | 16 ++++++++++++++-- src/Paragraph.h | 4 ++++ src/insets/InsetBox.cpp | 5 +---- src/insets/InsetBranch.cpp | 7 ++++++- src/insets/InsetCaption.cpp | 4 ++-- src/insets/InsetCollapsable.cpp | 2 +- src/insets/InsetCollapsable.h | 5 ++++- src/insets/InsetText.cpp | 2 +- 8 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index 1bfec20211..b51838279a 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -2457,12 +2457,24 @@ void Paragraph::setLayout(Layout const & layout) } +void Paragraph::setDefaultLayout(DocumentClass const & tc) +{ + setLayout(tc.defaultLayout()); +} + + +void Paragraph::setPlainLayout(DocumentClass const & tc) +{ + setLayout(tc.plainLayout()); +} + + void Paragraph::setPlainOrDefaultLayout(DocumentClass const & tclass) { if (usePlainLayout()) - setLayout(tclass.plainLayout()); + setPlainLayout(tclass); else - setLayout(tclass.defaultLayout()); + setDefaultLayout(tclass); } diff --git a/src/Paragraph.h b/src/Paragraph.h index 9d7e5f1d4c..978d96eedf 100644 --- a/src/Paragraph.h +++ b/src/Paragraph.h @@ -179,6 +179,10 @@ public: void setLayout(Layout const & layout); /// void setPlainOrDefaultLayout(DocumentClass const & tc); + /// + void setDefaultLayout(DocumentClass const & tc); + /// + void setPlainLayout(DocumentClass const & tc); /// This is the item depth, only used by enumerate and itemize signed char itemdepth; diff --git a/src/insets/InsetBox.cpp b/src/insets/InsetBox.cpp index 2f31dcc719..296b29a7a2 100644 --- a/src/insets/InsetBox.cpp +++ b/src/insets/InsetBox.cpp @@ -97,10 +97,7 @@ BoxTranslatorLoc const & boxtranslator_loc() InsetBox::InsetBox(Buffer const & buffer, string const & label) : InsetCollapsable(buffer), params_(label) -{ - if (forcePlainLayout()) - paragraphs().back().setLayout(buffer.params().documentClass().plainLayout()); -} +{} InsetBox::~InsetBox() diff --git a/src/insets/InsetBranch.cpp b/src/insets/InsetBranch.cpp index 1533b30329..2933e1b22c 100644 --- a/src/insets/InsetBranch.cpp +++ b/src/insets/InsetBranch.cpp @@ -41,7 +41,12 @@ namespace lyx { InsetBranch::InsetBranch(Buffer const & buf, InsetBranchParams const & params) : InsetCollapsable(buf), params_(params) -{} +{ + // override the default for InsetCollapsable, which is to + // use the plain layout. + DocumentClass const & dc = buf.params().documentClass(); + paragraphs().back().setDefaultLayout(dc); +} InsetBranch::~InsetBranch() diff --git a/src/insets/InsetCaption.cpp b/src/insets/InsetCaption.cpp index 8d2a857cff..f1713eabbe 100644 --- a/src/insets/InsetCaption.cpp +++ b/src/insets/InsetCaption.cpp @@ -53,8 +53,8 @@ InsetCaption::InsetCaption(Buffer const & buf) setAutoBreakRows(true); setDrawFrame(true); setFrameColor(Color_captionframe); - // There will always be only one - paragraphs().back().setLayout(buf.params().documentClass().plainLayout()); + // caption insets should use the plain layout + paragraphs().back().setPlainLayout(buf.params().documentClass()); } diff --git a/src/insets/InsetCollapsable.cpp b/src/insets/InsetCollapsable.cpp index ee65c1e64d..b4923ec804 100644 --- a/src/insets/InsetCollapsable.cpp +++ b/src/insets/InsetCollapsable.cpp @@ -85,7 +85,7 @@ InsetCollapsable::InsetCollapsable(Buffer const & buf) setAutoBreakRows(true); setDrawFrame(true); setFrameColor(Color_collapsableframe); - paragraphs().back().setLayout(dc.plainLayout()); + paragraphs().back().setPlainLayout(dc); } diff --git a/src/insets/InsetCollapsable.h b/src/insets/InsetCollapsable.h index 7ae146e039..92c91a2704 100644 --- a/src/insets/InsetCollapsable.h +++ b/src/insets/InsetCollapsable.h @@ -32,7 +32,10 @@ namespace frontend { class Painter; } */ class InsetCollapsable : public InsetText { public: - /// + /// By default, InsetCollapsable uses the plain layout. If you + /// want to override this in a subclass, you'll need to call + /// Paragraph::setDefaultLayout() in its constructor. See + /// InsetBranch for an example. InsetCollapsable(Buffer const &); /// InsetCollapsable(InsetCollapsable const & rhs); diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index db179fdcf5..105553e651 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -105,7 +105,7 @@ void InsetText::initParagraphs() paragraphs().push_back(Paragraph()); Paragraph & ourpar = paragraphs().back(); ourpar.setInsetOwner(this); - ourpar.setPlainOrDefaultLayout(buffer_->params().documentClass()); + ourpar.setDefaultLayout(buffer_->params().documentClass()); } -- 2.39.2