From a237be918f69918e3b895a3d521933a631c6c6bd Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrgen=20Vigna?= Date: Mon, 7 Jan 2002 14:50:57 +0000 Subject: [PATCH] Fixed InsetText::getLyXText(). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3303 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/ChangeLog | 5 +++++ src/insets/insettext.C | 45 ++++++++++++++++++++++++++++-------------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog index 1ad6a500f4..1c0c8b36a1 100644 --- a/src/insets/ChangeLog +++ b/src/insets/ChangeLog @@ -1,3 +1,8 @@ +2002-01-07 Juergen Vigna + + * insettext.C (getLyXText): Fixed this function. An insert into the + map is only done if we REALLY have a new BufferView. + 2002-01-07 Martin Vermeer * insettext.C: fix bug illustrated by attachment #37 of bug #59 diff --git a/src/insets/insettext.C b/src/insets/insettext.C index e66a358ed0..01bc80c141 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -2128,26 +2128,41 @@ LyXText * InsetText::getLyXText(BufferView const * lbv, Cache::iterator it = cache.find(bv); if (it != cache.end()) { - if (do_reinit) + if (do_reinit) { reinitLyXText(); - else if (do_resize) + } else if (do_resize) { resizeLyXText(do_resize); - if (lt || !it->second.remove) { - lyx::Assert(it->second.text.get()); - cached_text = it->second.text; - if (recursive && the_locking_inset) { - return the_locking_inset->getLyXText(bv, true); - } - return cached_text.get(); - } else if (it->second.remove) { - if (locked) { - saveLyXTextState(it->second.text.get()); - } else { - sstate.lpar = 0; + } else { + if (lt || !it->second.remove) { + lyx::Assert(it->second.text.get()); + cached_text = it->second.text; + if (recursive && the_locking_inset) { + return the_locking_inset->getLyXText(bv, true); + } + return cached_text.get(); + } else if (it->second.remove) { + if (locked) { + saveLyXTextState(it->second.text.get()); + } else { + sstate.lpar = 0; + } } + // + // when we have to reinit the existing LyXText! + // + it->second.text->init(bv); + restoreLyXTextState(bv, it->second.text.get()); + it->second.remove = false; + } + cached_text = it->second.text; + if (the_locking_inset && recursive) { + return the_locking_inset->getLyXText(bv); } + return cached_text.get(); } - + /// + // we are here only if we don't have a BufferView * in the cache!!! + /// cached_text.reset(new LyXText(const_cast(this))); cached_text->init(bv); restoreLyXTextState(bv, cached_text.get()); -- 2.39.2