X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferView.cpp;h=de2d71a1234aff48dbd5efd5ab33c5af8bd70616;hb=4b7f1b3c3918cd32070c72b6d8e95a888981c7a2;hp=e21eddffe62a5e4ef3cee109571a3a56c85de5a5;hpb=ceb50a253cc09c94e113386b5c54fb408035e1af;p=lyx.git diff --git a/src/BufferView.cpp b/src/BufferView.cpp index e21eddffe6..de2d71a123 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -1025,8 +1025,8 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag) break; case LFUN_REGEXP_MODE: - // FIXME: Test if current WorkArea is the search WorkArea - flag.setEnabled(buffer().isInternal() && !cur.inRegexped()); + flag.setEnabled(buffer().isInternal() && !cur.inRegexped() + && cur.inset().lyxCode() != ERT_CODE); break; case LFUN_LABEL_COPY_AS_REF: { @@ -1148,7 +1148,7 @@ void BufferView::editInset(string const & name, Inset * inset) } -bool BufferView::dispatch(FuncRequest const & cmd) +void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr) { //lyxerr << [ cmd = " << cmd << "]" << endl; @@ -1165,7 +1165,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) // Don't dispatch function that does not apply to internal buffers. if (buffer_.isInternal() && lyxaction.funcHasFlag(cmd.action, LyXAction::NoInternal)) - return false; + return; // We'll set this back to false if need be. bool dispatched = true; @@ -1190,7 +1190,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) // We are most certainly here because of a change in the document // It is then better to make sure that all dialogs are in sync with // current document settings. - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; } @@ -1201,7 +1201,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) buffer_.params().clearLayoutModules(); buffer_.params().makeDocumentClass(); updateLayout(oldClass); - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; } @@ -1218,7 +1218,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) buffer_.params().addLayoutModule(argument); buffer_.params().makeDocumentClass(); updateLayout(oldClass); - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; } @@ -1241,7 +1241,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) buffer_.params().setBaseClass(argument); buffer_.params().makeDocumentClass(); updateLayout(oldDocClass); - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; } @@ -1257,30 +1257,30 @@ bool BufferView::dispatch(FuncRequest const & cmd) buffer_.params().setBaseClass(bc); buffer_.params().makeDocumentClass(); updateLayout(oldClass); - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; } case LFUN_UNDO: - cur.message(_("Undo")); + dr.setMessage(_("Undo")); cur.clearSelection(); if (!cur.textUndo()) - cur.message(_("No further undo information")); + dr.setMessage(_("No further undo information")); else - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; case LFUN_REDO: - cur.message(_("Redo")); + dr.setMessage(_("Redo")); cur.clearSelection(); if (!cur.textRedo()) - cur.message(_("No further redo information")); + dr.setMessage(_("No further redo information")); else - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; case LFUN_FONT_STATE: - cur.message(cur.currentState()); + dr.setMessage(cur.currentState()); break; case LFUN_BOOKMARK_SAVE: @@ -1343,7 +1343,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) // Set the cursor dit.pos() = pos; setCursor(dit); - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); } else { // Switch to other buffer view and resend cmd theLyXFunc().dispatch(FuncRequest( @@ -1397,18 +1397,18 @@ bool BufferView::dispatch(FuncRequest const & cmd) case LFUN_CHANGE_NEXT: findNextChange(this); // FIXME: Move this LFUN to Buffer so that we don't have to do this: - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; case LFUN_CHANGE_PREVIOUS: findPreviousChange(this); // FIXME: Move this LFUN to Buffer so that we don't have to do this: - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; case LFUN_CHANGES_MERGE: if (findNextChange(this) || findPreviousChange(this)) { - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); showDialog("changes"); } break; @@ -1421,7 +1421,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) // accept everything in a single step to support atomic undo buffer_.text().acceptOrRejectChanges(cur, Text::ACCEPT); // FIXME: Move this LFUN to Buffer so that we don't have to do this: - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; case LFUN_ALL_CHANGES_REJECT: @@ -1433,7 +1433,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) // Note: reject does not work recursively; the user may have to repeat the operation buffer_.text().acceptOrRejectChanges(cur, Text::REJECT); // FIXME: Move this LFUN to Buffer so that we don't have to do this: - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; case LFUN_WORD_FIND_FORWARD: @@ -1481,7 +1481,8 @@ bool BufferView::dispatch(FuncRequest const & cmd) DocIterator end = cur.selectionEnd(); if (beg.pit() == end.pit()) { for (pos_type p = beg.pos() ; p < end.pos() ; ++p) { - if (cur.paragraph().isDeleted(p)) + if (!cur.inMathed() + && cur.paragraph().isDeleted(p)) has_deleted = true; } } @@ -1503,23 +1504,23 @@ bool BufferView::dispatch(FuncRequest const & cmd) case LFUN_MARK_OFF: cur.clearSelection(); - cur.message(from_utf8(N_("Mark off"))); + dr.setMessage(from_utf8(N_("Mark off"))); break; case LFUN_MARK_ON: cur.clearSelection(); cur.setMark(true); - cur.message(from_utf8(N_("Mark on"))); + dr.setMessage(from_utf8(N_("Mark on"))); break; case LFUN_MARK_TOGGLE: cur.setSelection(false); if (cur.mark()) { cur.setMark(false); - cur.message(from_utf8(N_("Mark removed"))); + dr.setMessage(from_utf8(N_("Mark removed"))); } else { cur.setMark(true); - cur.message(from_utf8(N_("Mark set"))); + dr.setMessage(from_utf8(N_("Mark set"))); } cur.resetAnchor(); break; @@ -1613,7 +1614,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) // It did not work too; no action needed. break; cur.clearSelection(); - processUpdateFlags(Update::SinglePar | Update::FitCursor); + dr.update(Update::SinglePar | Update::FitCursor); break; } @@ -1643,7 +1644,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) bool update = in_texted && cur.bv().checkDepm(cur, old); cur.finishUndo(); if (update) - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; } @@ -1664,7 +1665,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) y = getPos(cur, cur.boundary()).y_; cur.finishUndo(); - processUpdateFlags(Update::SinglePar | Update::FitCursor); + dr.update(Update::SinglePar | Update::FitCursor); break; } @@ -1681,7 +1682,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) y = getPos(cur, cur.boundary()).y_; cur.finishUndo(); - processUpdateFlags(Update::SinglePar | Update::FitCursor); + dr.update(Update::SinglePar | Update::FitCursor); break; } @@ -1724,12 +1725,13 @@ bool BufferView::dispatch(FuncRequest const & cmd) cur.endUndoGroup(); cur = savecur; cur.fixIfBroken(); - processUpdateFlags(Update::Force); + dr.update(Update::Force); - if (iterations >= max_iter) - cur.errorMessage(bformat(_("`inset-forall' interrupted because number of actions is larger than %1$d"), max_iter)); - else - cur.message(bformat(_("Applied \"%1$s\" to %2$d insets"), from_utf8(commandstr), iterations)); + if (iterations >= max_iter) { + dr.setError(true); + dr.setMessage(bformat(_("`inset-forall' interrupted because number of actions is larger than %1$d"), max_iter)); + } else + dr.setMessage(bformat(_("Applied \"%1$s\" to %2$d insets"), from_utf8(commandstr), iterations)); break; } @@ -1753,7 +1755,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) it->dispatch(tmpcur, fr); } } - processUpdateFlags(Update::Force | Update::FitCursor); + dr.update(Update::Force | Update::FitCursor); break; } @@ -1841,7 +1843,7 @@ bool BufferView::dispatch(FuncRequest const & cmd) cur.recordUndo(); FuncRequest fr(LFUN_INSET_MODIFY, cmd.argument()); inset->dispatch(cur, fr); - processUpdateFlags(Update::SinglePar | Update::FitCursor); + dr.update(Update::SinglePar | Update::FitCursor); break; } @@ -1851,7 +1853,8 @@ bool BufferView::dispatch(FuncRequest const & cmd) } buffer_.undo().endUndoGroup(); - return dispatched; + dr.dispatched(dispatched); + return; } @@ -2162,7 +2165,7 @@ void BufferView::gotoLabel(docstring const & label) TocIterator end = toc.end(); for (; toc_it != end; ++toc_it) { if (label == toc_it->str()) { - dispatch(toc_it->action()); + lyx::dispatch(toc_it->action()); return; } }