]> git.lyx.org Git - features.git/commitdiff
Paragraph::inInset() shall not be used if the owner inset was not initialized. Make...
authorAbdelrazak Younes <younes@lyx.org>
Sat, 13 Sep 2008 17:01:54 +0000 (17:01 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Sat, 13 Sep 2008 17:01:54 +0000 (17:01 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26385 a592a061-630c-0410-9148-cb99ea01b6c8

src/CutAndPaste.cpp
src/Paragraph.cpp
src/Paragraph.h
src/frontends/qt4/GuiToolbar.cpp
src/insets/InsetText.cpp
src/paragraph_funcs.cpp

index 87e0803b78c1572c0f05f3b6417324788e7855b3..901b7d7f4a6abafe0d4bcd587e91c64884f10506 100644 (file)
@@ -122,6 +122,7 @@ pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist,
                                if (insertion[i].isNewline(j)) {
                                        // do not track deletion of newline
                                        insertion[i].eraseChar(j, false);
+                                       insertion[i].setInsetOwner(target_inset);
                                        breakParagraphConservative(
                                                        buffer.params(),
                                                        insertion, i, j);
index 98cd13d81111472f215798c961f263024c70b6d5..5ab65b49a4603e75ea020d7cbf9d352f127416f8 100644 (file)
@@ -175,7 +175,7 @@ public:
        Paragraph * owner_;
 
        /// In which Inset?
-       Inset * inset_owner_;
+       Inset const * inset_owner_;
 
        ///
        FontList fontlist_;
@@ -1656,28 +1656,19 @@ void Paragraph::setBeginOfBody()
 
 bool Paragraph::forcePlainLayout() const
 {
-       Inset const * const inset = inInset();
-       if (!inset)
-               return true;
-       return inset->forcePlainLayout();
+       return inInset().forcePlainLayout();
 }
 
 
 bool Paragraph::allowParagraphCustomization() const
 {
-       Inset const * const inset = inInset();
-       if (!inset)
-               return true;
-       return inset->allowParagraphCustomization();
+       return inInset().allowParagraphCustomization();
 }
 
 
 bool Paragraph::usePlainLayout() const
 {
-       Inset const * const inset = inInset();
-       if (!inset)
-               return false;
-       return inset->usePlainLayout();
+       return inInset().usePlainLayout();
 }
 
 
@@ -2390,7 +2381,7 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
 }
 
 
-void Paragraph::setInsetOwner(Inset * inset)
+void Paragraph::setInsetOwner(Inset const * inset)
 {
        d->inset_owner_ = inset;
 }
@@ -2423,9 +2414,10 @@ void Paragraph::setPlainOrDefaultLayout(DocumentClass const & tclass)
 }
 
 
-Inset * Paragraph::inInset() const
+Inset const & Paragraph::inInset() const
 {
-       return d->inset_owner_;
+       LASSERT(d->inset_owner_, exit(10));
+       return *d->inset_owner_;
 }
 
 
index c5bf500043875cc3d7f6f465179cf7889d4ea865..6fdb27017765955175ae263450220195b476fe07 100644 (file)
@@ -153,9 +153,9 @@ public:
        void makeSameLayout(Paragraph const & par);
 
        ///
-       void setInsetOwner(Inset * inset);
+       void setInsetOwner(Inset const * inset);
        ///
-       Inset * inInset() const;
+       Inset const & inInset() const;
        ///
        InsetCode ownerCode() const;
        ///
index 632f7b49793df7f84e2d270e60a5a14374aa52cd..aead589113561a01fa9148ebdba9a04fb4de1e76 100644 (file)
@@ -602,7 +602,7 @@ void GuiLayoutBox::updateContents(bool reset)
        // or we've moved from one inset to another
        DocumentClass const * text_class = &buffer->params().documentClass();
        Inset const * inset = 
-               owner_.view()->cursor().innerParagraph().inInset();
+               &(owner_.view()->cursor().innerParagraph().inInset());
        if (!reset && text_class_ == text_class && inset_ == inset) {
                set(owner_.view()->cursor().innerParagraph().layout().name());
                return;
index cf34fc9ed06dede2719afbe4a3c929fcda76ceb3..56e9d8f0318f7995c74bbbb687742e682d185fb0 100644 (file)
@@ -103,8 +103,8 @@ void InsetText::initParagraphs(BufferParams const & bparams)
        LASSERT(paragraphs().empty(), /**/);
        paragraphs().push_back(Paragraph());
        Paragraph & ourpar = paragraphs().back();
-       ourpar.setPlainOrDefaultLayout(bparams.documentClass());
        ourpar.setInsetOwner(this);
+       ourpar.setPlainOrDefaultLayout(bparams.documentClass());
 }
 
 
index dc32425ea238d999f6a3f98489238eacf79de2cc..600d361bd720ced8849199e4c97ea6791421702f 100644 (file)
@@ -47,8 +47,7 @@ static bool moveItem(Paragraph & fromPar, pos_type fromPos,
                        tmpInset = fromPar.releaseInset(fromPos);
                }
 
-               Inset * inset = toPar.inInset();
-               if (inset && !inset->insetAllowed(tmpInset->lyxCode())) {
+               if (!toPar.inInset().insetAllowed(tmpInset->lyxCode())) {
                        delete tmpInset;
                        return false;
                }
@@ -75,7 +74,7 @@ void breakParagraph(BufferParams const & bparams,
        Paragraph & par = pars[par_offset];
 
        // remember to set the inset_owner
-       tmp->setInsetOwner(par.inInset());
+       tmp->setInsetOwner(&par.inInset());
        // without doing that we get a crash when typing <Return> at the
        // end of a paragraph
        tmp->setPlainOrDefaultLayout(bparams.documentClass());
@@ -163,8 +162,8 @@ void breakParagraphConservative(BufferParams const & bparams,
                                       Paragraph());
        Paragraph & par = pars[par_offset];
 
+       tmp.setInsetOwner(&par.inInset());
        tmp.makeSameLayout(par);
-       tmp.setInsetOwner(par.inInset());
 
        LASSERT(pos <= par.size(), /**/);