}
-/// Looks for next inset with the given code
-void findInset(DocIterator & dit, InsetCode code, bool same_content)
-{
- findInset(dit, vector<InsetCode>(1, code), same_content);
-}
-
-
/// Moves cursor to the next inset with one of the given codes.
void gotoInset(BufferView * bv, vector<InsetCode> const & codes,
bool same_content)
}
-/// Moves cursor to the next inset with given code.
-void gotoInset(BufferView * bv, InsetCode code, bool same_content)
-{
- gotoInset(bv, vector<InsetCode>(1, code), same_content);
-}
-
-
/// A map from a Text to the associated text metrics
typedef map<Text const *, TextMetrics> TextMetricsCache;
// First try to make the selection start visible
// (which is just the cursor when there is no selection)
scrollToCursor(d->cursor_.selectionBegin(), false);
+ // Metrics have to be recomputed (maybe again)
+ updateMetrics();
// Is the cursor visible? (only useful if cursor is at end of selection)
- if (needsFitCursor())
+ if (needsFitCursor()) {
// then try to make cursor visible instead
scrollToCursor(d->cursor_, false);
- // Metrics have to be recomputed (maybe again)
- updateMetrics(flags);
+ // Metrics have to be recomputed (maybe again)
+ updateMetrics(flags);
+ }
}
flags = flags & ~Update::FitCursor;
}
if (height_ == 0)
return false;
- LYXERR(Debug::SCROLLING, "recentering!");
+ if (recenter)
+ LYXERR(Debug::SCROLLING, "recentering and scrolling to cursor");
+ else
+ LYXERR(Debug::SCROLLING, "scrolling to cursor");
CursorSlice const & bot = dit.bottom();
TextMetrics & tm = d->text_metrics_[bot.text()];
}
case LFUN_NOTE_NEXT:
- gotoInset(this, NOTE_CODE, false);
+ gotoInset(this, { NOTE_CODE }, false);
+ // FIXME: if SinglePar is changed to act on the inner
+ // paragraph, this will not be OK anymore. The update is
+ // useful for auto-open collapsible insets.
+ dr.screenUpdate(Update::SinglePar | Update::FitCursor);
break;
case LFUN_REFERENCE_NEXT: {
- vector<InsetCode> tmp;
- tmp.push_back(LABEL_CODE);
- tmp.push_back(REF_CODE);
- gotoInset(this, tmp, true);
+ gotoInset(this, { LABEL_CODE, REF_CODE }, true);
+ // FIXME: if SinglePar is changed to act on the inner
+ // paragraph, this will not be OK anymore. The update is
+ // useful for auto-open collapsible insets.
+ dr.screenUpdate(Update::SinglePar | Update::FitCursor);
break;
}
case LFUN_BIBTEX_DATABASE_ADD: {
Cursor tmpcur = cur;
- findInset(tmpcur, BIBTEX_CODE, false);
+ findInset(tmpcur, { BIBTEX_CODE }, false);
InsetBibtex * inset = getInsetByCode<InsetBibtex>(tmpcur,
BIBTEX_CODE);
if (inset) {
case LFUN_BIBTEX_DATABASE_DEL: {
Cursor tmpcur = cur;
- findInset(tmpcur, BIBTEX_CODE, false);
+ findInset(tmpcur, { BIBTEX_CODE }, false);
InsetBibtex * inset = getInsetByCode<InsetBibtex>(tmpcur,
BIBTEX_CODE);
if (inset) {
}
-docstring const BufferView::requestSelection()
+docstring BufferView::requestSelection()
{
Cursor & cur = d->cursor_;