mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-25 22:06:15 +00:00
There does not appear to be any need to update the entire Buffer
after each entry into mathed. Instead, we just update the TOC for anything the mathed happens to be inside.
This commit is contained in:
parent
cf64064db7
commit
947aaf7a57
@ -1303,7 +1303,7 @@ void Cursor::plainInsert(MathAtom const & t)
|
||||
++pos();
|
||||
inset().setBuffer(bv_->buffer());
|
||||
inset().initView();
|
||||
forceBufferUpdate();
|
||||
checkBufferStructure();
|
||||
}
|
||||
|
||||
|
||||
|
@ -226,6 +226,15 @@ CursorSlice const & DocIterator::innerTextSlice() const
|
||||
}
|
||||
|
||||
|
||||
DocIterator DocIterator::getInnerText() const
|
||||
{
|
||||
DocIterator texted = *this;
|
||||
while (!texted.inTexted())
|
||||
texted.pop_back();
|
||||
return texted;
|
||||
}
|
||||
|
||||
|
||||
pit_type DocIterator::lastpit() const
|
||||
{
|
||||
return inMathed() ? 0 : text()->paragraphs().size() - 1;
|
||||
|
@ -167,6 +167,8 @@ public:
|
||||
Paragraph & innerParagraph() const;
|
||||
/// return the inner text slice.
|
||||
CursorSlice const & innerTextSlice() const;
|
||||
/// returns a DocIterator for the containing text inset
|
||||
DocIterator getInnerText() const;
|
||||
/// the first and last positions of a word at top cursor slice
|
||||
/// \warning only works within text!
|
||||
FontSpan locateWord(word_location const loc) const;
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
#include "Buffer.h"
|
||||
#include "BufferParams.h"
|
||||
#include "Cursor.h"
|
||||
#include "FloatList.h"
|
||||
#include "FuncRequest.h"
|
||||
#include "InsetList.h"
|
||||
@ -266,8 +267,11 @@ shared_ptr<TocBuilder> TocBackend::builder(string const & type)
|
||||
// TocItem creation and update should be made in a dedicated function and
|
||||
// updateItem should be rewritten to uniformly update the matching items from
|
||||
// all TOCs.
|
||||
bool TocBackend::updateItem(DocIterator const & dit)
|
||||
bool TocBackend::updateItem(DocIterator const & dit_in)
|
||||
{
|
||||
// we need a text
|
||||
DocIterator dit = dit_in.getInnerText();
|
||||
|
||||
if (dit.text()->getTocLevel(dit.pit()) == Layout::NOT_IN_TOC)
|
||||
return false;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user