]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetcollapsable.C
The markDirty() and fitCursor() changes
[lyx.git] / src / insets / insetcollapsable.C
index c87ad118d5154992326ff95d40395183e7d81774..1be8c4398c94c0076bca0ad11afe144cd3010ec5 100644 (file)
@@ -24,6 +24,7 @@
 #include "lyxtext.h"
 #include "WordLangTuple.h"
 #include "funcrequest.h"
+#include "buffer.h"
 
 #include "frontends/font_metrics.h"
 #include "frontends/Painter.h"
@@ -183,14 +184,14 @@ void InsetCollapsable::draw_collapsed(Painter & pain,
 
 
 void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
-                           int baseline, float & x, bool cleared) const
+                           int baseline, float & x) const
 {
        lyx::Assert(bv);
        cache(bv);
 
        if (need_update != NONE) {
                const_cast<InsetText *>(&inset)->update(bv, f, true);
-               bv->text->status(bv, LyXText::CHANGED_IN_DRAW);
+               bv->text->postChangedInDraw();
                need_update = NONE;
                return;
        }
@@ -214,18 +215,6 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
        if (!owner())
                x += static_cast<float>(scroll());
 
-       if (!cleared && (inset.need_update == InsetText::FULL ||
-                        inset.need_update == InsetText::INIT ||
-                        top_x != int(x) ||
-                        top_baseline != baseline))
-       {
-               // we don't need anymore to clear here we just have to tell
-               // the underlying LyXText that it should do the RowClear!
-               inset.setUpdateStatus(bv, InsetText::FULL);
-               bv->text->status(bv, LyXText::CHANGED_IN_DRAW);
-               return;
-       }
-
        top_x = int(x);
        topx_set = true;
        top_baseline = baseline;
@@ -233,9 +222,7 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
        int const bl = baseline - ascent(bv, f) + ascent_collapsed();
 
        draw_collapsed(pain, bl, old_x);
-       inset.draw(bv, f,
-                          bl + descent_collapsed() + inset.ascent(bv, f),
-                          x, cleared);
+       inset.draw(bv, f, bl + descent_collapsed() + inset.ascent(bv, f), x);
        if (x < (top_x + button_length + TEXT_TO_INSET_OFFSET))
                x = top_x + button_length + TEXT_TO_INSET_OFFSET;
 }
@@ -259,7 +246,8 @@ void InsetCollapsable::edit(BufferView * bv, int xp, int yp,
                first_after_edit = true;
                if (!bv->lockInset(this))
                        return;
-               bv->updateInset(this, false);
+               bv->updateInset(this);
+               bv->buffer()->markDirty();
                inset.edit(bv);
        } else {
                if (!bv->lockInset(this))
@@ -287,7 +275,8 @@ void InsetCollapsable::edit(BufferView * bv, bool front)
                if (!bv->lockInset(this))
                        return;
                inset.setUpdateStatus(bv, InsetText::FULL);
-               bv->updateInset(this, false);
+               bv->updateInset(this);
+               bv->buffer()->markDirty();
                inset.edit(bv, front);
                first_after_edit = true;
        } else {
@@ -321,7 +310,7 @@ void InsetCollapsable::insetUnlock(BufferView * bv)
        inset.insetUnlock(bv);
        if (scroll())
                scroll(bv, 0.0F);
-       bv->updateInset(this, false);
+       bv->updateInset(this);
 }
 
 
@@ -351,11 +340,13 @@ bool InsetCollapsable::lfunMouseRelease(FuncRequest const & cmd)
 // should not be called on inset open!
 //                     inset.insetButtonRelease(bv, 0, 0, button);
                        inset.setUpdateStatus(bv, InsetText::FULL);
-                       bv->updateInset(this, false);
+                       bv->updateInset(this);
+                       bv->buffer()->markDirty();
                } else {
                        collapsed_ = true;
                        bv->unlockInset(this);
-                       bv->updateInset(this, false);
+                       bv->updateInset(this);
+                       bv->buffer()->markDirty();
                }
        } else if (!collapsed_ && (cmd.y > button_bottom_y)) {
                LyXFont font(LyXFont::ALL_SANE);
@@ -563,12 +554,6 @@ void InsetCollapsable::setFont(BufferView * bv, LyXFont const & font,
 }
 
 
-bool InsetCollapsable::doClearArea() const
-{
-       return inset.doClearArea();
-}
-
-
 LyXText * InsetCollapsable::getLyXText(BufferView const * bv,
                                       bool const recursive) const
 {
@@ -644,7 +629,7 @@ void InsetCollapsable::open(BufferView * bv)
        if (!collapsed_) return;
 
        collapsed_ = false;
-       bv->updateInset(this, false);
+       bv->updateInset(this);
 }
 
 
@@ -654,7 +639,7 @@ void InsetCollapsable::close(BufferView * bv) const
                return;
 
        collapsed_ = true;
-       bv->updateInset(const_cast<InsetCollapsable *>(this), false);
+       bv->updateInset(const_cast<InsetCollapsable *>(this));
 }