X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftext3.C;h=a468a7289665a3590980354f8cc5dc346177fa62;hb=eead5ba43d0ddf06544ad1b40063981d3788c635;hp=f7f79e45ccfb4a0a999e4f72dd049a4f70e95f2a;hpb=c3a34a64f10486d1bd2e00da781a0423d8420519;p=lyx.git diff --git a/src/text3.C b/src/text3.C index f7f79e45cc..a468a72896 100644 --- a/src/text3.C +++ b/src/text3.C @@ -29,6 +29,7 @@ #include "language.h" #include "support/tostr.h" #include "support/lstrings.h" +#include "support/LAssert.h" #include "frontends/LyXView.h" #include "frontends/screen.h" #include "frontends/Dialogs.h" @@ -71,7 +72,7 @@ namespace { if (lt->isInInset()) bv->updateInset(lt->inset_owner); else - bv->toggleToggle(); + bv->repaint(); } if (!lt->isInInset()) { bv->update(lt, BufferView::SELECT); @@ -96,7 +97,7 @@ namespace { // check if the given co-ordinates are inside an inset at the // given cursor, if one exists. If so, the inset is returned, // and the co-ordinates are made relative. Otherwise, 0 is returned. - Inset * checkInset(BufferView * bv, LyXText & text, +InsetOld * checkInset(BufferView * /*bv*/, LyXText & text, LyXCursor const & cur, int & x, int & y) { lyx::pos_type const pos = cur.pos(); @@ -105,7 +106,7 @@ namespace { if (pos >= par->size() || !par->isInset(pos)) return 0; - Inset /*const*/ * inset = par->getInset(pos); + InsetOld /*const*/ * inset = par->getInset(pos); if (!isEditableInset(inset)) return 0; @@ -113,7 +114,7 @@ namespace { // get inset dimensions Assert(par->getInset(pos)); - LyXFont const & font = text.getFont(bv->buffer(), par, pos); + LyXFont const & font = text.getFont(par, pos); int const width = inset->width(); int const inset_x = font.isVisibleRightToLeft() @@ -145,14 +146,14 @@ namespace { } // anon namespace -Inset * LyXText::checkInsetHit(int & x, int & y) +InsetOld * LyXText::checkInsetHit(int & x, int & y) { int y_tmp = y + top_y(); LyXCursor cur; setCursorFromCoordinates(cur, x, y_tmp); - Inset * inset = checkInset(bv(), *this, cur, x, y_tmp); + InsetOld * inset = checkInset(bv(), *this, cur, x, y_tmp); if (inset) { y = y_tmp; return inset; @@ -172,14 +173,14 @@ Inset * LyXText::checkInsetHit(int & x, int & y) } -bool LyXText::gotoNextInset(vector const & codes, +bool LyXText::gotoNextInset(vector const & codes, string const & contents) { ParagraphList::iterator end = ownerParagraphs().end(); ParagraphList::iterator pit = cursor.par(); pos_type pos = cursor.pos(); - Inset * inset; + InsetOld * inset; do { if (pos + 1 < pit->size()) { ++pos; @@ -204,7 +205,7 @@ bool LyXText::gotoNextInset(vector const & codes, } -void LyXText::gotoInset(vector const & codes, +void LyXText::gotoInset(vector const & codes, bool same_content) { bv()->beforeChange(this); @@ -213,7 +214,7 @@ void LyXText::gotoInset(vector const & codes, string contents; if (same_content && cursor.pos() < cursor.par()->size() && cursor.par()->isInset(cursor.pos())) { - Inset const * inset = cursor.par()->getInset(cursor.pos()); + InsetOld const * inset = cursor.par()->getInset(cursor.pos()); if (find(codes.begin(), codes.end(), inset->lyxCode()) != codes.end()) contents = static_cast(inset)->getContents(); @@ -237,9 +238,9 @@ void LyXText::gotoInset(vector const & codes, } -void LyXText::gotoInset(Inset::Code code, bool same_content) +void LyXText::gotoInset(InsetOld::Code code, bool same_content) { - gotoInset(vector(1, code), same_content); + gotoInset(vector(1, code), same_content); } @@ -248,11 +249,8 @@ void LyXText::cursorPrevious() int y = top_y(); if (cursorRow() == rows().begin()) { - if (y > 0) { - int new_y = bv()->text->top_y() - bv()->workHeight(); - bv()->screen().draw(bv()->text, bv(), new_y < 0 ? 0 : new_y); + if (y > 0) bv()->updateScrollbar(); - } return; } @@ -269,9 +267,6 @@ void LyXText::cursorPrevious() return; // This is what we used to do, so we wouldn't skip right past // tall rows, but it's not working right now. -#if 0 - new_y = bv->text->top_y() - bv->workHeight(); -#endif } else { if (inset_owner) { new_y = bv()->text->cursor.iy() @@ -285,7 +280,7 @@ void LyXText::cursorPrevious() - bv()->workHeight() + 1; } } - bv()->screen().draw(bv()->text, bv(), new_y < 0 ? 0 : new_y); + //bv()->screen().draw(bv()->text, bv(), new_y < 0 ? 0 : new_y); if (cursorRow() != rows().begin()) { LyXCursor cur; setCursor(cur, boost::prior(cursorRow())->par(), @@ -306,7 +301,7 @@ void LyXText::cursorNext() int y = cursor.y() - cursorRow()->baseline() + cursorRow()->height(); if (y > topy + bv()->workHeight()) { - bv()->screen().draw(bv()->text, bv(), bv()->text->top_y() + bv()->workHeight()); + //bv()->screen().draw(bv()->text, bv(), bv()->text->top_y() + bv()->workHeight()); bv()->updateScrollbar(); } return; @@ -346,7 +341,7 @@ void LyXText::cursorNext() new_y = cursor.y() - cursorRow()->baseline(); } } - bv()->screen().draw(bv()->text, bv(), new_y); + //bv()->screen().draw(bv()->text, bv(), new_y); RowList::iterator next_row = boost::next(cursorRow()); if (next_row != rows().end()) { @@ -382,7 +377,7 @@ void specialChar(LyXText * lt, BufferView * bv, InsetSpecialChar::Kind kind) void doInsertInset(LyXText * lt, FuncRequest const & cmd, bool edit, bool pastesel) { - Inset * inset = createInset(cmd); + InsetOld * inset = createInset(cmd); BufferView * bv = cmd.view(); if (inset) { @@ -406,7 +401,7 @@ void doInsertInset(LyXText * lt, FuncRequest const & cmd, } -Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) +InsetOld::RESULT LyXText::dispatch(FuncRequest const & cmd) { lyxerr[Debug::ACTION] << "LyXFunc::dispatch: action[" << cmd.action <<"] arg[" << cmd.argument << ']' << endl; @@ -613,7 +608,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) if (cursor.pos() < cursor.par()->size() && cursor.par()->isInset(cursor.pos()) && isHighlyEditableInset(cursor.par()->getInset(cursor.pos()))) { - Inset * tmpinset = cursor.par()->getInset(cursor.pos()); + InsetOld * tmpinset = cursor.par()->getInset(cursor.pos()); cmd.message(tmpinset->editMessage()); FuncRequest cmd1(bv, LFUN_INSET_EDIT, is_rtl ? "right" : "left"); tmpinset->localDispatch(cmd1); @@ -639,7 +634,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) cursor.pos() < cursor.par()->size() && cursor.par()->isInset(cursor.pos()) && isHighlyEditableInset(cursor.par()->getInset(cursor.pos()))) { - Inset * tmpinset = cursor.par()->getInset(cursor.pos()); + InsetOld * tmpinset = cursor.par()->getInset(cursor.pos()); cmd.message(tmpinset->editMessage()); FuncRequest cmd1(bv, LFUN_INSET_EDIT, is_rtl ? "left" : "right"); tmpinset->localDispatch(cmd1); @@ -689,10 +684,6 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) bv->update(this, BufferView::UPDATE); cursorPrevious(); finishChange(bv, false); - // was: - // finishUndo(); - // moveCursorUpdate(bv, false, false); - // owner_->view_state_changed(); break; case LFUN_NEXT: @@ -1183,18 +1174,18 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) } case LFUN_GOTOERROR: - gotoInset(Inset::ERROR_CODE, false); + gotoInset(InsetOld::ERROR_CODE, false); break; case LFUN_GOTONOTE: - gotoInset(Inset::NOTE_CODE, false); + gotoInset(InsetOld::NOTE_CODE, false); break; case LFUN_REFERENCE_GOTO: { - vector tmp; - tmp.push_back(Inset::LABEL_CODE); - tmp.push_back(Inset::REF_CODE); + vector tmp; + tmp.push_back(InsetOld::LABEL_CODE); + tmp.push_back(InsetOld::REF_CODE); gotoInset(tmp, true); break; } @@ -1293,10 +1284,9 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) // Check for inset locking if (bv->theLockingInset()) { - Inset * tli = bv->theLockingInset(); + InsetOld * tli = bv->theLockingInset(); LyXCursor cursor = bv->text->cursor; - LyXFont font = bv->text->getFont(bv->buffer(), - cursor.par(), cursor.pos()); + LyXFont font = bv->text->getFont(cursor.par(), cursor.pos()); int width = tli->width(); int inset_x = font.isVisibleRightToLeft() ? cursor.ix() - width : cursor.ix(); @@ -1340,7 +1330,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) if (!bv->text->selection.set()) bv->update(BufferView::UPDATE); bv->text->setSelection(); - bv->screen().toggleToggle(bv->text, bv); + bv->repaint(); bv->fitCursor(); break; } @@ -1366,7 +1356,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) int x = cmd.x; int y = cmd.y; - Inset * inset_hit = bv->text->checkInsetHit(x, y); + InsetOld * inset_hit = bv->text->checkInsetHit(x, y); // Middle button press pastes if we have a selection // We do this here as if the selection was inside an inset @@ -1461,7 +1451,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) // inset, inset_hit is 0, and inset_x == x, inset_y == y. int x = cmd.x; int y = cmd.y; - Inset * inset_hit = bv->text->checkInsetHit(x, y); + InsetOld * inset_hit = bv->text->checkInsetHit(x, y); if (bv->theLockingInset()) { // We are in inset locking mode. @@ -1521,7 +1511,7 @@ Inset::RESULT LyXText::dispatch(FuncRequest const & cmd) // (Joacim) // ...or maybe the SetCursorParUndo() // below isn't necessary at all anylonger? - if (inset_hit->lyxCode() == Inset::REF_CODE) + if (inset_hit->lyxCode() == InsetOld::REF_CODE) recordUndo(bv, Undo::ATOMIC); bv->owner()->message(inset_hit->editMessage());