#include "lyxrc.h"
#include "lyxtext.h"
#include "metricsinfo.h"
+#include "outputparams.h"
#include "output_docbook.h"
#include "output_latex.h"
#include "output_plaintext.h"
int const w = tm.width() + 2 * border_;
int const a = tm.ascent() + border_;
int const h = a + tm.descent() + border_;
- pi.pain.rectangle(x, y - a, (wide() ? tm.maxWidth() : w), h,
- frameColor());
+ pi.pain.rectangle(x, y - a,
+ ((wide() || hasFixedWidth()) ? tm.maxWidth() : w),
+ h, frameColor());
}
}
int const w = tm.width() + 2 * border_;
int const a = tm.ascent() + border_;
int const h = a + tm.descent() + border_;
- pi.pain.fillRectangle(x, y - a, (wide() ? tm.maxWidth() : w), h,
- backgroundColor());
- text_.drawSelection(pi, x, y);
+ pi.pain.fillRectangle(x, y - a,
+ ((wide() || hasFixedWidth()) ? tm.maxWidth() : w),
+ h, backgroundColor());
+ text_.drawSelection(pi, x + border_, y);
}
void InsetText::doDispatch(LCursor & cur, FuncRequest & cmd)
{
- lyxerr[Debug::ACTION] << BOOST_CURRENT_FUNCTION
+ LYXERR(Debug::ACTION) << BOOST_CURRENT_FUNCTION
<< " [ cmd.action = "
<< cmd.action << ']' << endl;
text_.dispatch(cur, cmd);
void InsetText::acceptChanges(BufferParams const & bparams)
{
- ParagraphList & pars = paragraphs();
- pit_type const pars_size = (pit_type) pars.size();
-
- // first, accept changes within each individual paragraph
- // (do not consider end-of-par)
- for (pit_type pit = 0; pit < pars_size; ++pit) {
- if (pars[pit].empty()) // prevent assertion failure
- continue;
- pars[pit].acceptChanges(bparams, 0, pars[pit].size());
- }
-
- // next, accept imaginary end-of-par characters
- for (pit_type pit = 0; pit < pars_size; ++pit) {
- pos_type pos = pars[pit].size();
-
- if (pars[pit].isInserted(pos)) {
- pars[pit].setChange(pos, Change(Change::UNCHANGED));
- } else if (pars[pit].isDeleted(pos)) {
- if (pit == pars.size() - 1) {
- // we cannot remove a par break at the end of the last
- // paragraph; instead, we mark it unchanged
- pars[pit].setChange(pos, Change(Change::UNCHANGED));
- } else {
- mergeParagraph(bparams, pars, pit);
- --pit;
- }
- }
- }
-
- // FIXME: finally, invoke the DEPM
- // This cannot be done here but at a higher calling level
- // because we need BufferView::checkDepm().
+ text_.acceptChanges(bparams);
}
void InsetText::rejectChanges(BufferParams const & bparams)
{
- ParagraphList & pars = paragraphs();
- pit_type const pars_size = (pit_type) pars.size();
-
- // first, reject changes within each individual paragraph (do not
- // consider end-of-par)
- for (pit_type pit = 0; pit < pars_size; ++pit) {
- if (pars[pit].empty()) // prevent assertion failure
- continue;
- pars[pit].rejectChanges(bparams, 0, pars[pit].size());
- }
-
- // next, reject imaginary end-of-par characters
- for (pit_type pit = 0; pit < pars_size; ++pit) {
- pos_type pos = pars[pit].size();
-
- if (pars[pit].isDeleted(pos)) {
- pars[pit].setChange(pos, Change(Change::UNCHANGED));
- } else if (pars[pit].isInserted(pos)) {
- if (pit == pars.size() - 1) {
- // we mark the par break at the end of the last
- // paragraph unchanged
- pars[pit].setChange(pos, Change(Change::UNCHANGED));
- } else {
- mergeParagraph(bparams, pars, pit);
- --pit;
- }
- }
- }
-
- // FIXME: finally, invoke the DEPM
- // This cannot be done here but at a higher calling level
- // because we need BufferView::checkDepm().
+ text_.rejectChanges(bparams);
}
int InsetText::latex(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+ OutputParams const & runparams) const
{
TexRow texrow;
latexParagraphs(buf, paragraphs(), os, texrow, runparams);
int InsetText::plaintext(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+ OutputParams const & runparams) const
{
ParagraphList::const_iterator beg = paragraphs().begin();
ParagraphList::const_iterator end = paragraphs().end();
ParagraphList::const_iterator it = beg;
bool ref_printed = false;
- odocstringstream oss;
- for (; it != end; ++it)
+ int len = 0;
+ for (; it != end; ++it) {
+ if (it != beg) {
+ os << '\n';
+ if (runparams.linelen > 0)
+ os << '\n';
+ }
+ odocstringstream oss;
writePlaintextParagraph(buf, *it, oss, runparams, ref_printed);
+ docstring const str = oss.str();
+ os << str;
+ // FIXME: len is not computed fully correctly; in principle,
+ // we have to count the characters after the last '\n'
+ len = str.size();
+ }
- docstring const str = oss.str();
- os << str;
- // Return how many newlines we issued.
- return int(lyx::count(str.begin(), str.end(), '\n'));
+ return len;
}
int InsetText::docbook(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+ OutputParams const & runparams) const
{
docbookParagraphs(paragraphs(), buf, os, runparams);
return 0;