]> git.lyx.org Git - features.git/commitdiff
Cleanup fix for bug 2382:
authorJürgen Spitzmüller <spitz@lyx.org>
Tue, 19 Sep 2006 09:39:17 +0000 (09:39 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Tue, 19 Sep 2006 09:39:17 +0000 (09:39 +0000)
* src/CutAndPaste.C (pasteSelectionHelper): pass Cursor
as argument, remove cursor-dependent arguments,
implement method to reset layout in insets which
forceParagraphsToDefault.

* src/CutAndPaste.C (pasteParagraphList): adapt call of
pasteSelectionHelper.

* insets/insetbox.C (doDispatch):
* insets/insetert.C (doDispatch):
* insets/insetcharstyle.C (doDispatch):
* insettext.[Ch] (forceParagraphsToDefault):
remove ad-hoc-Code to
reset paragraph layout.
This is now done generally in CutAndPaste.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15062 a592a061-630c-0410-9148-cb99ea01b6c8

src/CutAndPaste.C
src/insets/insetbox.C
src/insets/insetcharstyle.C
src/insets/insetert.C
src/insets/insettabular.C
src/insets/insettext.C
src/insets/insettext.h

index 7a22cfc335d20ada62e9787142683096571c98b6..b98f10b025bd4480c357ee0bd6599938c475be70 100644 (file)
@@ -123,11 +123,14 @@ bool checkPastePossible(int index)
 
 
 pair<PitPosPair, pit_type>
-pasteSelectionHelper(Buffer const & buffer,
-                    ParagraphList & pars, pit_type pit, int pos,
-                    ParagraphList const & parlist, textclass_type textclass,
-                    ErrorList & errorlist)
+pasteSelectionHelper(LCursor & cur, ParagraphList const & parlist,
+                    textclass_type textclass, ErrorList & errorlist)
 {
+       Buffer const & buffer = cur.buffer();
+       pit_type pit = cur.pit();
+       pos_type pos = cur.pos();
+       ParagraphList & pars = cur.text()->paragraphs();
+
        if (parlist.empty())
                return make_pair(PitPosPair(pit, pos), pit);
 
@@ -156,6 +159,19 @@ pasteSelectionHelper(Buffer const & buffer,
                }
        }
 
+       // If we are in an inset which returns forceDefaultParagraphs,
+       // set the paragraphs to default
+       // FIXME: pars[pit].forceDefaultParagraphs() should be enough,
+       // but returns the wrong values for tabular cells!
+       if (cur.inset().forceDefaultParagraphs(cur.idx())) {
+               LyXLayout_ptr const layout = 
+                       buffer.params().getLyXTextClass().defaultLayout();
+               ParagraphList::iterator const end = insertion.end();
+               for (ParagraphList::iterator par = insertion.begin(); 
+                               par != end; ++par)
+                       par->layout(layout);
+       }
+
        // Make sure there is no class difference.
        InsetText in;
        // This works without copying any paragraph data because we have
@@ -625,11 +641,8 @@ void pasteParagraphList(LCursor & cur, ParagraphList const & parlist,
                PitPosPair ppp;
 
                boost::tie(ppp, endpit) =
-                       pasteSelectionHelper(cur.buffer(),
-                                            text->paragraphs(),
-                                            cur.pit(), cur.pos(),
-                                            parlist, textclass,
-                                            errorList);
+                       pasteSelectionHelper(cur, parlist,
+                                            textclass, errorList);
                updateLabels(cur.buffer());
                cur.clearSelection();
                text->setCursor(cur, ppp.first, ppp.second);
index 9401ff3f4f8d50bb7d17f6ea6c925bd720183b1b..634c6b46b975d65598cd9a3bd5d18d6967ae2e46 100644 (file)
@@ -213,13 +213,6 @@ void InsetBox::doDispatch(LCursor & cur, FuncRequest & cmd)
                }
                InsetCollapsable::doDispatch(cur, cmd);
                break;
-       case LFUN_PASTE:
-       case LFUN_CLIPBOARD_PASTE:
-       case LFUN_PRIMARY_SELECTION_PASTE:
-               InsetCollapsable::doDispatch(cur, cmd);
-               if (!params_.inner_box)
-                       forceParagraphsToDefault(cur);
-               break;
 
        default:
                InsetCollapsable::doDispatch(cur, cmd);
index e5543adc4fbcc75311c538b38ff25716e0e933fe..1b5a5e418c10f6697373a2688a76f9b10b3cb790 100644 (file)
@@ -234,22 +234,17 @@ void InsetCharStyle::doDispatch(LCursor & cur, FuncRequest & cmd)
 {
        setInlined();
        switch (cmd.action) {
-               case LFUN_MOUSE_PRESS:
+       
+       case LFUN_MOUSE_PRESS:
                        if (cmd.button() == mouse_button::button3)
                                has_label_ = !has_label_;
                        else
                                InsetText::doDispatch(cur, cmd);
                        break;
-       case LFUN_PASTE:
-       case LFUN_CLIPBOARD_PASTE:
-       case LFUN_PRIMARY_SELECTION_PASTE: {
+
+       default:
                InsetCollapsable::doDispatch(cur, cmd);
-               forceParagraphsToDefault(cur);
                break;
-               }
-               default:
-                       InsetCollapsable::doDispatch(cur, cmd);
-                       break;
        }
 }
 
index 4b3a6f8f58fed8deb57eebde5fabaca8672299c9..ce96f9ded78787c60d2ac38db1e1e2f29e2ff694 100644 (file)
@@ -224,7 +224,6 @@ void InsetERT::doDispatch(LCursor & cur, FuncRequest & cmd)
 
                // Since we can only store plain text, we must reset all
                // attributes.
-               forceParagraphsToDefault(cur);
                // FIXME: Change only the pasted paragraphs
 
                BufferParams const & bp = cur.buffer().params();
index f2725b6a552f28b6b980cf773057bb000e389da6..2664f8563383ec97541507d0bf12e8ccbb47d847 100644 (file)
@@ -731,9 +731,6 @@ void InsetTabular::doDispatch(LCursor & cur, FuncRequest & cmd)
                        break;
                }
                cell(cur.idx())->dispatch(cur, cmd);
