fix inserting text file into a text inset

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@9560 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2005-01-31 17:21:17 +00:00
parent 30e565bb29
commit 3f74d3dc9b
3 changed files with 29 additions and 17 deletions

View File

@ -809,7 +809,7 @@ void BufferView::Pimpl::MenuInsertLyXFile(string const & filenm)
owner_->message(bformat(_("Inserting document %1$s..."), disp_fn)); owner_->message(bformat(_("Inserting document %1$s..."), disp_fn));
bv_->cursor().clearSelection(); bv_->cursor().clearSelection();
bv_->text()->breakParagraph(bv_->cursor()); bv_->getLyXText()->breakParagraph(bv_->cursor());
BOOST_ASSERT(bv_->cursor().inTexted()); BOOST_ASSERT(bv_->cursor().inTexted());

View File

@ -1,3 +1,15 @@
2005-01-27 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* BufferView_pimpl.C (MenuInsertLyXFile): do breakParagraph on the
LyXText containing the cursor, not the top-level one.
* buffer.C (Impl): make sure the toplevel insettext has AutoBreak_
true.
(insertStringAsLines): rename par to pit; use temporary variable
par to hold a Paragraph; do not store par.layout() in a variable,
since the pointer may die when breaking paragraphs; pass pars to
breakParagraph() instead of Buffer::paragraphs().
2005-01-31 Asger Ottar Alstrup <aalstrup@laerdal.dk> 2005-01-31 Asger Ottar Alstrup <aalstrup@laerdal.dk>
* lyxlex_pimpl.h: #include <fstream>. * lyxlex_pimpl.h: #include <fstream>.
@ -39,7 +51,7 @@
* vc-backend.C (find_file): rewrite to use boost.filesystem * vc-backend.C (find_file): rewrite to use boost.filesystem
(scanMaster): ditto (scanMaster): ditto
* main.C (main): sett default name check for boost.filesystem to * main.C (main): set default name check for boost.filesystem to
no check no check
* lyxfunc.C (menuNew): rewrite to use boost.filesystem * lyxfunc.C (menuNew): rewrite to use boost.filesystem
@ -88,7 +100,7 @@
2005-01-24 Jürgen Spitzmüller <j.spitzmueller@gmx.de> 2005-01-24 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
* LaTeXFeatures.[Ch]: Add a static list packages_ that * LaTeXFeatures.[Ch]: Add a static list packages_ that
holds the contens of packages.lst. New functions getAvailable holds the contents of packages.lst. New functions getAvailable
and isAvailable to parse and check that list, resp. and isAvailable to parse and check that list, resp.
* LyXAction.C: * LyXAction.C:

View File

@ -198,6 +198,7 @@ Buffer::Impl::Impl(Buffer & parent, string const & file, bool readonly_)
filename(file), filepath(OnlyPath(file)), file_fully_loaded(false), filename(file), filepath(OnlyPath(file)), file_fully_loaded(false),
inset(params) inset(params)
{ {
inset.setAutoBreakRows(true);
lyxvc.buffer(&parent); lyxvc.buffer(&parent);
temppath = createBufferTmpDir(); temppath = createBufferTmpDir();
// FIXME: And now do something if temppath == string(), because we // FIXME: And now do something if temppath == string(), because we
@ -472,23 +473,22 @@ bool Buffer::readDocument(LyXLex & lex)
// needed to insert the selection // needed to insert the selection
void Buffer::insertStringAsLines(ParagraphList & pars, void Buffer::insertStringAsLines(ParagraphList & pars,
pit_type & par, pos_type & pos, pit_type & pit, pos_type & pos,
LyXFont const & fn, string const & str, bool autobreakrows) LyXFont const & fn, string const & str, bool autobreakrows)
{ {
LyXLayout_ptr const & layout = pars[par].layout();
LyXFont font = fn; LyXFont font = fn;
pars[par].checkInsertChar(font); pars[pit].checkInsertChar(font);
// insert the string, don't insert doublespace // insert the string, don't insert doublespace
bool space_inserted = true; bool space_inserted = true;
for (string::const_iterator cit = str.begin(); for (string::const_iterator cit = str.begin();
cit != str.end(); ++cit) { cit != str.end(); ++cit) {
Paragraph & par = pars[pit];
if (*cit == '\n') { if (*cit == '\n') {
if (autobreakrows && (!pars[par].empty() || pars[par].allowEmpty())) { if (autobreakrows && (!par.empty() || par.allowEmpty())) {
breakParagraph(params(), paragraphs(), par, pos, breakParagraph(params(), pars, pit, pos,
layout->isEnvironment()); par.layout()->isEnvironment());
++par; ++pit;
pos = 0; pos = 0;
space_inserted = true; space_inserted = true;
} else { } else {
@ -496,18 +496,18 @@ void Buffer::insertStringAsLines(ParagraphList & pars,
} }
// do not insert consecutive spaces if !free_spacing // do not insert consecutive spaces if !free_spacing
} else if ((*cit == ' ' || *cit == '\t') && } else if ((*cit == ' ' || *cit == '\t') &&
space_inserted && !pars[par].isFreeSpacing()) { space_inserted && !par.isFreeSpacing()) {
continue; continue;
} else if (*cit == '\t') { } else if (*cit == '\t') {
if (!pars[par].isFreeSpacing()) { if (!par.isFreeSpacing()) {
// tabs are like spaces here // tabs are like spaces here
pars[par].insertChar(pos, ' ', font); par.insertChar(pos, ' ', font);
++pos; ++pos;
space_inserted = true; space_inserted = true;
} else { } else {
const pos_type n = 8 - pos % 8; const pos_type n = 8 - pos % 8;
for (pos_type i = 0; i < n; ++i) { for (pos_type i = 0; i < n; ++i) {
pars[par].insertChar(pos, ' ', font); par.insertChar(pos, ' ', font);
++pos; ++pos;
} }
space_inserted = true; space_inserted = true;
@ -517,7 +517,7 @@ void Buffer::insertStringAsLines(ParagraphList & pars,
continue; continue;
} else { } else {
// just insert the character // just insert the character
pars[par].insertChar(pos, *cit, font); par.insertChar(pos, *cit, font);
++pos; ++pos;
space_inserted = (*cit == ' '); space_inserted = (*cit == ' ');
} }