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));
bv_->cursor().clearSelection();
bv_->text()->breakParagraph(bv_->cursor());
bv_->getLyXText()->breakParagraph(bv_->cursor());
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>
* lyxlex_pimpl.h: #include <fstream>.
@ -39,7 +51,7 @@
* vc-backend.C (find_file): rewrite to use boost.filesystem
(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
* lyxfunc.C (menuNew): rewrite to use boost.filesystem
@ -88,7 +100,7 @@
2005-01-24 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
* 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.
* 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),
inset(params)
{
inset.setAutoBreakRows(true);
lyxvc.buffer(&parent);
temppath = createBufferTmpDir();
// FIXME: And now do something if temppath == string(), because we
@ -472,23 +473,22 @@ bool Buffer::readDocument(LyXLex & lex)
// needed to insert the selection
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)
{
LyXLayout_ptr const & layout = pars[par].layout();
LyXFont font = fn;
pars[par].checkInsertChar(font);
pars[pit].checkInsertChar(font);
// insert the string, don't insert doublespace
bool space_inserted = true;
for (string::const_iterator cit = str.begin();
cit != str.end(); ++cit) {
cit != str.end(); ++cit) {
Paragraph & par = pars[pit];
if (*cit == '\n') {
if (autobreakrows && (!pars[par].empty() || pars[par].allowEmpty())) {
breakParagraph(params(), paragraphs(), par, pos,
layout->isEnvironment());
++par;
if (autobreakrows && (!par.empty() || par.allowEmpty())) {
breakParagraph(params(), pars, pit, pos,
par.layout()->isEnvironment());
++pit;
pos = 0;
space_inserted = true;
} else {
@ -496,18 +496,18 @@ void Buffer::insertStringAsLines(ParagraphList & pars,
}
// do not insert consecutive spaces if !free_spacing
} else if ((*cit == ' ' || *cit == '\t') &&
space_inserted && !pars[par].isFreeSpacing()) {
space_inserted && !par.isFreeSpacing()) {
continue;
} else if (*cit == '\t') {
if (!pars[par].isFreeSpacing()) {
if (!par.isFreeSpacing()) {
// tabs are like spaces here
pars[par].insertChar(pos, ' ', font);
par.insertChar(pos, ' ', font);
++pos;
space_inserted = true;
} else {
const pos_type n = 8 - pos % 8;
for (pos_type i = 0; i < n; ++i) {
pars[par].insertChar(pos, ' ', font);
par.insertChar(pos, ' ', font);
++pos;
}
space_inserted = true;
@ -517,7 +517,7 @@ void Buffer::insertStringAsLines(ParagraphList & pars,
continue;
} else {
// just insert the character
pars[par].insertChar(pos, *cit, font);
par.insertChar(pos, *cit, font);
++pos;
space_inserted = (*cit == ' ');
}