mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
* src/buffer_funcs.[Ch]
- updateCounters renamed to updateLabels - void updateLabels(Buffer const & buf, ParIterator & it): new convenience function - void updateLabels(Buffer const & buf, ParIterator & from, ParIterator & to): new convenience function - setCounter renamed to setLabel - bool tryToUpdateCurrentLabel(Buffer const & buf, ParIterator & it): new method - needsUpdateCounters: deleted * src/BufferView_pimpl.C * src/CutAndPaste.C * src/frontends/controllers/ControlDocument.C * src/lyxfunc.C * src/text.C * src/text2.C * src/text3.C - fixed the calls to updateLabels git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13689 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
a90ee19486
commit
f6bcac7285
@ -1236,7 +1236,7 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & cmd)
|
||||
lyx::toc::outline(op, buffer_, cursor_.pit());
|
||||
bv_->text()->setCursor(cursor_, cursor_.pit(), 0);
|
||||
buffer_->markDirty();
|
||||
updateCounters(*buffer_);
|
||||
updateLabels(*buffer_);
|
||||
update();
|
||||
}
|
||||
|
||||
|
@ -516,7 +516,7 @@ void cutSelection(LCursor & cur, bool doclear, bool realcut)
|
||||
|
||||
// need a valid cursor. (Lgb)
|
||||
cur.clearSelection();
|
||||
updateCounters(cur.buffer());
|
||||
updateLabels(cur.buffer());
|
||||
|
||||
// tell tabular that a recent copy happened
|
||||
dirtyTabularStack(false);
|
||||
@ -610,7 +610,7 @@ void pasteParagraphList(LCursor & cur, ParagraphList const & parlist,
|
||||
parlist, textclass,
|
||||
el);
|
||||
bufferErrors(cur.buffer(), el);
|
||||
updateCounters(cur.buffer());
|
||||
updateLabels(cur.buffer());
|
||||
cur.clearSelection();
|
||||
text->setCursor(cur, ppp.first, ppp.second);
|
||||
}
|
||||
|
@ -42,9 +42,13 @@
|
||||
#include "support/fs_extras.h"
|
||||
#include "support/lyxlib.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/filesystem/operations.hpp>
|
||||
|
||||
using namespace std;
|
||||
|
||||
using lyx::pit_type;
|
||||
using lyx::support::bformat;
|
||||
using lyx::support::libFileSearch;
|
||||
@ -346,8 +350,8 @@ bool needEnumCounterReset(ParIterator const & it)
|
||||
}
|
||||
|
||||
|
||||
// set the counter of a paragraph. This includes the labels
|
||||
void setCounter(Buffer const & buf, ParIterator & it)
|
||||
// set the label of a paragraph. This includes the counters.
|
||||
void setLabel(Buffer const & buf, ParIterator & it)
|
||||
{
|
||||
Paragraph & par = *it;
|
||||
BufferParams const & bufparams = buf.params();
|
||||
@ -505,10 +509,14 @@ void setCounter(Buffer const & buf, ParIterator & it)
|
||||
} // anon namespace
|
||||
|
||||
|
||||
bool needsUpdateCounters(Buffer const & buf, ParIterator & it)
|
||||
bool updateCurrentLabel(Buffer const & buf,
|
||||
ParIterator & it)
|
||||
{
|
||||
if (it == par_iterator_end(buf.inset()))
|
||||
return true;
|
||||
|
||||
switch (it->layout()->labeltype) {
|
||||
|
||||
|
||||
case LABEL_NO_LABEL:
|
||||
case LABEL_MANUAL:
|
||||
case LABEL_BIBLIO:
|
||||
@ -516,24 +524,53 @@ bool needsUpdateCounters(Buffer const & buf, ParIterator & it)
|
||||
case LABEL_CENTERED_TOP_ENVIRONMENT:
|
||||
case LABEL_STATIC:
|
||||
case LABEL_ITEMIZE:
|
||||
setCounter(buf, it);
|
||||
return false;
|
||||
setLabel(buf, it);
|
||||
return true;
|
||||
|
||||
case LABEL_SENSITIVE:
|
||||
case LABEL_COUNTER:
|
||||
// do more things with enumerate later
|
||||
case LABEL_ENUMERATE:
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// This is dead code which get rid of a warning:
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void updateLabels(Buffer const & buf,
|
||||
ParIterator & from, ParIterator & to)
|
||||
{
|
||||
for (ParIterator it = from; it != to; ++it) {
|
||||
if (it.pit() > it.lastpit())
|
||||
return;
|
||||
if (!updateCurrentLabel (buf, it)) {
|
||||
updateLabels(buf);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void updateCounters(Buffer const & buf)
|
||||
void updateLabels(Buffer const & buf,
|
||||
ParIterator & iter)
|
||||
{
|
||||
// start over
|
||||
buf.params().getLyXTextClass().counters().reset();
|
||||
if (updateCurrentLabel(buf, iter))
|
||||
return;
|
||||
|
||||
for (ParIterator it = par_iterator_begin(buf.inset()); it; ++it) {
|
||||
updateLabels(buf);
|
||||
}
|
||||
|
||||
|
||||
void updateLabels(Buffer const & buf)
|
||||
{
|
||||
// start over the counters
|
||||
buf.params().getLyXTextClass().counters().reset();
|
||||
|
||||
ParIterator const end = par_iterator_end(buf.inset());
|
||||
|
||||
for (ParIterator it = par_iterator_begin(buf.inset()); it != end; ++it) {
|
||||
// reduce depth if necessary
|
||||
if (it.pit()) {
|
||||
Paragraph const & prevpar = it.plist()[it.pit() - 1];
|
||||
@ -543,7 +580,7 @@ void updateCounters(Buffer const & buf)
|
||||
it->params().depth(0);
|
||||
|
||||
// set the counter for this paragraph
|
||||
setCounter(buf, it);
|
||||
setLabel(buf, it);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,15 +49,21 @@ int countWords(DocIterator const & from, DocIterator const & to);
|
||||
std::string expandLabel(Buffer const & buf, LyXLayout_ptr const & layout,
|
||||
bool appendix);
|
||||
|
||||
/// updates current counter and/or label if possible.
|
||||
|
||||
/// update labels at "iter".
|
||||
/**
|
||||
\retval true if a full updateCounters is required.
|
||||
\retval false if a full updateCounters is not required.
|
||||
A full updateLabels(Buffer const &) will be called if not possible.
|
||||
*/
|
||||
bool needsUpdateCounters(Buffer const & buf, ParIterator & it);
|
||||
void updateLabels(Buffer const & buf, ParIterator & it);
|
||||
|
||||
/// update labels between "from" and "to" if possible.
|
||||
/**
|
||||
A full updateLabels(Buffer const &) will be called if not possible.
|
||||
*/
|
||||
void updateLabels(Buffer const & buf,
|
||||
ParIterator & from, ParIterator & to);
|
||||
|
||||
/// updates all counters
|
||||
void updateCounters(Buffer const &);
|
||||
|
||||
void updateLabels(Buffer const &);
|
||||
|
||||
#endif // BUFFER_FUNCS_H
|
||||
|
@ -104,7 +104,7 @@ void ControlDocument::dispatchParams()
|
||||
|
||||
// redo the numbering if necessary
|
||||
if (new_secnumdepth != old_secnumdepth)
|
||||
updateCounters(kernel().buffer());
|
||||
updateLabels(kernel().buffer());
|
||||
|
||||
// Generate the colours requested by each new branch.
|
||||
BranchList & branchlist = params().branchlist();
|
||||
|
@ -1564,7 +1564,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
view()->setCursor(backcur.asDocIterator(&(buffer->inset())));
|
||||
bufferErrors(*buffer, el);
|
||||
view()->showErrorList(_("Class switch"));
|
||||
updateCounters(*buffer);
|
||||
updateLabels(*buffer);
|
||||
update = true;
|
||||
break;
|
||||
}
|
||||
|
11
src/text.C
11
src/text.C
@ -1090,11 +1090,11 @@ void LyXText::breakParagraph(LCursor & cur, bool keep_layout)
|
||||
pars_[next_par].erase(0);
|
||||
|
||||
ParIterator current_it(cur);
|
||||
ParIterator next_it(cur); next_it.pit() = next_par;
|
||||
ParIterator last_it(cur);
|
||||
++last_it;
|
||||
++last_it;
|
||||
|
||||
if (needsUpdateCounters(cur.buffer(), current_it)
|
||||
|| needsUpdateCounters(cur.buffer(), next_it))
|
||||
updateCounters(cur.buffer());
|
||||
updateLabels(cur.buffer(), current_it, last_it);
|
||||
|
||||
// Mark "carriage return" as inserted if change tracking:
|
||||
if (cur.buffer().params().tracking_changes) {
|
||||
@ -1677,8 +1677,7 @@ bool LyXText::backspacePos0(LCursor & cur)
|
||||
|
||||
// the counters may have changed
|
||||
ParIterator par_it(cur);
|
||||
if (needsUpdateCounters(cur.buffer(), par_it))
|
||||
updateCounters(cur.buffer());
|
||||
updateLabels(cur.buffer(), par_it);
|
||||
|
||||
setCursor(cur, cur.pit(), cur.pos(), false);
|
||||
}
|
||||
|
14
src/text2.C
14
src/text2.C
@ -90,7 +90,7 @@ void LyXText::init(BufferView * bv)
|
||||
pars_[pit].rows().clear();
|
||||
|
||||
current_font = getFont(pars_[0], 0);
|
||||
updateCounters(*bv->buffer());
|
||||
updateLabels(*bv->buffer());
|
||||
}
|
||||
|
||||
|
||||
@ -358,7 +358,7 @@ void LyXText::setLayout(LCursor & cur, string const & layout)
|
||||
pit_type undopit = undoSpan(end - 1);
|
||||
recUndo(start, undopit - 1);
|
||||
setLayout(start, end, layout);
|
||||
updateCounters(cur.buffer());
|
||||
updateLabels(cur.buffer());
|
||||
}
|
||||
|
||||
|
||||
@ -419,7 +419,7 @@ void LyXText::changeDepth(LCursor & cur, DEPTH_CHANGE type)
|
||||
}
|
||||
// this handles the counter labels, and also fixes up
|
||||
// depth values for follow-on (child) paragraphs
|
||||
updateCounters(cur.buffer());
|
||||
updateLabels(cur.buffer());
|
||||
}
|
||||
|
||||
|
||||
@ -1274,9 +1274,11 @@ bool LyXText::deleteEmptyParagraphMechanism(LCursor & cur, LCursor & old)
|
||||
cur.resetAnchor();
|
||||
}
|
||||
}
|
||||
ParIterator par_it(old);
|
||||
if (needsUpdateCounters(old.buffer(), par_it))
|
||||
updateCounters(old.buffer());
|
||||
// There is a crash reported by Edwin Leuven (16/04/2006) because of:
|
||||
//ParIterator par_it(old);
|
||||
//updateLabels(old.buffer(), par_it);
|
||||
// So for now we do the full update:
|
||||
updateLabels(old.buffer());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -342,7 +342,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
|
||||
par.params().startOfAppendix(start);
|
||||
|
||||
// we can set the refreshing parameters now
|
||||
updateCounters(cur.buffer());
|
||||
updateLabels(cur.buffer());
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user