From a30e709a3b315fd675cff7c92b9539e5e0fd7c9c Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Vigna?= Date: Wed, 14 Feb 2001 08:38:21 +0000 Subject: [PATCH] Some InsetTabular and -Text fixes. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1501 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView.C | 4 +- src/BufferView.h | 4 +- src/BufferView2.C | 89 +++---- src/BufferView_pimpl.C | 78 +++--- src/BufferView_pimpl.h | 2 +- src/ChangeLog | 23 ++ src/bufferview_funcs.C | 28 +- src/frontends/xforms/FormParagraph.C | 4 +- src/insets/ChangeLog | 10 + src/insets/insetlabel.C | 2 +- src/insets/insettabular.C | 65 ++--- src/insets/insettabular.h | 2 + src/insets/insettext.C | 7 + src/insets/insettext.h | 18 +- src/lyx_cb.C | 12 +- src/lyxfr1.C | 12 +- src/lyxfunc.C | 366 ++++++++++++++++----------- src/lyxfunc.h | 2 +- src/tabular.C | 7 +- src/text2.C | 7 + 20 files changed, 434 insertions(+), 308 deletions(-) diff --git a/src/BufferView.C b/src/BufferView.C index 1db0214573..ef2fdf83dc 100644 --- a/src/BufferView.C +++ b/src/BufferView.C @@ -235,9 +235,9 @@ bool BufferView::isSavedPosition(unsigned int i) } -void BufferView::update(UpdateCodes f) +void BufferView::update(LyXText * text, UpdateCodes f) { - pimpl_->update(f); + pimpl_->update(text, f); } diff --git a/src/BufferView.h b/src/BufferView.h index 3300eef6bb..ea2f1e847e 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -68,7 +68,7 @@ public: /// void update(); // - void update(UpdateCodes uc); + void update(LyXText *, UpdateCodes uc); /// void updateScrollbar(); /// @@ -154,7 +154,7 @@ public: /// void hfill(); /// - void protectedBlank(); + void protectedBlank(LyXText *); /// void newline(); /// diff --git a/src/BufferView2.C b/src/BufferView2.C index 37c6d948b4..7058854865 100644 --- a/src/BufferView2.C +++ b/src/BufferView2.C @@ -219,15 +219,15 @@ bool BufferView::insertInset(Inset * inset, string const & lout, beforeChange(); if (!lout.empty()) { - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); text->BreakParagraph(this); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); if (text->cursor.par()->Last()) { text->CursorLeft(this); text->BreakParagraph(this); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } pair lres = @@ -250,13 +250,13 @@ bool BufferView::insertInset(Inset * inset, string const & lout, LYX_ALIGN_LAYOUT, string(), 0); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); text->current_font.setLatex(LyXFont::OFF); } text->InsertInset(this, inset); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); text->UnFreezeUndo(); return true; @@ -296,7 +296,7 @@ bool BufferView::gotoLabel(string const & label) beforeChange(); text->SetCursor(this, it.getPar(), it.getPos()); text->sel_cursor = text->cursor; - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); return true; } } @@ -409,9 +409,9 @@ void BufferView::openStuff() owner()->getMiniBuffer()->Set(_("Open/Close...")); hideCursor(); beforeChange(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); text->OpenStuff(this); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); setState(); } } @@ -423,9 +423,9 @@ void BufferView::toggleFloat() owner()->getMiniBuffer()->Set(_("Open/Close...")); hideCursor(); beforeChange(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); text->ToggleFootnote(this); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); setState(); } } @@ -437,11 +437,11 @@ void BufferView::menuUndo() owner()->getMiniBuffer()->Set(_("Undo")); hideCursor(); beforeChange(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); if (!text->TextUndo(this)) owner()->getMiniBuffer()->Set(_("No further undo information")); else - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); setState(); } } @@ -458,11 +458,11 @@ void BufferView::menuRedo() owner()->getMiniBuffer()->Set(_("Redo")); hideCursor(); beforeChange(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); if (!text->TextRedo(this)) owner()->getMiniBuffer()->Set(_("No further redo information")); else - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); setState(); } } @@ -472,7 +472,7 @@ void BufferView::hyphenationPoint() { if (available()) { hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::HYPHENATION); insertInset(new_inset); @@ -484,7 +484,7 @@ void BufferView::ldots() { if (available()) { hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::LDOTS); insertInset(new_inset); @@ -496,7 +496,7 @@ void BufferView::endOfSentenceDot() { if (available()) { hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::END_OF_SENTENCE); insertInset(new_inset); @@ -508,7 +508,7 @@ void BufferView::menuSeparator() { if (available()) { hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::MENU_SEPARATOR); insertInset(new_inset); @@ -520,21 +520,24 @@ void BufferView::newline() { if (available()) { hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); text->InsertChar(this, LyXParagraph::META_NEWLINE); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } -void BufferView::protectedBlank() +void BufferView::protectedBlank(LyXText * lt) { if (available()) { hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(lt, BufferView::SELECT|BufferView::FITCUR); InsetSpecialChar * new_inset = new InsetSpecialChar(InsetSpecialChar::PROTECTED_SEPARATOR); - insertInset(new_inset); + if (!insertInset(new_inset)) + delete new_inset; + else + updateInset(new_inset, true); } } @@ -543,9 +546,9 @@ void BufferView::hfill() { if (available()) { hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); text->InsertChar(this, LyXParagraph::META_HFILL); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } @@ -556,7 +559,7 @@ void BufferView::copyEnvironment() // clear the selection, even if mark_set toggleSelection(); text->ClearSelection(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); owner()->getMiniBuffer()->Set(_("Paragraph environment type copied")); } } @@ -567,7 +570,7 @@ void BufferView::pasteEnvironment() if (available()) { text->pasteEnvironmentType(this); owner()->getMiniBuffer()->Set(_("Paragraph environment type set")); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } @@ -579,7 +582,7 @@ void BufferView::copy() // clear the selection, even if mark_set toggleSelection(); text->ClearSelection(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); owner()->getMiniBuffer()->Set(_("Copy")); } } @@ -588,9 +591,9 @@ void BufferView::cut() { if (available()) { hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); text->CutSelection(this); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); owner()->getMiniBuffer()->Set(_("Cut")); } } @@ -605,16 +608,16 @@ void BufferView::paste() // clear the selection toggleSelection(); text->ClearSelection(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); // paste text->PasteSelection(this); - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); // clear the selection toggleSelection(); text->ClearSelection(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); } @@ -625,7 +628,7 @@ void BufferView::gotoInset(std::vector const & codes, hideCursor(); beforeChange(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); string contents; if (same_content && @@ -651,7 +654,7 @@ void BufferView::gotoInset(std::vector const & codes, owner()->getMiniBuffer()->Set(_("No more insets")); } } - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); text->sel_cursor = text->cursor; } @@ -695,7 +698,7 @@ void BufferView::selectLastWord() beforeChange(); text->SelectSelectedWord(this); toggleSelection(false); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); } @@ -707,7 +710,7 @@ void BufferView::endOfSpellCheck() beforeChange(); text->SelectSelectedWord(this); text->ClearSelection(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); } @@ -716,11 +719,11 @@ void BufferView::replaceWord(string const & replacestring) if (!available()) return; hideCursor(); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); /* clear the selection (if there is any) */ toggleSelection(false); - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); /* clear the selection (if there is any) */ toggleSelection(false); @@ -732,7 +735,7 @@ void BufferView::replaceWord(string const & replacestring) for (string::size_type i = 0; i < replacestring.length() + 1; ++i) { text->CursorLeft(this); } - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } // End of spellchecker stuff @@ -869,12 +872,12 @@ void BufferView::updateInset(Inset * inset, bool mark_dirty) // then check the current buffer if (available()) { hideCursor(); - update(BufferView::UPDATE); + update(text, BufferView::UPDATE); if (text->UpdateInset(this, inset)) { if (mark_dirty) - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); else - update(SELECT); + update(text, SELECT); return; } } diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index 0f049d25c9..647d208c06 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -21,6 +21,7 @@ #include "TextCache.h" #include "bufferlist.h" #include "insets/insetbib.h" +#include "insets/insettext.h" #include "lyx_gui_misc.h" #include "lyxrc.h" #include "intl.h" @@ -198,7 +199,7 @@ void BufferView::Pimpl::buffer(Buffer * b) void BufferView::Pimpl::resize(int xpos, int ypos, int width, int height) { workarea_->resize(xpos, ypos, width, height); - update(SELECT); + update(bv_->text, SELECT); redraw(); } @@ -519,7 +520,7 @@ void BufferView::Pimpl::workAreaMotionNotify(int x, int y, unsigned int state) bv_->text->SetCursorFromCoordinates(bv_, x, y + bv_->text->first); if (!bv_->text->selection) - update(BufferView::UPDATE); // Maybe an empty line was deleted + update(bv_->text, BufferView::UPDATE); // Maybe an empty line was deleted bv_->text->SetSelection(); screen_->ToggleToggle(bv_->text, bv_); @@ -636,34 +637,48 @@ void BufferView::Pimpl::workAreaButtonPress(int xpos, int ypos, void BufferView::Pimpl::doubleClick(int /*x*/, int /*y*/, unsigned int button) { // select a word - if (buffer_ && !bv_->theLockingInset()) { - if (screen_ && button == 1) { - screen_->HideCursor(); - screen_->ToggleSelection(bv_->text, bv_); - bv_->text->SelectWord(bv_); - screen_->ToggleSelection(bv_->text, bv_, false); - /* This will fit the cursor on the screen - * if necessary */ - update(BufferView::SELECT|BufferView::FITCUR); - } - } + if (!buffer_) + return; + + LyXText * text = bv_->getLyXText(); + + if (text->bv_owner && bv_->theLockingInset()) + return; + + if (screen_ && button == 1) { + screen_->HideCursor(); + screen_->ToggleSelection(text, bv_); + text->SelectWord(bv_); + screen_->ToggleSelection(text, bv_, false); + /* This will fit the cursor on the screen + * if necessary */ + update(text, BufferView::SELECT|BufferView::FITCUR); + } } void BufferView::Pimpl::tripleClick(int /*x*/, int /*y*/, unsigned int button) { // select a line - if (buffer_ && screen_ && !bv_->theLockingInset() && (button == 1)) { + if (buffer_) + return; + + LyXText * text = bv_->getLyXText(); + + if (text->bv_owner && bv_->theLockingInset()) + return; + + if (screen_ && (button == 1)) { screen_->HideCursor(); - screen_->ToggleSelection(bv_->text, bv_); - bv_->text->CursorHome(bv_); - bv_->text->sel_cursor = bv_->text->cursor; - bv_->text->CursorEnd(bv_); - bv_->text->SetSelection(); - screen_->ToggleSelection(bv_->text, bv_, false); + screen_->ToggleSelection(text, bv_); + text->CursorHome(bv_); + text->sel_cursor = text->cursor; + text->CursorEnd(bv_); + text->SetSelection(); + screen_->ToggleSelection(text, bv_, false); /* This will fit the cursor on the screen * if necessary */ - update(BufferView::SELECT|BufferView::FITCUR); + update(text, BufferView::SELECT|BufferView::FITCUR); } } @@ -1004,20 +1019,23 @@ void BufferView::Pimpl::update() // update(1) -> update(1 + 2 + 4) -> update(7) -> update(SELECT|FITCUR|CHANGE) // update(3) -> update(1) -> update(1) -> update(SELECT) -void BufferView::Pimpl::update(BufferView::UpdateCodes f) +void BufferView::Pimpl::update(LyXText * text, BufferView::UpdateCodes f) { owner_->updateLayoutChoice(); - if (!bv_->text->selection && (f & SELECT)) { - bv_->text->sel_cursor = bv_->text->cursor; + if (!text->selection && (f & SELECT)) { + text->sel_cursor = text->cursor; } - bv_->text->FullRebreak(bv_); + text->FullRebreak(bv_); - update(); + if (text->inset_owner) + bv_->updateInset(text->inset_owner, true); + else + update(); if ((f & FITCUR)) { - fitCursor(bv_->text); + fitCursor(text); } if ((f & CHANGE)) { @@ -1164,7 +1182,7 @@ void BufferView::Pimpl::restorePosition(unsigned int i) bv_->text->SetCursor(bv_, par, min(par->Last(), saved_positions[i].par_pos)); - update(BufferView::SELECT|BufferView::FITCUR); + update(bv_->text, BufferView::SELECT|BufferView::FITCUR); if (i > 0) owner_->getMiniBuffer()->Set(_("Moved to bookmark ") + tostr(i)); } @@ -1287,7 +1305,7 @@ void BufferView::Pimpl::center() } else { screen_->Draw(bv_->text, bv_, 0); } - update(BufferView::SELECT|BufferView::FITCUR); + update(bv_->text, BufferView::SELECT|BufferView::FITCUR); redraw(); } @@ -1308,7 +1326,7 @@ void BufferView::Pimpl::pasteClipboard(bool asPara) } else { bv_->text->InsertStringA(bv_, clip); } - update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(bv_->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } diff --git a/src/BufferView_pimpl.h b/src/BufferView_pimpl.h index c6cc70a2d4..00e83429d1 100644 --- a/src/BufferView_pimpl.h +++ b/src/BufferView_pimpl.h @@ -43,7 +43,7 @@ struct BufferView::Pimpl : public Object { /// void update(); // - void update(BufferView::UpdateCodes); + void update(LyXText *, BufferView::UpdateCodes); /// Update pixmap of screen void updateScreen(); /// diff --git a/src/ChangeLog b/src/ChangeLog index 6b8a1aad4e..1dd89c6bbc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,26 @@ +2001-02-13 Juergen Vigna + + * lyxfunc.C (Dispatch): fixed protected blank problem. + * BufferView2.C (protectedBlank): added LyxText * parameter. + + * tabular.C (AppendRow): forgot to set row_info of newly added row. + (AppendColumn): same as above for column_info. + + * lyxfunc.C (Dispatch): supported some more functions in InsetText. + (moveCursorUpdate): use a LyXText param for support of InsetText. + + * BufferView_pimpl.C (doubleClick): added support for InsetText. + (tripleClick): ditto + + * lyxfunc.C (LFUN_APPENDIX): changed to use "text" pointer. + + * BufferView_pimpl.C (update): added LyXText param to honor insets. + + * bufferview_funcs.C (ToggleAndShow): fixed for text in insets. + + * text2.C (SetSelection): set correct update status if inset_owner + (ToggleFree): ditto + 2001-02-12 Lars Gullik Bjønnes * tabular.C: remove some commented code. diff --git a/src/bufferview_funcs.C b/src/bufferview_funcs.C index 7130348ece..a3f7575256 100644 --- a/src/bufferview_funcs.C +++ b/src/bufferview_funcs.C @@ -38,9 +38,9 @@ void Foot(BufferView * bv) bv->owner()->getMiniBuffer() ->Set(_("Inserting Footnote...")); bv->hideCursor(); - bv->update(BufferView::SELECT|BufferView::FITCUR); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); bv->text->InsertFootnoteEnvironment(bv, LyXParagraph::FOOTNOTE); - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } #endif @@ -75,9 +75,9 @@ void Margin(BufferView * bv) if (bv->available()) { bv->owner()->getMiniBuffer()->Set(_("Inserting margin note...")); bv->hideCursor(); - bv->update(BufferView::SELECT|BufferView::FITCUR); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); bv->text->InsertFootnoteEnvironment(bv, LyXParagraph::MARGIN); - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } #endif @@ -109,9 +109,9 @@ void Melt(BufferView * bv) bv->owner()->getMiniBuffer()->Set(_("Melt")); bv->hideCursor(); bv->beforeChange(); - bv->update(BufferView::SELECT|BufferView::FITCUR); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); bv->text->MeltFootnoteEnvironment(bv); - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } #endif @@ -133,14 +133,14 @@ void changeDepth(BufferView * bv, LyXText * text, int decInc) return; bv->hideCursor(); - bv->update(BufferView::SELECT|BufferView::FITCUR); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); if (decInc >= 0) text->IncDepth(bv); else text->DecDepth(bv); if (text->inset_owner) bv->updateInset((Inset *)text->inset_owner, true); - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); bv->owner()->getMiniBuffer() ->Set(_("Changed environment depth" " (in possible range, maybe not)")); @@ -306,18 +306,16 @@ string const CurrentState(BufferView * bv) void ToggleAndShow(BufferView * bv, LyXFont const & font) { if (bv->available()) { + LyXText * text = bv->getLyXText(); + bv->hideCursor(); - bv->update(BufferView::SELECT|BufferView::FITCUR); - if (bv->theLockingInset()) - bv->theLockingInset()->SetFont(bv, font, toggleall); - else - bv->text->ToggleFree(bv, font, toggleall); - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(text, BufferView::SELECT|BufferView::FITCUR); + text->ToggleFree(bv, font, toggleall); + bv->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); if (font.language() != ignore_language || font.latex() != LyXFont::IGNORE || font.number() != LyXFont::IGNORE) { - LyXText * text = bv->getLyXText(); LyXCursor & cursor = text->cursor; text->ComputeBidiTables(bv->buffer(), cursor.row()); if (cursor.boundary() != diff --git a/src/frontends/xforms/FormParagraph.C b/src/frontends/xforms/FormParagraph.C index 66e2b819e7..98072f13aa 100644 --- a/src/frontends/xforms/FormParagraph.C +++ b/src/frontends/xforms/FormParagraph.C @@ -142,8 +142,8 @@ void FormParagraph::apply() general_apply(); extra_apply(); - lv_->view()->update(BufferView::SELECT | BufferView::FITCUR | - BufferView::CHANGE); + lv_->view()->update(lv_->view()->text, + BufferView::SELECT | BufferView::FITCUR | BufferView::CHANGE); lv_->buffer()->markDirty(); setMinibuffer(lv_, _("Paragraph layout set")); } diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 1c62dbdd16..08add3e9c6 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,13 @@ +2001-02-13 Juergen Vigna + + * insettext.C (InsertInset): don't move left (is this right?) + + * insettabular.C (LocalDispatch): use of the no_draw variable + + * insettabular.h: new no_draw variable to stop redraw + + * insettabular.C (TabularFeatures): fixed update for alignment change + 2001-02-12 John Levon * insetinclude.C: diff --git a/src/insets/insetlabel.C b/src/insets/insetlabel.C index dc507c9752..cf48ce3d4a 100644 --- a/src/insets/insetlabel.C +++ b/src/insets/insetlabel.C @@ -60,7 +60,7 @@ void InsetLabel::Edit(BufferView * bv, int, int, unsigned int) bv->redraw(); bv->fitCursor(getLyXText(bv)); } else - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } } diff --git a/src/insets/insettabular.C b/src/insets/insettabular.C index 067071bbbe..af83a1b997 100644 --- a/src/insets/insettabular.C +++ b/src/insets/insettabular.C @@ -126,6 +126,7 @@ InsetTabular::InsetTabular(Buffer const & buf, int rows, int columns) actrow = actcell = 0; clearSelection(); need_update = INIT; + no_draw = false; } @@ -140,6 +141,7 @@ InsetTabular::InsetTabular(InsetTabular const & tab, Buffer const & buf) actrow = actcell = 0; sel_cell_start = sel_cell_end = 0; need_update = INIT; + no_draw = false; } @@ -214,6 +216,9 @@ int InsetTabular::width(BufferView *, LyXFont const &) const void InsetTabular::draw(BufferView * bv, LyXFont const & font, int baseline, float & x, bool cleared) const { + if (no_draw) + return; + Painter & pain = bv->painter(); int i, j; int nx; @@ -311,33 +316,6 @@ void InsetTabular::draw(BufferView * bv, LyXFont const & font, int baseline, lyxerr[Debug::INSETS] << "ERROR this shouldn't happen\n"; return; } -// LyXText::text_status st = bv->text->status; -#if 0 - do { - float cx = nx + tabular->GetBeginningOfTextInCell(cell); - bv->text->status = st; - if (need_update == CELL) { - // clear before the inset - pain.fillRectangle( - nx + 1, - baseline - tabular->GetAscentOfRow(i) + 1, - int(cx - nx - 1), - tabular->GetAscentOfRow(i) + - tabular->GetDescentOfRow(i) - 1); - // clear behind the inset - pain.fillRectangle( - int(cx + the_locking_inset->width(bv,font) + 1), - baseline - tabular->GetAscentOfRow(i) + 1, - tabular->GetWidthOfColumn(cell) - - tabular->GetBeginningOfTextInCell(cell) - - the_locking_inset->width(bv,font) - - tabular->GetAdditionalWidth(cell) - 1, - tabular->GetAscentOfRow(i) + - tabular->GetDescentOfRow(i) - 1); - } - tabular->GetCellInset(cell)->draw(bv,font,baseline, cx, false); - } while(bv->text->status == LyXText::CHANGED_IN_DRAW); -#else float dx; float cx; cx = dx = nx + tabular->GetBeginningOfTextInCell(cell); @@ -364,7 +342,6 @@ void InsetTabular::draw(BufferView * bv, LyXFont const & font, int baseline, tabular->GetAscentOfRow(i) + tabular->GetDescentOfRow(i) - 1); } -#endif } x -= ADD_TO_TABULAR_WIDTH; x += width(bv, font); @@ -567,8 +544,8 @@ bool InsetTabular::UnlockInsetInInset(BufferView * bv, UpdatableInset * inset, if (the_locking_inset == inset) { the_locking_inset->InsetUnlock(bv); the_locking_inset = 0; - ShowInsetCursor(bv, false); UpdateLocal(bv, CELL, false); + ShowInsetCursor(bv, false); return true; } if (the_locking_inset->UnlockInsetInInset(bv, inset, lr)) { @@ -979,18 +956,20 @@ UpdatableInset::RESULT InsetTabular::LocalDispatch(BufferView * bv, int action, result = UNDISPATCHED; if (the_locking_inset) break; + no_draw = true; if (ActivateCellInset(bv)) { result=the_locking_inset->LocalDispatch(bv, action, arg); - if (result == DISPATCHED_NOUPDATE) - return result; - else if (result == DISPATCHED) { - the_locking_inset->ToggleInsetCursor(bv); - UpdateLocal(bv, CELL, false); - the_locking_inset->ToggleInsetCursor(bv); - return result; - } else { - result = UNDISPATCHED; + if ((result == UNDISPATCHED) || (result == FINISHED)) { + UnlockInsetInInset(bv, the_locking_inset); + no_draw = false; + the_locking_inset = 0; + return UNDISPATCHED; } + no_draw = false; + the_locking_inset->ToggleInsetCursor(bv); + UpdateLocal(bv, CELL, false); + the_locking_inset->ToggleInsetCursor(bv); + return result; } break; } @@ -1599,10 +1578,7 @@ void InsetTabular::TabularFeatures(BufferView * bv, for (j = sel_col_start; j <= sel_col_end; ++j) tabular->SetAlignment(tabular->GetCellNumber(i, j), setAlign, flag); - if (hasSelection()) - UpdateLocal(bv, INIT, true); - else - UpdateLocal(bv, CELL, true); + UpdateLocal(bv, INIT, true); break; case LyXTabular::M_VALIGN_TOP: case LyXTabular::M_VALIGN_BOTTOM: @@ -1615,10 +1591,7 @@ void InsetTabular::TabularFeatures(BufferView * bv, for (j = sel_col_start; j <= sel_col_end; ++j) tabular->SetVAlignment(tabular->GetCellNumber(i, j), setVAlign, flag); - if (hasSelection()) - UpdateLocal(bv, INIT, true); - else - UpdateLocal(bv, CELL, true); + UpdateLocal(bv, INIT, true); break; case LyXTabular::MULTICOLUMN: { diff --git a/src/insets/insettabular.h b/src/insets/insettabular.h index 6a6ea894a1..91a5cfb7df 100644 --- a/src/insets/insettabular.h +++ b/src/insets/insettabular.h @@ -274,6 +274,8 @@ private: /// bool no_selection; /// + bool no_draw; + /// mutable bool locked; /// mutable UpdateCodes need_update; diff --git a/src/insets/insettext.C b/src/insets/insettext.C index 1b16607f03..675adc4b4f 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -450,6 +450,11 @@ void InsetText::update(BufferView * bv, LyXFont const & font, bool reinit) TEXT_TO_INSET_OFFSET; } +void InsetText::SetUpdateStatus(UpdateCodes what) +{ + if (what > need_update) + need_update = what; +} void InsetText::UpdateLocal(BufferView * bv, UpdateCodes what, bool mark_dirty) { @@ -1334,9 +1339,11 @@ bool InsetText::InsertInset(BufferView * bv, Inset * inset) inset->setOwner(this); HideInsetCursor(bv); TEXT(bv)->InsertInset(bv, inset); +#if 0 if ((cpar(bv)->GetChar(cpos(bv)) != LyXParagraph::META_INSET) || (cpar(bv)->GetInset(cpos(bv)) != inset)) TEXT(bv)->CursorLeft(bv); +#endif TEXT(bv)->selection = 0; bv->fitCursor(TEXT(bv)); UpdateLocal(bv, CURSOR_PAR, true); diff --git a/src/insets/insettext.h b/src/insets/insettext.h index ab32e30352..ce8d3d6386 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -39,24 +39,26 @@ class LyXScreen; */ class InsetText : public UpdatableInset { public: + /// + /// numbers need because of test if codeA < codeB /// enum UpdateCodes { /// NONE = 0, /// - INIT, + CURSOR = 1, /// - FULL, + CLEAR_FRAME = 2, /// - CURSOR_PAR, + DRAW_FRAME = 3, /// - CURSOR, + SELECTION = 4, /// - SELECTION, + CURSOR_PAR = 5, /// - DRAW_FRAME, + FULL = 6, /// - CLEAR_FRAME + INIT = 7 }; /// enum DrawFrame { @@ -97,6 +99,8 @@ public: /// void update(BufferView *, LyXFont const &, bool =false); /// + void SetUpdateStatus(UpdateCodes); + /// string const EditMessage() const; /// void Edit(BufferView *, int, int, unsigned int); diff --git a/src/lyx_cb.C b/src/lyx_cb.C index 17fddc5b18..5e951fef58 100644 --- a/src/lyx_cb.C +++ b/src/lyx_cb.C @@ -510,7 +510,7 @@ void InsertAsciiFile(BufferView * bv, string const & f, bool asParagraph) bv->text->InsertStringA(bv, tmpstr); else bv->text->InsertStringB(bv, tmpstr); - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } @@ -878,20 +878,20 @@ void FigureApplyCB(FL_OBJECT *, long) } current_view->hideCursor(); - current_view->update(BufferView::SELECT|BufferView::FITCUR); + current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR); current_view->beforeChange(); current_view->text->SetCursorParUndo(current_view->buffer()); current_view->text->FreezeUndo(); current_view->text->BreakParagraph(current_view); - current_view->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); if (current_view->text->cursor.par()->Last()) { current_view->text->CursorLeft(current_view); current_view->text->BreakParagraph(current_view); - current_view->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } // The standard layout should always be numer 0; @@ -922,12 +922,12 @@ void FigureApplyCB(FL_OBJECT *, long) } #endif - current_view->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); Inset * new_inset = new InsetFig(100, 100, *buffer); current_view->insertInset(new_inset); new_inset->Edit(current_view, 0, 0, 0); - current_view->update(BufferView::SELECT|BufferView::FITCUR); + current_view->update(current_view->text, BufferView::SELECT|BufferView::FITCUR); current_view->owner()->getMiniBuffer()->Set(_("Figure inserted")); current_view->text->UnFreezeUndo(); current_view->setState(); diff --git a/src/lyxfr1.C b/src/lyxfr1.C index 20734ff10c..909bf3ff93 100644 --- a/src/lyxfr1.C +++ b/src/lyxfr1.C @@ -129,7 +129,7 @@ void LyXFindReplace::SearchReplaceCB() string const replacestring = SF.ReplaceString(); bv->hideCursor(); - bv->update(BufferView::SELECT|BufferView::FITCUR); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); LyXText * ltCur = bv->text; if (ltCur->selection) { @@ -139,7 +139,7 @@ void LyXFindReplace::SearchReplaceCB() ReplaceSelectionWithString(bv, replacestring); bv->text-> SetSelectionOverString(bv, replacestring); - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } // jump to next match: @@ -176,13 +176,13 @@ void LyXFindReplace::SearchReplaceAllCB() do { ltCur = bv->text; if (ltCur->selection) { - bv->update(BufferView::SELECT|BufferView::FITCUR); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); bv->toggleSelection(false); bv->text-> ReplaceSelectionWithString(bv, replacestring); bv->text-> SetSelectionOverString(bv, replacestring); - bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); ++replace_count; } } while (SearchCB(true)); @@ -211,7 +211,7 @@ bool LyXFindReplace::SearchCB(bool fForward) return false; bv->hideCursor(); - bv->update(BufferView::SELECT|BufferView::FITCUR); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); LyXText * ltCur = bv->text; if (ltCur->selection) ltCur->cursor = fForward ? ltCur->sel_end_cursor : @@ -222,7 +222,7 @@ bool LyXFindReplace::SearchCB(bool fForward) if (!SF.ValidSearchData() || (fForward ? SearchForward(bv):SearchBackward(bv))) { - bv->update(BufferView::SELECT|BufferView::FITCUR); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); // clear the selection (if there is any) bv->toggleSelection(); diff --git a/src/lyxfunc.C b/src/lyxfunc.C index ff17692e25..b5c65e7f39 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -134,13 +134,14 @@ LyXFunc::LyXFunc(LyXView * o) // a moveCursorUpdate to some of the functions that updated the cursor, but // that did not show its new position. inline -void LyXFunc::moveCursorUpdate(bool selecting) +void LyXFunc::moveCursorUpdate(LyXText * text, bool selecting) { - if (selecting || owner->view()->text->mark_set) { - owner->view()->text->SetSelection(); - owner->view()->toggleToggle(); + if (selecting || text->mark_set) { + text->SetSelection(); + if (text->bv_owner) + owner->view()->toggleToggle(); } - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); owner->view()->showCursor(); /* ---> Everytime the cursor is moved, show the current font state. */ @@ -179,7 +180,7 @@ int LyXFunc::processKeySym(KeySym keysym, unsigned int state) if (tli == tli->GetLockingInset()) { owner->view()->unlockInset(tli); owner->view()->text->CursorRight(owner->view()); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); } else { tli->UnlockInsetInInset(owner->view(), @@ -648,20 +649,20 @@ string const LyXFunc::Dispatch(int ac, case LFUN_RIGHT: if (!owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) { owner->view()->text->CursorRight(owner->view()); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); } return string(); case LFUN_LEFT: if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) { owner->view()->text->CursorRight(owner->view()); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); } return string(); case LFUN_DOWN: owner->view()->text->CursorDown(owner->view()); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); return string(); default: @@ -693,7 +694,7 @@ string const LyXFunc::Dispatch(int ac, ltCur->SearchForward(owner->view(), searched_string))) { // ??? What is that ??? - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(ltCur, BufferView::SELECT|BufferView::FITCUR); // ??? Needed ??? // clear the selection (if there is any) @@ -704,7 +705,7 @@ string const LyXFunc::Dispatch(int ac, if (action == LFUN_WORDFINDFORWARD ) owner->view()->text->CursorRightOneWord(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); // ??? Needed ??? // set the new selection @@ -720,7 +721,8 @@ string const LyXFunc::Dispatch(int ac, case LFUN_PREFIX: { if (owner->view()->available()) { - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); } string buf; keyseq.print(buf, true); @@ -766,8 +768,8 @@ string const LyXFunc::Dispatch(int ac, case LFUN_APPENDIX: if (owner->view()->available()) { - owner->view()->text->toggleAppendix(owner->view()); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + text->toggleAppendix(owner->view()); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } break; @@ -1270,11 +1272,13 @@ string const LyXFunc::Dispatch(int ac, if (current_layout != layout.second) { owner->view()->hideCursor(); current_layout = layout.second; - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text-> SetLayout(owner->view(), layout.second); owner->setLayout(layout.second); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); owner->view()->setState(); } } @@ -1379,28 +1383,28 @@ string const LyXFunc::Dispatch(int ac, break; case LFUN_UPCASE_WORD: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); text->ChangeWordCase(owner->view(), LyXText::text_uppercase); if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); break; case LFUN_LOWCASE_WORD: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); text->ChangeWordCase(owner->view(), LyXText::text_lowercase); if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); break; case LFUN_CAPITALIZE_WORD: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); text->ChangeWordCase(owner->view(), LyXText::text_capitalization); if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); break; case LFUN_INSERT_LABEL: @@ -1469,7 +1473,7 @@ string const LyXFunc::Dispatch(int ac, bool is_rtl = tmptext->cursor.par()->isRightToLeftPar(owner->buffer()->params); if (!tmptext->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, BufferView::SELECT|BufferView::FITCUR); if (is_rtl) tmptext->CursorLeft(owner->view(), false); if (tmptext->cursor.pos() < tmptext->cursor.par()->Last() @@ -1493,7 +1497,7 @@ string const LyXFunc::Dispatch(int ac, if (!is_rtl) tmptext->CursorRight(owner->view(), false); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); } break; @@ -1505,7 +1509,7 @@ string const LyXFunc::Dispatch(int ac, LyXText * txt = owner->view()->text; bool is_rtl = txt->cursor.par()->isRightToLeftPar(owner->buffer()->params); if (!txt->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, BufferView::SELECT|BufferView::FITCUR); LyXCursor cur = txt->cursor; if (!is_rtl) txt->CursorLeft(owner->view(), false); @@ -1534,93 +1538,99 @@ string const LyXFunc::Dispatch(int ac, txt->CursorRight(owner->view(), false); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); } break; case LFUN_UP: - if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::UPDATE); + if (!owner->view()->text->mark_set) + owner->view()->beforeChange(); + owner->view()->update(owner->view()->text, BufferView::UPDATE); owner->view()->text->CursorUp(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; case LFUN_DOWN: if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::UPDATE); + owner->view()->update(owner->view()->text, BufferView::UPDATE); owner->view()->text->CursorDown(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; case LFUN_UP_PARAGRAPH: if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::UPDATE); + owner->view()->update(owner->view()->text, BufferView::UPDATE); owner->view()->text->CursorUpParagraph(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; case LFUN_DOWN_PARAGRAPH: if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::UPDATE); + owner->view()->update(owner->view()->text, BufferView::UPDATE); owner->view()->text->CursorDownParagraph(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; case LFUN_PRIOR: if (!text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::UPDATE); + owner->view()->update(owner->view()->text, BufferView::UPDATE); owner->view()->cursorPrevious(text); owner->view()->text->FinishUndo(); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, false); else - moveCursorUpdate(false); +#endif + moveCursorUpdate(text, false); owner->showState(); break; case LFUN_NEXT: if (!text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::UPDATE); + owner->view()->update(owner->view()->text, BufferView::UPDATE); owner->view()->cursorNext(text); owner->view()->text->FinishUndo(); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, false); else - moveCursorUpdate(false); +#endif + moveCursorUpdate(text, false); owner->showState(); break; case LFUN_HOME: if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorHome(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; case LFUN_END: if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorEnd(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; @@ -1628,192 +1638,239 @@ string const LyXFunc::Dispatch(int ac, case LFUN_TAB: if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorTab(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; case LFUN_WORDRIGHT: if (!text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); if (text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) text->CursorLeftOneWord(owner->view()); else text->CursorRightOneWord(owner->view()); owner->view()->text->FinishUndo(); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); - moveCursorUpdate(false); +#endif + moveCursorUpdate(text, false); owner->showState(); break; case LFUN_WORDLEFT: if (!text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); if (text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) text->CursorRightOneWord(owner->view()); else text->CursorLeftOneWord(owner->view()); owner->view()->text->FinishUndo(); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); - moveCursorUpdate(false); +#endif + moveCursorUpdate(text, false); owner->showState(); break; case LFUN_BEGINNINGBUF: if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorTop(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; case LFUN_ENDBUF: if (!owner->view()->text->mark_set) owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorBottom(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); break; /* cursor selection ---------------------------- */ case LFUN_RIGHTSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) owner->view()->text->CursorLeft(owner->view()); else owner->view()->text->CursorRight(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); + moveCursorUpdate(owner->view()->text, true); owner->showState(); break; case LFUN_LEFTSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) owner->view()->text->CursorRight(owner->view()); else owner->view()->text->CursorLeft(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); + moveCursorUpdate(owner->view()->text, true); owner->showState(); break; case LFUN_UPSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorUp(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); + moveCursorUpdate(owner->view()->text, true); owner->showState(); break; case LFUN_DOWNSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorDown(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); + moveCursorUpdate(owner->view()->text, true); owner->showState(); break; case LFUN_UP_PARAGRAPHSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorUpParagraph(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); + moveCursorUpdate(owner->view()->text, true); owner->showState(); break; case LFUN_DOWN_PARAGRAPHSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorDownParagraph(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); + moveCursorUpdate(owner->view()->text, true); owner->showState(); break; case LFUN_PRIORSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); owner->view()->cursorPrevious(text); owner->view()->text->FinishUndo(); - if (text->inset_owner) +#if 0 + if (text->inset_owner) { + text->SetSelection(); owner->view()->updateInset(text->inset_owner, false); - else - moveCursorUpdate(true); + } else +#endif + moveCursorUpdate(text, true); owner->showState(); break; case LFUN_NEXTSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); owner->view()->cursorNext(text); owner->view()->text->FinishUndo(); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, false); else - moveCursorUpdate(true); +#endif + moveCursorUpdate(text, true); owner->showState(); break; case LFUN_HOMESEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); - owner->view()->text->CursorHome(owner->view()); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); + text->CursorHome(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); +#if 0 + if (text->inset_owner) { + text->SetSelection(); + owner->view()->updateInset(text->inset_owner, false); + } else +#endif + moveCursorUpdate(text, true); owner->showState(); break; case LFUN_ENDSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); - owner->view()->text->CursorEnd(owner->view()); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); + text->CursorEnd(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); +#if 0 + if (text->inset_owner) { + text->SetSelection(); + owner->view()->updateInset(text->inset_owner, false); + } else +#endif + moveCursorUpdate(text, true); owner->showState(); break; case LFUN_WORDRIGHTSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); - if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) - owner->view()->text->CursorLeftOneWord(owner->view()); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); + if (text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) + text->CursorLeftOneWord(owner->view()); else - owner->view()->text->CursorRightOneWord(owner->view()); + text->CursorRightOneWord(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); +#if 0 + if (text->inset_owner) { + text->SetSelection(); + owner->view()->updateInset(text->inset_owner, false); + } else +#endif + moveCursorUpdate(text, true); owner->showState(); break; case LFUN_WORDLEFTSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); if (owner->view()->text->cursor.par()->isRightToLeftPar(owner->buffer()->params)) - owner->view()->text->CursorRightOneWord(owner->view()); + text->CursorRightOneWord(owner->view()); else - owner->view()->text->CursorLeftOneWord(owner->view()); + text->CursorLeftOneWord(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); +#if 0 + if (text->inset_owner) { + text->SetSelection(); + owner->view()->updateInset(text->inset_owner, false); + } else +#endif + moveCursorUpdate(text, true); owner->showState(); break; case LFUN_BEGINNINGBUFSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + if (text->inset_owner) + break; + owner->view()->update(owner->view()->text, BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorTop(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); + moveCursorUpdate(owner->view()->text, true); owner->showState(); break; case LFUN_ENDBUFSEL: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + if (text->inset_owner) + break; + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR); owner->view()->text->CursorBottom(owner->view()); owner->view()->text->FinishUndo(); - moveCursorUpdate(true); + moveCursorUpdate(owner->view()->text, true); owner->showState(); break; @@ -1821,40 +1878,43 @@ string const LyXFunc::Dispatch(int ac, case LFUN_BREAKLINE: owner->view()->beforeChange(); owner->view()->text->InsertChar(owner->view(), LyXParagraph::META_NEWLINE); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); - moveCursorUpdate(false); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + moveCursorUpdate(owner->view()->text, false); break; case LFUN_PROTECTEDSPACE: { LyXLayout const & style = textclasslist.Style(owner->view()->buffer()->params.textclass, - owner->view()->text->cursor.par()->GetLayout()); + text->cursor.par()->GetLayout()); if (style.free_spacing) { - owner->view()->text->InsertChar(owner->view(), ' '); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + text->InsertChar(owner->view(), ' '); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } else { - owner->view()->protectedBlank(); + owner->view()->protectedBlank(text); } - moveCursorUpdate(false); + moveCursorUpdate(text, false); } break; case LFUN_SETMARK: if (text->mark_set) { owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); setMessage(N_("Mark removed")); } else { owner->view()->beforeChange(); text->mark_set = 1; - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); setMessage(N_("Mark set")); } text->sel_cursor = text->cursor; +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); +#endif break; case LFUN_DELETE: @@ -1862,14 +1922,15 @@ string const LyXFunc::Dispatch(int ac, owner->view()->text->Delete(owner->view()); owner->view()->text->sel_cursor = owner->view()->text->cursor; - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); // It is possible to make it a lot faster still // just comment out the line below... owner->view()->showCursor(); } else { owner->view()->cut(); } - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); owner->showState(); owner->view()->setState(); break; @@ -1898,19 +1959,22 @@ string const LyXFunc::Dispatch(int ac, cursor.par()->align, cursor.par()->labelwidthstring, 0); owner->view()->text->CursorLeft(owner->view()); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } else { owner->view()->text->CursorLeft(owner->view()); owner->view()->text->Delete(owner->view()); owner->view()->text->sel_cursor = owner->view()->text->cursor; - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } else { owner->view()->text->Delete(owner->view()); owner->view()->text->sel_cursor = owner->view()->text->cursor; - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } else { owner->view()->cut(); @@ -1920,69 +1984,76 @@ string const LyXFunc::Dispatch(int ac, /* -------> Delete word forward. */ case LFUN_DELETE_WORD_FORWARD: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); text->DeleteWordForward(owner->view()); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); - moveCursorUpdate(false); +#endif + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + moveCursorUpdate(text, false); owner->showState(); break; /* -------> Delete word backward. */ case LFUN_DELETE_WORD_BACKWARD: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); text->DeleteWordBackward(owner->view()); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); - moveCursorUpdate(false); +#endif + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + moveCursorUpdate(text, false); owner->showState(); break; /* -------> Kill to end of line. */ case LFUN_DELETE_LINE_FORWARD: - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); text->DeleteLineForward(owner->view()); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); - moveCursorUpdate(false); +#endif + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + moveCursorUpdate(text, false); break; /* -------> Set mark off. */ case LFUN_MARK_OFF: owner->view()->beforeChange(); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); text->sel_cursor = text->cursor; setMessage(N_("Mark off")); +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); +#endif break; /* -------> Set mark on. */ case LFUN_MARK_ON: owner->view()->beforeChange(); - owner->view()->text->mark_set = 1; - owner->view()->update(BufferView::SELECT|BufferView::FITCUR); + text->mark_set = 1; + owner->view()->update(text, BufferView::SELECT|BufferView::FITCUR); text->sel_cursor = text->cursor; +#if 0 if (text->inset_owner) owner->view()->updateInset(text->inset_owner, true); +#endif setMessage(N_("Mark on")); break; case LFUN_BACKSPACE: { if (!owner->view()->text->selection) { -#if 0 - if (owner->getIntl()->getTrans()->backspace()) { -#else if (owner->getIntl()->getTrans().backspace()) { -#endif owner->view()->text->Backspace(owner->view()); owner->view()->text->sel_cursor = owner->view()->text->cursor; - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); // It is possible to make it a lot faster still // just comment out the line below... owner->view()->showCursor(); @@ -2014,12 +2085,14 @@ string const LyXFunc::Dispatch(int ac, VSpace(VSpace::NONE), cursor.par()->added_space_bottom, cursor.par()->align, cursor.par()->labelwidthstring, 0); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } else { owner->view()->text->Backspace(owner->view()); owner->view()->text->sel_cursor = cursor; - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } else owner->view()->cut(); @@ -2030,7 +2103,8 @@ string const LyXFunc::Dispatch(int ac, { owner->view()->beforeChange(); owner->view()->text->BreakParagraph(owner->view(), 0); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); owner->view()->text->sel_cursor = owner->view()->text->cursor; owner->view()->setState(); @@ -2042,7 +2116,8 @@ string const LyXFunc::Dispatch(int ac, { owner->view()->beforeChange(); owner->view()->text->BreakParagraph(owner->view(), 1); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); owner->view()->text->sel_cursor = owner->view()->text->cursor; owner->view()->setState(); @@ -2078,7 +2153,8 @@ string const LyXFunc::Dispatch(int ac, //owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); owner->view()->text->sel_cursor = cursor; owner->view()->setState(); owner->showState(); @@ -2125,7 +2201,8 @@ string const LyXFunc::Dispatch(int ac, if (cur_spacing != new_spacing || cur_value != new_value) { par->spacing.set(new_spacing, new_value); owner->view()->text->RedoParagraph(owner->view()); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } break; @@ -2133,8 +2210,9 @@ string const LyXFunc::Dispatch(int ac, case LFUN_QUOTE: owner->view()->beforeChange(); owner->view()->text->InsertChar(owner->view(), '\"'); // This " matches the single quote in the code - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); - moveCursorUpdate(false); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + moveCursorUpdate(owner->view()->text, false); break; case LFUN_HTMLURL: @@ -2442,15 +2520,9 @@ string const LyXFunc::Dispatch(int ac, if (keyseq.length == -1 && keyseq.getiso() != 0) c = keyseq.getiso(); -#if 0 - owner->getIntl()->getTrans()-> - deadkey(c, get_accent(action).accent, - owner->view()->text); -#else owner->getIntl()->getTrans() .deadkey(c, get_accent(action).accent, owner->view()->text); -#endif // Need to reset, in case the minibuffer calls these // actions @@ -2458,7 +2530,8 @@ string const LyXFunc::Dispatch(int ac, keyseq.length = 0; // copied verbatim from do_accent_char - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); owner->view()->text->sel_cursor = owner->view()->text->cursor; @@ -2821,7 +2894,8 @@ string const LyXFunc::Dispatch(int ac, break; } owner->view()->text->InsertFootnoteEnvironment(owner->view(), kind); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); owner->view()->setState(); } break; @@ -2853,11 +2927,12 @@ string const LyXFunc::Dispatch(int ac, owner->view()->text->InsertChar(owner->view(), argument[i]); // This needs to be in the loop, or else we // won't break lines correctly. (Asger) - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } owner->view()->text->sel_cursor = owner->view()->text->cursor; - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); // real_current_font.number can change so we need to // update the minibuffer @@ -2894,11 +2969,12 @@ string const LyXFunc::Dispatch(int ac, ::strftime(datetmp, 32, arg.c_str(), now_tm); for (int i = 0; i < datetmp_len; i++) { owner->view()->text->InsertChar(owner->view(), datetmp[i]); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } owner->view()->text->sel_cursor = owner->view()->text->cursor; - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); } break; @@ -2976,7 +3052,8 @@ string const LyXFunc::Dispatch(int ac, if (lyxrc.auto_region_delete) { if (owner->view()->text->selection){ owner->view()->text->CutSelection(owner->view(), false); - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); } } @@ -3000,11 +3077,12 @@ string const LyXFunc::Dispatch(int ac, #endif } - owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + owner->view()->update(owner->view()->text, + BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); owner->view()->text->sel_cursor = owner->view()->text->cursor; - moveCursorUpdate(false); + moveCursorUpdate(owner->view()->text, false); // real_current_font.number can change so we need to // update the minibuffer diff --git a/src/lyxfunc.h b/src/lyxfunc.h index ae7a8683ec..40226d5138 100644 --- a/src/lyxfunc.h +++ b/src/lyxfunc.h @@ -94,7 +94,7 @@ private: /// unsigned meta_fake_bit; /// - void moveCursorUpdate(bool selecting = false); + void moveCursorUpdate(LyXText *, bool selecting = false); /// void setupLocalKeymap(); /// diff --git a/src/tabular.C b/src/tabular.C index 7f98e397f6..71adb18430 100644 --- a/src/tabular.C +++ b/src/tabular.C @@ -195,6 +195,8 @@ void LyXTabular::AppendRow(int cell) row_vector::iterator rit = row_info.begin() + row; row_info.insert(rit, rowstruct()); + // now set the values of the row before + row_info[row] = row_info[row+1]; #if 0 cell_vvector::iterator cit = cell_info.begin() + row; @@ -246,6 +248,8 @@ void LyXTabular::AppendColumn(int cell) int const column = column_of_cell(cell); column_vector::iterator cit = column_info.begin() + column + 1; column_info.insert(cit, columnstruct()); + // set the column values of the column before + column_info[column+1] = column_info[column]; for (int i = 0; i < rows_; ++i) { for (int j = 0; j <= column; ++j) { @@ -2613,8 +2617,7 @@ int LyXTabular::AsciiPrintCell(Buffer const * buf, ostream & os, else os << " "; -#warning What is this supposed to do? (Lgb) - return ret * 0; // eh? (Lgb) + return ret; } diff --git a/src/text2.C b/src/text2.C index 726c4e0c30..2d97a31f71 100644 --- a/src/text2.C +++ b/src/text2.C @@ -1119,6 +1119,8 @@ bool LyXText::FullRebreak(BufferView * bview) // need the selection cursor: void LyXText::SetSelection() { + const bool lsel = selection; + if (!selection) { last_sel_cursor = sel_cursor; sel_start_cursor = sel_cursor; @@ -1164,6 +1166,9 @@ void LyXText::SetSelection() if (sel_start_cursor.par() == sel_end_cursor.par() && sel_start_cursor.pos() == sel_end_cursor.pos()) selection = false; + + if (inset_owner && (selection || lsel)) + inset_owner->SetUpdateStatus(InsetText::SELECTION); } @@ -1298,6 +1303,8 @@ void LyXText::ToggleFree(BufferView * bview, SetCursor(bview, cursor.par(), cursor.pos()); sel_cursor = cursor; } + if (inset_owner) + inset_owner->SetUpdateStatus(InsetText::CURSOR_PAR); } -- 2.39.2