]> git.lyx.org Git - features.git/commitdiff
Fixed InsetText::getLyXText().
authorJürgen Vigna <jug@sad.it>
Mon, 7 Jan 2002 14:50:57 +0000 (14:50 +0000)
committerJürgen Vigna <jug@sad.it>
Mon, 7 Jan 2002 14:50:57 +0000 (14:50 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3303 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/ChangeLog
src/insets/insettext.C

index 1ad6a500f4ed312ea819e69aaaea2c43bf01db1d..1c0c8b36a11c3eba788fb71bdf34b4515be586ca 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-07  Juergen Vigna  <jug@sad.it>
+
+       * 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  <martin.vermeer@hut.fi>
 
        * insettext.C: fix bug illustrated by attachment #37 of bug #59
index e66a358ed054f3353135ea3ca3f64b423a7c6ffd..01bc80c14129243aefd0ba67a2f197710ee121a0 100644 (file)
@@ -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<InsetText *>(this)));
        cached_text->init(bv);
        restoreLyXTextState(bv, cached_text.get());