]> git.lyx.org Git - lyx.git/blobdiff - src/Cursor.cpp
* There are cases where updateLabels is not called because no
[lyx.git] / src / Cursor.cpp
index 416e666047cba1d3e108c0bfded27c0c559aee05..2b301257f69a31d0ec30a5902456573458423473 100644 (file)
 #include <config.h>
 
 #include "Bidi.h"
-#include "BufferView.h"
 #include "Buffer.h"
-#include "Cursor.h"
+#include "BufferView.h"
 #include "CoordCache.h"
+#include "Cursor.h"
 #include "CutAndPaste.h"
 #include "DispatchResult.h"
 #include "Encoding.h"
+#include "Font.h"
 #include "FuncRequest.h"
 #include "Language.h"
 #include "lfuns.h"
-#include "Font.h"
 #include "LyXFunc.h" // only for setMessage()
 #include "LyXRC.h"
-#include "Row.h"
-#include "Text.h"
-#include "Paragraph.h"
 #include "paragraph_funcs.h"
+#include "Paragraph.h"
 #include "ParIterator.h"
+#include "Row.h"
+#include "Text.h"
 #include "TextMetrics.h"
+#include "TocBackend.h"
 
 #include "support/debug.h"
 #include "support/docstream.h"
@@ -419,7 +420,8 @@ void Cursor::getPos(int & x, int & y) const
 
 Row const & Cursor::textRow() const
 {
-       ParagraphMetrics const & pm = bv().parMetrics(text(), pit());
+       CursorSlice const & cs = innerTextSlice();
+       ParagraphMetrics const & pm = bv().parMetrics(cs.text(), cs.pit());
        BOOST_ASSERT(!pm.rows().empty());
        return pm.getRow(pos(), boundary());
 }
@@ -644,7 +646,7 @@ namespace lyx {
 //#define FILEDEBUG 1
 
 
-bool Cursor::isInside(Inset const * p)
+bool Cursor::isInside(Inset const * p) const
 {
        for (size_t i = 0; i != depth(); ++i)
                if (&operator[](i).inset() == p)
@@ -1638,4 +1640,14 @@ void Cursor::recordUndoSelection()
 }
 
 
+void Cursor::checkBufferStructure()
+{
+       if (paragraph().layout()->toclevel == Layout::NOT_IN_TOC)
+               return;
+       Buffer const * master = buffer().masterBuffer();
+       master->tocBackend().updateItem(ParConstIterator(*this));
+       master->structureChanged();
+}
+
+
 } // namespace lyx