-               // Reset pasted paragraphs:
-               if (tabular.getPWidth(cur.idx()).zero())
-                       cell(cur.idx())->forceParagraphsToDefault(cur);
                break;
 
        case LFUN_FONT_EMPH:
index 9604bd8ebe8283428cd52356b24f7b96e3e15775..2ff1fdb0c6c703cc1955130b7fe0b4a9d2d5e0e8 100644 (file)
@@ -251,18 +251,6 @@ InsetBase * InsetText::editXY(LCursor & cur, int x, int y)
 }
 
 
-void InsetText::forceParagraphsToDefault(LCursor & cur)
-{
-       BufferParams const & bp = cur.buffer().params();
-       LyXLayout_ptr const layout =
-               bp.getLyXTextClass().defaultLayout();
-       ParagraphList::iterator const end = paragraphs().end();
-       for (ParagraphList::iterator par = paragraphs().begin();
-                       par != end; ++par)
-               par->layout(layout);
-}
-
-
 void InsetText::doDispatch(LCursor & cur, FuncRequest & cmd)
 {
        lyxerr[Debug::DEBUG] << BOOST_CURRENT_FUNCTION
index 202dd7df1af6e4e74625102f56d412a9a0f18612..95c282a5587886c6d7846bee06ba0f66a448caf2 100644 (file)
@@ -138,8 +138,6 @@ public:
        InsetText(InsetText const &);
        ///
        bool & Wide() const { return wide_inset_; }
-       ///
-       void forceParagraphsToDefault(LCursor & cur);
 
 protected:
        ///