]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetcollapsable.C
several changes and some new insets, read the Changelog
[lyx.git] / src / insets / insetcollapsable.C
index 03537313d350a0585a03ab921da72a4a333f3b6f..3bc130945558ae3f71fca171c33886faac1d035e 100644 (file)
@@ -19,6 +19,7 @@
 #include "BufferView.h"
 #include "Painter.h"
 #include "support/LOstream.h"
+#include "support/lstrings.h"
 
 using std::ostream;
 
@@ -29,7 +30,7 @@ InsetCollapsable::InsetCollapsable() : InsetText()
     autocollapse = true;
     autoBreakRows = true;
     framecolor = LColor::footnoteframe;
-    widthOffset = 6; // 2+2 (behind+back), 1+1 (frame)
+    widthOffset = 2 * TEXT_TO_INSET_OFFSET + 2; // 1+1 (frame)
     button_length = button_top_y = button_bottom_y = 0;
     setInsetName("Collapsable");
 }
@@ -44,14 +45,11 @@ Inset * InsetCollapsable::Clone() const
     return result;
 }
 
+
 void InsetCollapsable::Write(Buffer const * buf, ostream & os) const
 {
-    os << getInsetName() << "\n\ncollapsed ";
-    if (display())
-       os << "false\n";
-    else
-       os << "true\n";
-    WriteParagraphData(buf, os);
+       os << "collapsed " << tostr(!display()) << "\n";
+       WriteParagraphData(buf, os);
 }
 
 
@@ -136,7 +134,7 @@ void InsetCollapsable::draw_collapsed(Painter & pain, LyXFont const & font,
 
 
 void InsetCollapsable::draw(BufferView * bv, LyXFont const & f, 
-                           int baseline, float & x) const
+                           int baseline, float & x, bool cleared) const
 {
     Painter & pain = bv->painter();
 
@@ -153,14 +151,12 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
     draw_collapsed(pain, f, baseline, x);
     x -= TEXT_TO_INSET_OFFSET;
 
-    int w =  InsetText::width(pain, f) + 2 * TEXT_TO_INSET_OFFSET;
+    int w =  InsetText::width(pain, f) + (2 * TEXT_TO_INSET_OFFSET);
     int h = ascent(pain,f) + descent(pain, f);
-    
-    pain.rectangle(int(x), baseline - ascent(pain, f), w, h, framecolor);
-
+    int save_x = static_cast<int>(x);
     x += TEXT_TO_INSET_OFFSET;
-    drawTextXOffset = int(x) - top_x;
-    InsetText::draw(bv, f, baseline, x);
+    InsetText::draw(bv, f, baseline, x, cleared);
+    pain.rectangle(save_x, baseline - ascent(pain, f), w, h, framecolor);
 }
 
 
@@ -252,3 +248,11 @@ int InsetCollapsable::getMaxTextWidth(Painter & pain,
     return getMaxWidth(pain, inset) -
        width_collapsed(pain, labelfont) - widthOffset;
 }
+
+
+void InsetCollapsable::update(BufferView * bv,
+                             LyXFont const & font, bool dodraw)
+{
+    drawTextXOffset = width_collapsed(bv->painter(), font);
+    InsetText::update(bv, font, dodraw);
+}