]> git.lyx.org Git - features.git/commitdiff
This is a conservative fix for the layout setting bug discussed in
authorRichard Heck <rgheck@comcast.net>
Tue, 28 Oct 2008 14:11:24 +0000 (14:11 +0000)
committerRichard Heck <rgheck@comcast.net>
Tue, 28 Oct 2008 14:11:24 +0000 (14:11 +0000)
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
src/Paragraph.h
src/insets/InsetBox.cpp
src/insets/InsetBranch.cpp
src/insets/InsetCaption.cpp
src/insets/InsetCollapsable.cpp
src/insets/InsetCollapsable.h
src/insets/InsetText.cpp

index 1bfec20211c7b94bbaf6f4cfa668c353fb96c8cb..b51838279a67f214e79ffd7cbaec9f2ff988584a 100644 (file)
@@ -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);
 }
 
 
index 9d7e5f1d4c86063c990994a60f3c2c87302bdbd1..978d96eedf1dc1679fd0f8859948a10874cc6f38 100644 (file)
@@ -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;
index 2f31dcc71986ab3b63433298d1f0077c016d14c2..296b29a7a2ce1698c29754cb002d6c41a8abbe04 100644 (file)
@@ -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()
index 1533b3032982f8c0972bcfcfb75a7783f1c8080c..2933e1b22c79fdb62d08383b6fb4a03c0c352fcb 100644 (file)
@@ -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()
index 8d2a857cff7f89d7c06f5d45a7790681a0cd135d..f1713eabbe2116ca9388cc9bd3bd24f03b8b37fa 100644 (file)
@@ -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());
 }
 
 
index ee65c1e64d44f6774c9742bd4808c41cbd5cb469..b4923ec8048161928673d4933a6b51e086444196 100644 (file)
@@ -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); 
 }
 
 
index 7ae146e0390bb94039eb660c5d8a0fd05cf1bf45..92c91a2704f4acc48376077cc53c3f3dca1d9424 100644 (file)
@@ -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);
index db179fdcf59373e1aaf9bf824d514572856c6265..105553e651c603dfc9e2b5da45587804d2b17746 100644 (file)
@@ -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());
 }