-/* This file is part of
- * ======================================================
- *
- * LyX, The Document Processor
- *
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2001 The LyX Team.
+/**
+ * \file paragraph_funcs.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * ====================================================== */
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS
+ */
#include <config.h>
{
// create a new paragraph
Paragraph * tmp = new Paragraph(par);
+ // without doing that we get a crash when typing <Return> at the
+ // end of a paragraph
+ tmp->layout(bparams.getLyXTextClass().defaultLayout());
// remember to set the inset_owner
tmp->setInsetOwner(par->inInset());
-
+
// this is an idea for a more userfriendly layout handling, I will
// see what the users say
-
+
// layout stays the same with latex-environments
if (flag) {
tmp->layout(par->layout());
tmp->setLabelWidthString(par->params().labelWidthString());
}
- bool isempty = (par->layout()->keepempty && par->empty());
-
+ bool const isempty = (par->layout()->keepempty && par->empty());
+
if (!isempty && (par->size() > pos || par->empty() || flag == 2)) {
tmp->layout(par->layout());
tmp->params().align(par->params().align());
tmp->setLabelWidthString(par->params().labelWidthString());
-
+
tmp->params().lineBottom(par->params().lineBottom());
par->params().lineBottom(false);
tmp->params().pagebreakBottom(par->params().pagebreakBottom());
par->params().pagebreakBottom(false);
tmp->params().spaceBottom(par->params().spaceBottom());
par->params().spaceBottom(VSpace(VSpace::NONE));
-
+
tmp->params().depth(par->params().depth());
tmp->params().noindent(par->params().noindent());
-
+
// copy everything behind the break-position
// to the new paragraph
+
+#ifdef WITH_WARNINGS
+#warning this seems wrong
+#endif
+ /* FIXME: if !keepempty, empty() == true, then we reach
+ * here with size() == 0. So pos_end becomes - 1. Why
+ * doesn't this cause problems ???
+ */
pos_type pos_end = par->size() - 1;
pos_type i = pos;
pos_type j = pos;
par->erase(i);
}
}
-
- // just an idea of me
- if (!pos) {
- tmp->params().lineTop(par->params().lineTop());
- tmp->params().pagebreakTop(par->params().pagebreakTop());
- tmp->params().spaceTop(par->params().spaceTop());
- tmp->bibkey = par->bibkey;
-
- par->bibkey = 0;
- par->params().clear();
-
- par->layout(bparams.getLyXTextClass().defaultLayout());
-
- // layout stays the same with latex-environments
- if (flag) {
- par->layout(tmp->layout());
- par->setLabelWidthString(tmp->params().labelWidthString());
- par->params().depth(tmp->params().depth());
- }
+
+ if (pos)
+ return;
+
+ tmp->params().lineTop(par->params().lineTop());
+ tmp->params().pagebreakTop(par->params().pagebreakTop());
+ tmp->params().spaceTop(par->params().spaceTop());
+ tmp->bibkey = par->bibkey;
+
+ par->bibkey = 0;
+ par->params().clear();
+
+ par->layout(bparams.getLyXTextClass().defaultLayout());
+
+ // layout stays the same with latex-environments
+ if (flag) {
+ par->layout(tmp->layout());
+ par->setLabelWidthString(tmp->params().labelWidthString());
+ par->params().depth(tmp->params().depth());
}
}
if (tmp->insertFromMinibuffer(j - pos))
++j;
}
-
+
for (pos_type k = pos_end; k >= pos; --k) {
par->erase(k);
}
}
-#if 0
-// Be carefull, this does not make any check at all.
-// This method has wrong name, it combined this par with the next par.
-// In that sense it is the reverse of break paragraph. (Lgb)
-void pasteParagraph(BufferParams const & bparams,
- Paragraph * par)
+void mergeParagraph(BufferParams const & bparams, Paragraph * par)
{
- // copy the next paragraph to this one
Paragraph * the_next = par->next();
// first the DTP-stuff
}
+#if 0
Paragraph * depthHook(Paragraph * par, Paragraph::depth_type depth)
{
Paragraph * newpar = par;
}
-Paragraph * outerHook(Paragraph * par)
+Paragraph * outerHook(Paragraph * par)
{
if (!par->getDepth())
return 0;