From: Lars Gullik Bjønnes
Date: Mon, 24 Jun 2002 20:28:12 +0000 (+0000)
Subject: layout as layout
X-Git-Tag: 1.6.10~19021
X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=65d4b136161a96d10cec620985a159cf8953303c;p=features.git
layout as layout
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4471 a592a061-630c-0410-9148-cb99ea01b6c8
---
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d8fc62fced..597c0bf5e0 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -8,7 +8,6 @@ src/converter.C
src/CutAndPaste.C
src/debug.C
src/exporter.C
-src/ext_l10n.h
src/FloatList.C
src/frontends/controllers/biblio.C
src/frontends/controllers/ButtonController.h
@@ -24,7 +23,6 @@ src/frontends/controllers/ControlPreamble.C
src/frontends/controllers/ControlPrint.C
src/frontends/controllers/ControlSearch.C
src/frontends/controllers/ControlSpellchecker.C
-src/frontends/controllers/ControlTexinfo.C
src/frontends/controllers/ControlThesaurus.C
src/frontends/controllers/ControlVCLog.C
src/frontends/controllers/frnt_lang.C
@@ -51,6 +49,7 @@ src/frontends/qt2/QGraphics.C
src/frontends/qt2/QInclude.C
src/frontends/qt2/QIndex.C
src/frontends/qt2/QLog.C
+src/frontends/qt2/QLyXKeySym.C
src/frontends/qt2/QMinipage.C
src/frontends/qt2/QParagraph.C
src/frontends/qt2/QParagraphDialog.C
@@ -73,80 +72,43 @@ src/frontends/xforms/ColorHandler.C
src/frontends/xforms/combox.C
src/frontends/xforms/FeedbackController.C
src/frontends/xforms/FileDialog.C
-src/frontends/xforms/form_aboutlyx.C
src/frontends/xforms/FormAboutlyx.C
-src/frontends/xforms/form_bibitem.C
src/frontends/xforms/FormBibitem.C
-src/frontends/xforms/form_bibtex.C
src/frontends/xforms/FormBibtex.C
-src/frontends/xforms/form_browser.C
-src/frontends/xforms/form_character.C
src/frontends/xforms/FormCharacter.C
-src/frontends/xforms/form_citation.C
src/frontends/xforms/FormCitation.C
-src/frontends/xforms/form_document.C
src/frontends/xforms/FormDocument.C
-src/frontends/xforms/form_error.C
src/frontends/xforms/FormError.C
-src/frontends/xforms/form_ert.C
src/frontends/xforms/FormERT.C
-src/frontends/xforms/form_external.C
src/frontends/xforms/FormExternal.C
-src/frontends/xforms/form_filedialog.C
src/frontends/xforms/FormFiledialog.C
-src/frontends/xforms/form_float.C
src/frontends/xforms/FormFloat.C
-src/frontends/xforms/form_forks.C
src/frontends/xforms/FormForks.C
-src/frontends/xforms/form_graphics.C
src/frontends/xforms/FormGraphics.C
-src/frontends/xforms/form_include.C
src/frontends/xforms/FormInclude.C
-src/frontends/xforms/form_index.C
src/frontends/xforms/FormIndex.C
src/frontends/xforms/FormLog.C
src/frontends/xforms/FormMathsBitmap.C
-src/frontends/xforms/form_maths_deco.C
src/frontends/xforms/FormMathsDeco.C
-src/frontends/xforms/form_maths_delim.C
src/frontends/xforms/FormMathsDelim.C
-src/frontends/xforms/form_maths_matrix.C
src/frontends/xforms/FormMathsMatrix.C
-src/frontends/xforms/form_maths_panel.C
src/frontends/xforms/FormMathsPanel.C
-src/frontends/xforms/form_maths_space.C
src/frontends/xforms/FormMathsSpace.C
-src/frontends/xforms/form_maths_style.C
src/frontends/xforms/FormMathsStyle.C
-src/frontends/xforms/form_minipage.C
src/frontends/xforms/FormMinipage.C
-src/frontends/xforms/form_paragraph.C
src/frontends/xforms/FormParagraph.C
-src/frontends/xforms/form_preamble.C
src/frontends/xforms/FormPreamble.C
-src/frontends/xforms/form_preferences.C
src/frontends/xforms/FormPreferences.C
-src/frontends/xforms/form_print.C
src/frontends/xforms/FormPrint.C
-src/frontends/xforms/form_ref.C
src/frontends/xforms/FormRef.C
-src/frontends/xforms/form_search.C
src/frontends/xforms/FormSearch.C
-src/frontends/xforms/form_sendto.C
src/frontends/xforms/FormSendto.C
-src/frontends/xforms/form_spellchecker.C
src/frontends/xforms/FormSpellchecker.C
-src/frontends/xforms/form_tabular.C
src/frontends/xforms/FormTabular.C
-src/frontends/xforms/form_tabular_create.C
src/frontends/xforms/FormTabularCreate.C
-src/frontends/xforms/form_texinfo.C
src/frontends/xforms/FormTexinfo.C
-src/frontends/xforms/form_thesaurus.C
src/frontends/xforms/FormThesaurus.C
-src/frontends/xforms/form_toc.C
src/frontends/xforms/FormToc.C
-src/frontends/xforms/form_url.C
src/frontends/xforms/FormUrl.C
src/frontends/xforms/FormVCLog.C
src/frontends/xforms/input_validators.C
@@ -196,6 +158,7 @@ src/mathed/formulabase.C
src/mathed/formula.C
src/mathed/formulamacro.C
src/mathed/math_cursor.C
+src/mathed/ref_inset.C
src/MenuBackend.C
src/minibuffer.C
src/paragraph.C
diff --git a/src/BufferView2.C b/src/BufferView2.C
index 7638b0435e..5624b2b324 100644
--- a/src/BufferView2.C
+++ b/src/BufferView2.C
@@ -611,7 +611,7 @@ int BufferView::unlockInset(UpdatableInset * inset)
inset->insetUnlock(this);
theLockingInset(0);
// make sure we update the combo !
- owner()->setLayout(getLyXText()->cursor.par()->layout());
+ owner()->setLayout(getLyXText()->cursor.par()->layout()->name());
// Tell the paragraph dialog that we changed paragraph
owner()->getDialogs()->updateParagraph();
finishUndo();
diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C
index db224b62ab..261d8b3fcf 100644
--- a/src/BufferView_pimpl.C
+++ b/src/BufferView_pimpl.C
@@ -130,7 +130,7 @@ BufferView::Pimpl::Pimpl(BufferView * b, LyXView * o,
{
workarea_.reset(WorkAreaFactory::create(xpos, ypos, width, height));
screen_.reset(LyXScreenFactory::create(workarea()));
-
+
// Setup the signals
workarea().scrollDocView.connect(boost::bind(&BufferView::Pimpl::scrollDocView, this, _1));
workarea().workAreaResize
@@ -163,7 +163,7 @@ WorkArea & BufferView::Pimpl::workarea() const
return *workarea_.get();
}
-
+
LyXScreen & BufferView::Pimpl::screen() const
{
return *screen_.get();
@@ -207,7 +207,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
if (buffer_) {
lyxerr[Debug::INFO] << "Buffer addr: " << buffer_ << endl;
buffer_->addUser(bv_);
-
+
// If we don't have a text object for this, we make one
if (bv_->text == 0) {
resizeCurrentBuffer();
@@ -215,7 +215,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
// FIXME: needed when ?
bv_->text->first_y = screen().topCursorVisible(bv_->text->cursor, bv_->text->first_y);
-
+
// Similarly, buffer-dependent dialogs should be updated or
// hidden. This should go here because some dialogs (eg ToC)
// require bv_->text.
@@ -231,7 +231,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
textcache.show(lyxerr, "buffer delete all");
textcache.clear();
}
-
+
repaint();
updateScrollbar();
owner_->updateMenubar();
@@ -372,7 +372,7 @@ void BufferView::Pimpl::updateScrollbar()
}
LyXText const & t = *bv_->text;
-
+
workarea().setScrollbarParams(t.height, t.first_y, t.defaultHeight());
}
@@ -408,10 +408,10 @@ int BufferView::Pimpl::scroll(long time)
return 0;
LyXText const * t = bv_->text;
-
- double const diff = t->defaultHeight()
+
+ double const diff = t->defaultHeight()
+ double(time) * double(time) * 0.125;
-
+
scrollDocView(int(diff));
workarea().setScrollbarParams(t->height, t->first_y, t->defaultHeight());
return 0;
@@ -896,7 +896,7 @@ void BufferView::Pimpl::workAreaResize()
// update from work area
work_area_width = workarea().workWidth();
work_area_height = workarea().workHeight();
-
+
if (buffer_ != 0) {
if (widthChange) {
// The visible LyXView need a resize
@@ -911,7 +911,7 @@ void BufferView::Pimpl::workAreaResize()
if (lyxerr.debugging())
textcache.show(lyxerr, "Expose delete all");
textcache.clear();
- // FIXME: this is aalready done in resizeCurrentBuffer() ??
+ // FIXME: this is aalready done in resizeCurrentBuffer() ??
buffer_->resizeInsets(bv_);
} else if (heightChange) {
// fitCursor() ensures we don't jump back
@@ -924,7 +924,7 @@ void BufferView::Pimpl::workAreaResize()
if (widthChange || heightChange) {
repaint();
}
-
+
// always make sure that the scrollbar is sane.
updateScrollbar();
owner_->updateLayoutChoice();
@@ -1360,7 +1360,7 @@ void BufferView::Pimpl::moveCursorUpdate(bool selecting, bool fitcur)
if (!lt->selection.set())
workarea().haveSelection(false);
-
+
/* ---> Everytime the cursor is moved, show the current font state. */
// should this too me moved out of this func?
//owner->showState();
@@ -1614,7 +1614,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
// If the entry is obsolete, use the new one instead.
if (hasLayout) {
- string const & obs = tclass[layout].obsoleted_by();
+ string const & obs = tclass[layout]->obsoleted_by();
if (!obs.empty())
layout = obs;
}
@@ -1634,7 +1634,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
Paragraph * spar = lt->selection.start.par();
Paragraph * epar = lt->selection.end.par()->next();
while(spar != epar) {
- if (spar->layout() != current_layout) {
+ if (spar->layout()->name() != current_layout) {
change_layout = true;
break;
}
@@ -2292,10 +2292,9 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
case LFUN_PROTECTEDSPACE:
{
LyXText * lt = bv_->getLyXText();
+ LyXLayout_ptr const & style = lt->cursor.par()->layout();
- LyXLayout const & style = tclass[lt->cursor.par()->layout()];
-
- if (style.free_spacing) {
+ if (style->free_spacing) {
lt->insertChar(bv_, ' ');
update(lt,
BufferView::SELECT
@@ -2983,7 +2982,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
}
InsetIndex * inset = new InsetIndex(InsetCommandParams("index", entry));
-
+
if (!insertInset(inset)) {
delete inset;
} else {
@@ -3217,10 +3216,9 @@ void BufferView::Pimpl::smartQuote()
hideCursor();
- LyXLayout const & style =
- textclasslist[bv_->buffer()->params.textclass][par->layout()];
+ LyXLayout_ptr const & style = par->layout();
- if (style.pass_thru ||
+ if (style->pass_thru ||
(!insertInset(new InsetQuotes(c, bv_->buffer()->params))))
bv_->owner()->getLyXFunc()->dispatch(LFUN_SELFINSERT, "\"");
}
diff --git a/src/ChangeLog b/src/ChangeLog
index 47fb22eb4b..1b090341ed 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,67 @@
+2002-06-24 Lars Gullik Bjønnes
+
+ * text2.C: layout as layout
+
+ * text.C: layout as layout
+
+ * tabular.C (OldFormatRead): layout as layout
+
+ * paragraph_pimpl.C (TeXDeeper): layout as layout
+ (realizeFont): layout as layout
+
+ * paragraph.C (writeFile): layout as layout
+ (validate): layout as layout
+ (getFont): layout as layout
+ (getLabelFont): layout as layout
+ (getLayoutFont): layout as layout
+ (breakParagraph): layout as layout
+ (stripLeadingSpaces): layout as layout
+ (getEndLabel): layout as layout
+ (getMaxDepthAfter): layout as layout
+ (applyLayout): layout as layout
+ (TeXOnePar): layout as layout
+ (simpleTeXOnePar): layout as layout
+ (TeXEnvironment): layout as layout
+ (layout): layout as layout
+ (layout): layout as layout
+
+ * lyxtextclass.C (compare_name): new functor to work with
+ shared_ptr, layout as layout
+ (Read): layout as layout
+ (hasLayout): layout as layout
+ (operator): layout as layout
+ (delete_layout): layout as layout
+ (defaultLayout): layout as layout
+
+ * lyxlayout_ptr_fwd.h: new file
+
+ * lyxlayout.C (Read): layout as layout
+
+ * lyx_cb.C (MenuInsertLabel): layout as layout
+
+ * bufferlist.C (newFile): layout as layout
+
+ * buffer.C (readLyXformat2): layout as layout
+ (parseSingleLyXformat2Token): layout as layout
+ (insertStringAsLines): layout as layout
+ (asciiParagraph): layout as layout
+ (latexParagraphs): layout as layout
+ (makeLinuxDocFile): layout as layout
+ (simpleLinuxDocOnePar): layout as layout
+ (makeDocBookFile): layout as layout
+ (simpleDocBookOnePar): layout as layout
+ (getLists): layout as layout
+
+ * LaTeXFeatures.C (getTClassPreamble): layout as layout
+
+ * CutAndPaste.C (cutSelection): layout as layout
+ (pasteSelection): layout as layout
+ (SwitchLayoutsBetweenClasses): layout as layout
+
+ * BufferView_pimpl.C (Dispatch): layout as layout
+ (smartQuote): layout as layout
+
+ * BufferView2.C (unlockInset): layout as layout
2002-06-24 André Pönitz
@@ -6,19 +70,19 @@
2002-06-21 John Levon
* lyxrc.h:
- * lyxrc.C:
+ * lyxrc.C:
* lyxfunc.C: remove display_shortcuts, show_banner
-
+
2002-06-21 John Levon
* Buffer_pimpl.C: oops, update on resize
-
+
2002-06-21 John Levon
- * buffer.C:
- * converter.C:
+ * buffer.C:
+ * converter.C:
* exporter.C:
- * lyxfunc.C:
+ * lyxfunc.C:
* BufferView.h:
* BufferView.C: use repaint()
@@ -26,13 +90,13 @@
* BufferView_pimpl.C: s/updateScreen()/repaint()/
as it's a clearer description. Remove superfluous
redraws.
-
+
2002-06-21 John Levon
* text.C: fix bug 488. Not ideal, but getting
getWord() to work properly for the insets that
matter is more difficult ...
-
+
2002-06-20 John Levon
* BufferView_pimpl.C:
@@ -48,7 +112,7 @@
* BufferView_pimpl.h:
* BufferView_pimpl.C: clean up resize() stuff,
and unnecessary updateScreen()s
-
+
2002-06-20 John Levon
* BufferView.h:
@@ -56,19 +120,19 @@
* BufferView_pimpl.h:
* BufferView_pimpl.C:
* lyxfind.h:
- * lyxfind.C:
+ * lyxfind.C:
* minibuffer.C: remove focus management of workarea,
not needed. Use screen's greyOut()
-
+
2002-06-17 Herbert Voss
-
- * converter.C: (convert) do not post a message, when converting
- fails, let the calling function decide what to do in this case
-
+
+ * converter.C: (convert) do not post a message, when converting
+ fails, let the calling function decide what to do in this case
+
2002-06-18 John Levon
* lyxfunc.C: tidy up a little
-
+
2002-06-16
* BufferView_pimpl.C (Pimpl): Use WorkAreaFactory.
@@ -94,7 +158,7 @@
2002-06-15 Lyx Development team
- * lyxfunc.[Ch]: Use LyXKeySym instead of KeySym,
+ * lyxfunc.[Ch]: Use LyXKeySym instead of KeySym,
so it's X11 independent.
* kb*.[Ch]: ditto.
@@ -129,27 +193,27 @@
* BufferView_pimpl.h:
* BufferView_pimpl.C: move bogus scrolling logic
to xforms
-
+
2002-06-12 John Levon
* lyxfunc.C:
* BufferView_pimpl.C: view->resize() change
-
+
2002-06-12 John Levon
* BufferView_pimpl.C: topCursorVisible
prototype change
-
+
2002-06-12 John Levon
* Makefile.am:
* lyx_gui.h:
* lyx_gui.C: move to frontends/
-
+
* main.C:
* lyx_main.h:
* lyx_main.C: changes from above
-
+
2002-06-12 John Levon
* intl.C:
@@ -158,7 +222,7 @@
* kbsequence.C:
* lyx_cb.C:
* lyx_main.C: minor tidy
-
+
2002-06-12 John Levon
* BufferView_pimpl.h:
@@ -166,18 +230,18 @@
* BufferView.h:
* BufferView.C: make painter() const,
remove dead code
-
+
* BufferView2.C: use screen() accessor
-
+
* lyx_main.h:
* lyx_main.C: some minor cleanup
-
+
2002-06-12 John Levon
* BufferView_pimpl.h:
* BufferView_pimpl.C: remove enter/leaveView,
use workHeight()
-
+
2002-06-12 John Levon
* BufferView.h:
@@ -188,10 +252,10 @@
rename
* lyxrc.C: remove pointless comment
-
+
2002-06-11 John Levon
- * BufferView.h:
+ * BufferView.h:
* BufferView.C: remove active() and belowMouse()
* BufferView_pimpl.h:
@@ -201,7 +265,7 @@
2002-06-11 John Levon
* lyx_gui.C: add debug message on BadWindow
-
+
2002-06-10 Lars Gullik Bjønnes
* sp_spell.C: fdopen is not part of the C++ standard.
diff --git a/src/CutAndPaste.C b/src/CutAndPaste.C
index b7727b4040..9d72add1a8 100644
--- a/src/CutAndPaste.C
+++ b/src/CutAndPaste.C
@@ -137,12 +137,12 @@ bool CutAndPaste::cutSelection(Paragraph * startpar, Paragraph ** endpar,
if (realcut) {
buf->params().clear();
buf->bibkey = 0;
- buf->layout(textclasslist[current_view->buffer()->params.textclass].defaultLayoutName());
+ buf->layout(textclasslist[current_view->buffer()->params.textclass].defaultLayout());
}
// paste the paragraphs again, if possible
if (doclear)
- startpar->next()->stripLeadingSpaces(textclass);
+ startpar->next()->stripLeadingSpaces();
if (startpar->hasSameLayout(startpar->next()) ||
!startpar->next()->size()) {
startpar->pasteParagraph(current_view->buffer()->params);
@@ -288,7 +288,7 @@ bool CutAndPaste::pasteSelection(Paragraph ** par, Paragraph ** endpar,
SwitchLayoutsBetweenClasses(textclass, tc, tmpbuf,
current_view->buffer()->params);
- Paragraph::depth_type max_depth = (*par)->getMaxDepthAfter(current_view->buffer());
+ Paragraph::depth_type max_depth = (*par)->getMaxDepthAfter();
while(tmpbuf) {
// if we have a negative jump so that the depth would go below
@@ -304,7 +304,7 @@ bool CutAndPaste::pasteSelection(Paragraph ** par, Paragraph ** endpar,
// only set this from the 2nd on as the 2nd depends for maxDepth
// still on *par
if (tmpbuf->previous() != (*par))
- max_depth = tmpbuf->getMaxDepthAfter(current_view->buffer());
+ max_depth = tmpbuf->getMaxDepthAfter();
// set the inset owner of this paragraph
tmpbuf->setInsetOwner((*par)->inInset());
for(pos_type i = 0; i < tmpbuf->size(); ++i) {
@@ -374,7 +374,7 @@ bool CutAndPaste::pasteSelection(Paragraph ** par, Paragraph ** endpar,
lastbuffer->makeSameLayout(lastbuffer->next());
lastbuffer->pasteParagraph(current_view->buffer()->params);
} else
- lastbuffer->next()->stripLeadingSpaces(tc);
+ lastbuffer->next()->stripLeadingSpaces();
}
// restore the simple cut buffer
buf = simple_cut_clone;
@@ -413,17 +413,17 @@ int CutAndPaste::SwitchLayoutsBetweenClasses(textclass_type c1,
ParIterator end = ParIterator();
for (ParIterator it = ParIterator(par); it != end; ++it) {
par = *it;
- string const name = par->layout();
+ string const name = par->layout()->name();
bool hasLayout = tclass2.hasLayout(name);
if (!hasLayout)
- par->layout(tclass2.defaultLayoutName());
+ par->layout(tclass2.defaultLayout());
if (!hasLayout && name != tclass1.defaultLayoutName()) {
++ret;
string const s = _("Layout had to be changed from\n")
+ name + _(" to ")
- + par->layout()
+ + par->layout()->name()
+ _("\nbecause of class conversion from\n")
+ textclasslist[c1].name() + _(" to ")
+ textclasslist[c2].name();
diff --git a/src/LaTeXFeatures.C b/src/LaTeXFeatures.C
index 40365029b5..2010eca80c 100644
--- a/src/LaTeXFeatures.C
+++ b/src/LaTeXFeatures.C
@@ -341,7 +341,7 @@ string const LaTeXFeatures::getTClassPreamble() const
set::const_iterator cit = layout.begin();
set::const_iterator end = layout.end();
for (; cit != end; ++cit) {
- tcpreamble << tclass[*cit].preamble();
+ tcpreamble << tclass[*cit]->preamble();
}
return tcpreamble.str().c_str();
diff --git a/src/buffer.C b/src/buffer.C
index 2c9812fae4..70aaad0b95 100644
--- a/src/buffer.C
+++ b/src/buffer.C
@@ -341,7 +341,7 @@ bool Buffer::readLyXformat2(LyXLex & lex, Paragraph * par)
if (!par) {
par = new Paragraph;
- par->layout(textclasslist[params.textclass].defaultLayoutName());
+ par->layout(textclasslist[params.textclass].defaultLayout());
} else {
// We are inserting into an existing document
users->text->breakParagraph(users);
@@ -621,15 +621,14 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
first_par = par;
else {
par = new Paragraph(par);
- par->layout(textclasslist[params.textclass].defaultLayoutName());
+ par->layout(textclasslist[params.textclass].defaultLayout());
}
pos = 0;
- par->layout(layoutname);
+ par->layout(textclasslist[params.textclass][layoutname]);
// Test whether the layout is obsolete.
- LyXLayout const & layout =
- textclasslist[params.textclass][par->layout()];
- if (!layout.obsoleted_by().empty())
- par->layout(layout.obsoleted_by());
+ LyXLayout_ptr const & layout = par->layout();
+ if (!layout->obsoleted_by().empty())
+ par->layout(textclasslist[params.textclass][layout->obsoleted_by()]);
par->params().depth(depth);
#ifndef NO_COMPABILITY
} else {
@@ -637,10 +636,10 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
// the code then of NO_COMPATIBILITY
par->layout(layoutname);
// Test whether the layout is obsolete.
- LyXLayout const & layout =
+ LyXLayout_ptr const & layout =
textclasslist[params.textclass][par->layout()];
- if (!layout.obsoleted_by().empty())
- par->layout(layout.obsoleted_by());
+ if (!layout->obsoleted_by().empty())
+ par->layout(layout->obsoleted_by());
par->params().depth(depth);
}
#endif
@@ -734,11 +733,10 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
lex.next();
font.setLyXColor(lex.getString());
} else if (token == "\\SpecialChar") {
- LyXLayout const & layout =
- textclasslist[params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
// Insets don't make sense in a free-spacing context! ---Kayvan
- if (layout.free_spacing || par->isFreeSpacing()) {
+ if (layout->free_spacing || par->isFreeSpacing()) {
if (lex.isOK()) {
lex.next();
string next_token = lex.getString();
@@ -1195,7 +1193,7 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
// only add the length when value > 0 or
// with option keep
if ((value.length().len().value() != 0) ||
- value.keep() ||
+ value.keep() ||
(value.kind() != VSpace::LENGTH))
par->params().spaceBottom(value);
#ifndef NO_COMPABILITY
@@ -1256,10 +1254,9 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
// This is a backward compability thingie. (Lgb)
// Remove it later some time...introduced with fileformat
// 2.16. (Lgb)
- LyXLayout const & layout =
- textclasslist[params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
- if (layout.free_spacing || par->isFreeSpacing()) {
+ if (layout->free_spacing || par->isFreeSpacing()) {
par->insertChar(pos, ' ', font);
} else {
Inset * inset = new InsetSpecialChar(InsetSpecialChar::PROTECTED_SEPARATOR);
@@ -1500,8 +1497,8 @@ Buffer::parseSingleLyXformat2Token(LyXLex & lex, Paragraph *& par,
void Buffer::insertStringAsLines(Paragraph *& par, pos_type & pos,
LyXFont const & fn,string const & str) const
{
- LyXLayout const & layout =
- textclasslist[params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
+
LyXFont font = fn;
par->checkInsertChar(font);
@@ -1512,9 +1509,9 @@ void Buffer::insertStringAsLines(Paragraph *& par, pos_type & pos,
for(string::const_iterator cit = str.begin();
cit != str.end(); ++cit) {
if (*cit == '\n') {
- if (autobreakrows && (par->size() || layout.keepempty)) {
+ if (autobreakrows && (par->size() || layout->keepempty)) {
par->breakParagraph(params, pos,
- layout.isEnvironment());
+ layout->isEnvironment());
par = par->next();
pos = 0;
space_inserted = true;
@@ -1523,12 +1520,12 @@ void Buffer::insertStringAsLines(Paragraph *& par, pos_type & pos,
}
// do not insert consecutive spaces if !free_spacing
} else if ((*cit == ' ' || *cit == '\t') &&
- space_inserted && !layout.free_spacing &&
+ space_inserted && !layout->free_spacing &&
!par->isFreeSpacing())
{
continue;
} else if (*cit == '\t') {
- if (!layout.free_spacing && !par->isFreeSpacing()) {
+ if (!layout->free_spacing && !par->isFreeSpacing()) {
// tabs are like spaces here
par->insertChar(pos, ' ', font);
++pos;
@@ -1952,7 +1949,7 @@ string const Buffer::asciiParagraph(Paragraph const * par,
#endif
// First write the layout
- string const & tmp = par->layout();
+ string const & tmp = par->layout()->name();
if (compare_no_case(tmp, "itemize") == 0) {
ltype = 1;
ltype_depth = depth + 1;
@@ -2680,10 +2677,9 @@ void Buffer::latexParagraphs(ostream & ofs, Paragraph * par,
// any special options in the paragraph and also we don't allow
// any environment other then "Standard" to be valid!
if ((in == 0) || !in->forceDefaultParagraphs(in)) {
- LyXLayout const & layout =
- textclasslist[params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
- if (layout.intitle) {
+ if (layout->intitle) {
if (already_title) {
lyxerr <<"Error in latexParagraphs: You"
" should not mix title layouts"
@@ -2697,7 +2693,7 @@ void Buffer::latexParagraphs(ostream & ofs, Paragraph * par,
was_title = false;
}
- if (layout.isEnvironment() ||
+ if (layout->isEnvironment() ||
!par->params().leftIndent().zero())
{
par = par->TeXEnvironment(this, params, ofs, texrow);
@@ -2755,7 +2751,7 @@ int Buffer::sgmlOpenTag(ostream & os, Paragraph::depth_type depth, bool mixcont,
if (!latexname.empty() && latexname != "!-- --") {
if (!mixcont)
os << string(" ",depth);
- os << "<" << latexname << ">";
+ os << "<" << latexname << ">";
}
if (!mixcont)
@@ -2836,8 +2832,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
vector environment_stack(5);
while (par) {
- LyXLayout const & style = tclass[par->layout()];
-
+ LyXLayout_ptr const & style = par->layout();
// treat as a special case for compatibility with old code
if (par->isInset(0)) {
Inset * inset = par->getInset(0);
@@ -2858,7 +2853,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
}
// write opening SGML tags
- switch (style.latextype) {
+ switch (style->latextype) {
case LATEX_PARAGRAPH:
if (depth == par->params().depth()
&& !environment_stack[depth].empty()) {
@@ -2869,7 +2864,7 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
else
ofs << "
";
}
- sgmlOpenTag(ofs, depth, false, style.latexname());
+ sgmlOpenTag(ofs, depth, false, style->latexname());
break;
case LATEX_COMMAND:
@@ -2884,45 +2879,51 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
}
environment_stack[depth].erase();
- sgmlOpenTag(ofs, depth, false, style.latexname());
+ sgmlOpenTag(ofs, depth, false, style->latexname());
break;
case LATEX_ENVIRONMENT:
case LATEX_ITEM_ENVIRONMENT:
+ {
+ string const & latexname = style->latexname();
+
if (depth == par->params().depth()
- && environment_stack[depth] != style.latexname()) {
- sgmlCloseTag(ofs, depth, false, environment_stack[depth]);
+ && environment_stack[depth] != latexname) {
+ sgmlCloseTag(ofs, depth, false,
+ environment_stack[depth]);
environment_stack[depth].erase();
}
if (depth < par->params().depth()) {
depth = par->params().depth();
environment_stack[depth].erase();
}
- if (environment_stack[depth] != style.latexname()) {
+ if (environment_stack[depth] != latexname) {
if (depth == 0) {
sgmlOpenTag(ofs, depth, false, "p");
}
- sgmlOpenTag(ofs, depth, false, style.latexname());
+ sgmlOpenTag(ofs, depth, false, latexname);
if (environment_stack.size() == depth + 1)
environment_stack.push_back("!-- --");
- environment_stack[depth] = style.latexname();
+ environment_stack[depth] = latexname;
}
- if (style.latexparam() == "CDATA")
+ if (style->latexparam() == "CDATA")
ofs << "latextype == LATEX_ENVIRONMENT) break;
- if (style.labeltype == LABEL_MANUAL)
+ if (style->labeltype == LABEL_MANUAL)
item_name = "tag";
else
item_name = "item";
sgmlOpenTag(ofs, depth + 1, false, item_name);
- break;
+ }
+ break;
+
default:
- sgmlOpenTag(ofs, depth, false, style.latexname());
+ sgmlOpenTag(ofs, depth, false, style->latexname());
break;
}
@@ -2932,22 +2933,22 @@ void Buffer::makeLinuxDocFile(string const & fname, bool nice, bool body_only)
ofs << "\n";
// write closing SGML tags
- switch (style.latextype) {
+ switch (style->latextype) {
case LATEX_COMMAND:
break;
case LATEX_ENVIRONMENT:
case LATEX_ITEM_ENVIRONMENT:
- if (style.latexparam() == "CDATA")
+ if (style->latexparam() == "CDATA")
ofs << "]]>";
break;
default:
- sgmlCloseTag(ofs, depth, false, style.latexname());
+ sgmlCloseTag(ofs, depth, false, style->latexname());
break;
}
}
// Close open tags
- for (int i=depth; i >= 0; --i)
+ for (int i = depth; i >= 0; --i)
sgmlCloseTag(ofs, depth, false, environment_stack[i]);
if (!body_only) {
@@ -3023,18 +3024,18 @@ void Buffer::simpleLinuxDocOnePar(ostream & os,
Paragraph * par,
Paragraph::depth_type /*depth*/)
{
- LyXLayout const & style =
- textclasslist[params.textclass][par->layout()];
+ LyXLayout_ptr const & style = par->layout();
+
string::size_type char_line_count = 5; // Heuristic choice ;-)
// gets paragraph main font
LyXFont font_old;
bool desc_on;
- if (style.labeltype == LABEL_MANUAL) {
- font_old = style.labelfont;
+ if (style->labeltype == LABEL_MANUAL) {
+ font_old = style->labelfont;
desc_on = true;
} else {
- font_old = style.font;
+ font_old = style->font;
desc_on = false;
}
@@ -3168,7 +3169,7 @@ void Buffer::simpleLinuxDocOnePar(ostream & os,
continue;
}
- if (style.latexparam() == "CDATA") {
+ if (style->latexparam() == "CDATA") {
// "TeX"-Mode on == > SGML-Mode on.
if (c != '\0')
os << c;
@@ -3176,7 +3177,7 @@ void Buffer::simpleLinuxDocOnePar(ostream & os,
} else {
string sgml_string;
if (par->sgmlConvertChar(c, sgml_string)
- && !style.free_spacing && !par->isFreeSpacing())
+ && !style->free_spacing && !par->isFreeSpacing())
{
// in freespacing mode, spaces are
// non-breaking characters
@@ -3302,7 +3303,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
string c_params;
int desc_on = 0; // description mode
- LyXLayout const & style = tclass[par->layout()];
+ LyXLayout_ptr const & style = par->layout();
// environment tag closing
for (; depth > par->params().depth(); --depth) {
@@ -3318,7 +3319,7 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
}
if (depth == par->params().depth()
- && environment_stack[depth] != style.latexname()
+ && environment_stack[depth] != style->latexname()
&& !environment_stack[depth].empty()) {
if (environment_inner[depth] != "!-- --") {
item_name= "listitem";
@@ -3334,9 +3335,10 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
}
// Write opening SGML tags.
- switch (style.latextype) {
+ switch (style->latextype) {
case LATEX_PARAGRAPH:
- sgmlOpenTag(ofs, depth + command_depth, false, style.latexname());
+ sgmlOpenTag(ofs, depth + command_depth,
+ false, style->latexname());
break;
case LATEX_COMMAND:
@@ -3345,9 +3347,9 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
_("Error : Wrong depth for "
"LatexType Command.\n"));
- command_name = style.latexname();
+ command_name = style->latexname();
- sgmlparam = style.latexparam();
+ sgmlparam = style->latexparam();
c_params = split(sgmlparam, c_depth,'|');
cmd_depth = lyx::atoi(c_depth);
@@ -3405,12 +3407,12 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
environment_stack[depth].erase();
}
- if (environment_stack[depth] != style.latexname()) {
+ if (environment_stack[depth] != style->latexname()) {
if (environment_stack.size() == depth + 1) {
environment_stack.push_back("!-- --");
environment_inner.push_back("!-- --");
}
- environment_stack[depth] = style.latexname();
+ environment_stack[depth] = style->latexname();
environment_inner[depth] = "!-- --";
sgmlOpenTag(ofs, depth + command_depth, false, environment_stack[depth]);
} else {
@@ -3422,45 +3424,50 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
}
}
- if (style.latextype == LATEX_ENVIRONMENT) {
- if (!style.latexparam().empty()) {
- if (style.latexparam() == "CDATA")
+ if (style->latextype == LATEX_ENVIRONMENT) {
+ if (!style->latexparam().empty()) {
+ if (style->latexparam() == "CDATA")
ofs << "latexparam());
}
break;
}
- desc_on = (style.labeltype == LABEL_MANUAL);
+ desc_on = (style->labeltype == LABEL_MANUAL);
- environment_inner[depth] = desc_on?"varlistentry": "listitem";
- sgmlOpenTag(ofs, depth + 1 + command_depth, false, environment_inner[depth]);
+ environment_inner[depth] = desc_on ? "varlistentry" : "listitem";
+ sgmlOpenTag(ofs, depth + 1 + command_depth,
+ false, environment_inner[depth]);
- item_name = desc_on? "term": "para";
- sgmlOpenTag(ofs, depth + 1 + command_depth, false, item_name);
+ item_name = desc_on ? "term" : "para";
+ sgmlOpenTag(ofs, depth + 1 + command_depth,
+ false, item_name);
break;
default:
- sgmlOpenTag(ofs, depth + command_depth, false, style.latexname());
+ sgmlOpenTag(ofs, depth + command_depth,
+ false, style->latexname());
break;
}
- simpleDocBookOnePar(ofs, par, desc_on, depth+1+command_depth);
+ simpleDocBookOnePar(ofs, par, desc_on,
+ depth + 1 + command_depth);
par = par->next();
string end_tag;
// write closing SGML tags
- switch (style.latextype) {
+ switch (style->latextype) {
case LATEX_COMMAND:
- end_tag = c_params.empty()?"title":c_params;
- sgmlCloseTag(ofs, depth + command_depth, false, end_tag);
+ end_tag = c_params.empty() ? "title" : c_params;
+ sgmlCloseTag(ofs, depth + command_depth,
+ false, end_tag);
break;
case LATEX_ENVIRONMENT:
- if (!style.latexparam().empty()) {
- if (style.latexparam() == "CDATA")
+ if (!style->latexparam().empty()) {
+ if (style->latexparam() == "CDATA")
ofs << "]]>";
else
- sgmlCloseTag(ofs, depth + command_depth, false, style.latexparam());
+ sgmlCloseTag(ofs, depth + command_depth, false, style->latexparam());
}
break;
case LATEX_ITEM_ENVIRONMENT:
@@ -3469,10 +3476,10 @@ void Buffer::makeDocBookFile(string const & fname, bool nice, bool only_body)
sgmlCloseTag(ofs, depth + 1 + command_depth, false, end_tag);
break;
case LATEX_PARAGRAPH:
- sgmlCloseTag(ofs, depth + command_depth, false, style.latexname());
+ sgmlCloseTag(ofs, depth + command_depth, false, style->latexname());
break;
default:
- sgmlCloseTag(ofs, depth + command_depth, false, style.latexname());
+ sgmlCloseTag(ofs, depth + command_depth, false, style->latexname());
break;
}
}
@@ -3514,9 +3521,9 @@ void Buffer::simpleDocBookOnePar(ostream & os,
{
bool emph_flag = false;
- LyXLayout const & style = textclasslist[params.textclass][par->layout()];
+ LyXLayout_ptr const & style = par->layout();
- LyXFont font_old = style.labeltype == LABEL_MANUAL ? style.labelfont : style.font;
+ LyXFont font_old = (style->labeltype == LABEL_MANUAL ? style->labelfont : style->font);
int char_line_count = depth;
//if (!style.free_spacing)
@@ -3529,17 +3536,17 @@ void Buffer::simpleDocBookOnePar(ostream & os,
// handle tag
if (font_old.emph() != font.emph()) {
if (font.emph() == LyXFont::ON) {
- if(style.latexparam() == "CDATA")
+ if (style->latexparam() == "CDATA")
os << "]]>";
os << "";
- if(style.latexparam() == "CDATA")
+ if (style->latexparam() == "CDATA")
os << "latexparam() == "CDATA")
os << "]]>";
os << "";
- if(style.latexparam() == "CDATA")
+ if (style->latexparam() == "CDATA")
os << "isInset(i)) {
Inset * inset = par->getInset(i);
// don't print the inset in position 0 if desc_on == 3 (label)
- if ( i || desc_on != 3) {
- if(style.latexparam() == "CDATA")
+ if (i || desc_on != 3) {
+ if (style->latexparam() == "CDATA")
os << "]]>";
inset->docbook(this, os, false);
- if(style.latexparam() == "CDATA")
+ if (style->latexparam() == "CDATA")
os << "sgmlConvertChar(c, sgml_string);
- if (style.pass_thru) {
+ if (style->pass_thru) {
os << c;
- } else if (style.free_spacing || par->isFreeSpacing() || c != ' ') {
+ } else if (style->free_spacing || par->isFreeSpacing() || c != ' ') {
os << sgml_string;
} else if (desc_on ==1) {
++char_line_count;
@@ -3577,10 +3584,10 @@ void Buffer::simpleDocBookOnePar(ostream & os,
}
if (emph_flag) {
- if(style.latexparam() == "CDATA")
+ if (style->latexparam() == "CDATA")
os << "]]>";
os << "";
- if(style.latexparam() == "CDATA")
+ if (style->latexparam() == "CDATA")
os << " not closed...
os << "\n ";
}
- if (style.free_spacing) os << '\n';
+ if (style->free_spacing)
+ os << '\n';
}
@@ -3748,7 +3756,8 @@ Buffer::Lists const Buffer::getLists() const
string const layout("Caption");
while (par) {
- char const labeltype = textclass[par->layout()].labeltype;
+#warning bogus type (Lgb)
+ char const labeltype = par->layout()->labeltype;
if (labeltype >= LABEL_COUNTER_CHAPTER
&& labeltype <= LABEL_COUNTER_CHAPTER + params.tocdepth) {
@@ -3780,7 +3789,7 @@ Buffer::Lists const Buffer::getLists() const
// the inset...
Paragraph * tmp = il->inset.paragraph();
while (tmp) {
- if (tmp->layout() == layout) {
+ if (tmp->layout()->name() == layout) {
SingleList & item = l[type];
string const str =
tostr(item.size()+1) + ". " + tmp->asString(this, false);
@@ -3894,7 +3903,7 @@ bool Buffer::dispatch(string const & command, bool * result)
bool Buffer::dispatch(int action, string const & argument, bool * result)
{
bool dispatched = true;
-
+
switch (action) {
case LFUN_EXPORT: {
bool const tmp = Exporter::Export(this, argument, false);
diff --git a/src/bufferlist.C b/src/bufferlist.C
index fc642d8c1d..1617e1ace3 100644
--- a/src/bufferlist.C
+++ b/src/bufferlist.C
@@ -482,11 +482,11 @@ Buffer * BufferList::newFile(string const & name, string tname, bool isNamed)
MakeDisplayPath(tname));
// no template, start with empty buffer
b->paragraph = new Paragraph;
- b->paragraph->layout(textclasslist[b->params.textclass].defaultLayoutName());
+ b->paragraph->layout(textclasslist[b->params.textclass].defaultLayout());
}
} else { // start with empty buffer
b->paragraph = new Paragraph;
- b->paragraph->layout(textclasslist[b->params.textclass].defaultLayoutName());
+ b->paragraph->layout(textclasslist[b->params.textclass].defaultLayout());
}
if (!lyxrc.new_ask_filename && !isNamed) {
diff --git a/src/frontends/ChangeLog b/src/frontends/ChangeLog
index ac3d6967a0..6309406dd7 100644
--- a/src/frontends/ChangeLog
+++ b/src/frontends/ChangeLog
@@ -1,46 +1,50 @@
+2002-06-24 Lars Gullik Bjønnes
+
+ * LyXView.C: layout as layout
+
2002-06-21 John Levon
* screen.C: add FIXME
-
+
2002-06-21 John Levon
* WorkArea.h: remove redraw()
-
+
2002-06-20 John Levon
* guiapi.h:
* Dialogs.h:
* Dialogs.C: createIndex() doesn't take string
-
+
2002-06-20 John Levon
* WorkArea.h: remove unused resize(..) and change name
-
+
2002-06-20 John Levon
* LyXKeySym.h:
* LyXKeySym.C: remove un-needed file
-
+
* WorkArea.h:
* WorkArea.C: remove un-needed file. Add back
comments. Remove focus management, greyOut()
-
+
2002-06-19 John Levon
* WorkArea.h: remove focus/unfocus events
-
+
2002-06-19 John Levon
* WorkArea.h: remove unused methods
-
+
2002-06-19 John Levon
* Toolbar.C: add missing header
-
+
2002-06-19 John Levon
* WorkArea.h: remove unused method width()
-
+
2002-06-16 Lars Gullik Bjønnes
* add a nother layer of inderection for calling gui specific
diff --git a/src/frontends/LyXView.C b/src/frontends/LyXView.C
index 7daffc511a..d8bc822943 100644
--- a/src/frontends/LyXView.C
+++ b/src/frontends/LyXView.C
@@ -68,7 +68,7 @@ void LyXView::init()
{
updateLayoutChoice();
updateMenubar();
-
+
// Start autosave timer
if (lyxrc.autosave) {
autosave_timeout_->setTimeout(lyxrc.autosave * 1000);
@@ -194,7 +194,7 @@ void LyXView::updateLayoutChoice()
}
string const & layout =
- bufferview_->getLyXText()->cursor.par()->layout();
+ bufferview_->getLyXText()->cursor.par()->layout()->name();
if (layout != current_layout) {
toolbar_->setLayout(layout);
diff --git a/src/frontends/LyXView.h b/src/frontends/LyXView.h
index fcf4187011..f9916efbab 100644
--- a/src/frontends/LyXView.h
+++ b/src/frontends/LyXView.h
@@ -55,7 +55,7 @@ public:
virtual ~LyXView();
- /**
+ /**
* This is called after the concrete view has been created.
* We have to have the toolbar and the other stuff created
* before we can populate it with this call.
diff --git a/src/frontends/WorkArea.h b/src/frontends/WorkArea.h
index 28f3d35ad4..7ecf1aad60 100644
--- a/src/frontends/WorkArea.h
+++ b/src/frontends/WorkArea.h
@@ -23,7 +23,7 @@
#include
class Painter;
-
+
/**
* The work area class represents the widget that provides the
* view onto a document. It is owned by the BufferView, and
@@ -37,15 +37,15 @@ public:
WorkArea() {}
virtual ~WorkArea() {}
-
+
/// return the painter object for this work area
virtual Painter & getPainter() = 0;
-
+
/// return the width of the work area in pixels
virtual int workWidth() const = 0;
/// return the height of the work area in pixels
virtual int workHeight() const = 0;
-
+
/**
* Update the scrollbar.
* @param height the total document height in pixels
@@ -53,7 +53,7 @@ public:
* @param line_height the line-scroll amount, in pixels
*/
virtual void setScrollbarParams(int height, int pos, int line_height) = 0;
-
+
// FIXME: this is an odd place to have it, but xforms needs it here ...
/// a selection exists
virtual void haveSelection(bool) const = 0;
@@ -61,7 +61,7 @@ public:
virtual string const getClipboard() const = 0;
/// fill the clipboard
virtual void putClipboard(string const &) const = 0;
-
+
/// work area dimensions have changed
boost::signal0 workAreaResize;
/// the scrollbar has changed
@@ -83,5 +83,5 @@ public:
/// emitted when another X client has stolen our selection
boost::signal0 selectionLost;
};
-
+
#endif // WORKAREA_H
diff --git a/src/frontends/controllers/ChangeLog b/src/frontends/controllers/ChangeLog
index 1d3302853a..57e04375b7 100644
--- a/src/frontends/controllers/ChangeLog
+++ b/src/frontends/controllers/ChangeLog
@@ -1,3 +1,7 @@
+2002-06-24 Lars Gullik Bjønnes
+
+ * ControlParagraph.C: layout as layout
+
2002-06-21 Angus Leeming
* tex_helpers.C: Use not . Reorder header files.
@@ -7,7 +11,7 @@
* ControlBibtex.C:
* ControlBibitem.C: use repaint()
-
+
2002-06-21 John Levon
* ControlTexinfo.C: do the same for Texinfo
@@ -15,14 +19,14 @@
* tex_helpers.C: don't try to read a file that isn't there
2002-06-21 Herbert Voss
-
- * ControlBibtex.C: do an automatic update, when no bst-list
- exists
-
+
+ * ControlBibtex.C: do an automatic update, when no bst-list
+ exists
+
2002-06-20 John Levon
* GUI.h: createIndex() changed
-
+
2002-06-18 Herbert Voss
* tex_helpers.[Ch]: move functions from ControlTexinfo into this
@@ -31,7 +35,7 @@
2002-06-18 John Levon
* ControlGraphics.C: just make the mask *.*
-
+
2002-06-16 Lars Gullik Bjønnes
* changes to simplify function setup, removal of a lot of includes.
diff --git a/src/frontends/controllers/ControlParagraph.C b/src/frontends/controllers/ControlParagraph.C
index 0438e044b0..1f6ed41ed9 100644
--- a/src/frontends/controllers/ControlParagraph.C
+++ b/src/frontends/controllers/ControlParagraph.C
@@ -22,7 +22,6 @@
#include "gettext.h"
#include "buffer.h"
#include "lyxtext.h"
-#include "lyxtextclasslist.h"
#include "support/LAssert.h"
using Liason::setMinibuffer;
@@ -103,13 +102,12 @@ void ControlParagraph::setParams()
pp_->labelWidthString(par_->getLabelWidthString());
/// alignment
- LyXTextClass const & tclass =
- textclasslist[lv_.view()->buffer()->params.textclass];
+ LyXLayout_ptr const & layout = par_->layout();
if (pp_->align() == LYX_ALIGN_LAYOUT)
- pp_->align(tclass[par_->layout()].align);
+ pp_->align(layout->align);
/// is alignment possible
- alignpos_ = tclass[par_->layout()].alignpossible;
+ alignpos_ = layout->alignpossible;
/// is paragraph in inset
ininset_ = par_->inInset();
diff --git a/src/frontends/screen.C b/src/frontends/screen.C
index ba7af87588..b9720d3be5 100644
--- a/src/frontends/screen.C
+++ b/src/frontends/screen.C
@@ -45,25 +45,25 @@ void LyXScreen::showCursor(LyXText const * text, BufferView const * bv)
{
if (cursor_visible_)
return;
-
+
workarea().getPainter().start();
-
+
Cursor_Shape shape = BAR_SHAPE;
BufferParams const & bp(bv->buffer()->params);
LyXFont const & realfont(text->real_current_font);
if (realfont.language() != bp.language
- || realfont.isVisibleRightToLeft()
+ || realfont.isVisibleRightToLeft()
!= bp.language->RightToLeft()) {
shape = (realfont.isVisibleRightToLeft())
? REVERSED_L_SHAPE : L_SHAPE;
}
-
+
showManualCursor(text, text->cursor.x(), text->cursor.y(),
font_metrics::maxAscent(realfont),
font_metrics::maxDescent(realfont),
shape);
-
+
workarea().getPainter().end();
}
@@ -73,7 +73,7 @@ bool LyXScreen::fitManualCursor(BufferView * bv, LyXText * text,
{
int const vheight = workarea().workHeight();
int newtop = text->first_y;
-
+
if (y + desc - text->first_y >= vheight)
newtop = y - 3 * vheight / 4; // the scroll region must be so big!!
else if (y - asc < text->first_y
@@ -82,7 +82,7 @@ bool LyXScreen::fitManualCursor(BufferView * bv, LyXText * text,
}
newtop = max(newtop, 0); // can newtop ever be < 0? (Lgb)
-
+
if (newtop != text->first_y) {
draw(text, bv, newtop);
text->first_y = newtop;
@@ -111,7 +111,7 @@ unsigned int LyXScreen::topCursorVisible(LyXCursor const & cursor, int top_y)
// Is this a hack? Yes, probably... (Lgb)
if (!row)
return max(newtop, 0);
-
+
if (cursor.y() - row->baseline() + row->height()
- top_y >= vheight) {
if (row->height() < vheight
@@ -124,7 +124,7 @@ unsigned int LyXScreen::topCursorVisible(LyXCursor const & cursor, int top_y)
newtop = cursor.y()
- vheight / 2; /* the scroll region must be so big!! */
}
-
+
} else if (static_cast((cursor.y()) - row->baseline()) <
top_y && top_y > 0) {
if (row->height() < vheight
@@ -153,7 +153,7 @@ bool LyXScreen::fitCursor(LyXText * text, BufferView * bv)
return result;
}
-
+
void LyXScreen::update(LyXText * text, BufferView * bv,
int yo, int xo)
{
@@ -161,7 +161,7 @@ void LyXScreen::update(LyXText * text, BufferView * bv,
int const vheight = workarea().workHeight();
workarea().getPainter().start();
-
+
switch (text->status()) {
case LyXText::NEED_MORE_REFRESH:
{
@@ -197,7 +197,7 @@ void LyXScreen::update(LyXText * text, BufferView * bv,
// Nothing needs done
break;
}
-
+
workarea().getPainter().end();
}
@@ -223,32 +223,32 @@ void LyXScreen::toggleSelection(LyXText * text, BufferView * bv,
if (kill_selection)
text->selection.set(false);
-
+
workarea().getPainter().start();
-
+
drawFromTo(text, bv, top - text->first_y, bottom - text->first_y,
yo, xo);
expose(0, top - text->first_y,
workarea().workWidth(),
- bottom - text->first_y - (top - text->first_y));
-
+ bottom - text->first_y - (top - text->first_y));
+
workarea().getPainter().end();
}
-
-
+
+
void LyXScreen::toggleToggle(LyXText * text, BufferView * bv,
int yo, int xo)
{
if (text->toggle_cursor.par() == text->toggle_end_cursor.par()
&& text->toggle_cursor.pos() == text->toggle_end_cursor.pos())
return;
-
+
int const top_tmp = text->toggle_cursor.y()
- text->toggle_cursor.row()->baseline();
int const bottom_tmp = text->toggle_end_cursor.y()
- text->toggle_end_cursor.row()->baseline()
+ text->toggle_end_cursor.row()->height();
-
+
int const offset = yo < 0 ? yo : 0;
int const bottom = min(max(bottom_tmp, text->first_y),
static_cast(text->first_y + workarea().workHeight())) - offset;
@@ -262,7 +262,7 @@ void LyXScreen::toggleToggle(LyXText * text, BufferView * bv,
xo);
expose(0, top - text->first_y, workarea().workWidth(),
bottom - text->first_y - (top - text->first_y));
-
+
workarea().getPainter().end();
}
@@ -280,9 +280,9 @@ void LyXScreen::redraw(LyXText * text, BufferView * bv)
drawFromTo(text, bv, 0, workarea().workHeight(), 0, 0, text == bv->text);
expose(0, 0, workarea().workWidth(), workarea().workHeight());
-
+
workarea().getPainter().end();
-
+
if (cursor_visible_) {
cursor_visible_ = false;
bv->showCursor();
@@ -341,20 +341,20 @@ void LyXScreen::drawFromTo(LyXText * text, BufferView * bv,
bool internal)
{
lyxerr[Debug::GUI] << "screen: drawFromTo " << y1 << "-" << y2 << endl;
-
+
int y_text = text->first_y + y1;
-
+
// get the first needed row
Row * row = text->getRowNearY(y_text);
// y_text is now the real beginning of the row
-
+
int y = y_text - text->first_y;
// y1 is now the real beginning of row on the screen
-
+
while (row != 0 && y < y2) {
LyXText::text_status st = text->status();
text->getVisibleRow(bv, y + yo,
- xo, row, y + text->first_y);
+ xo, row, y + text->first_y);
internal = internal && (st != LyXText::CHANGED_IN_DRAW);
while (internal && text->status() == LyXText::CHANGED_IN_DRAW) {
text->fullRebreak(bv);
@@ -362,7 +362,7 @@ void LyXScreen::drawFromTo(LyXText * text, BufferView * bv,
text->setCursor(bv, text->cursor.par(), text->cursor.pos());
text->status(bv, st);
text->getVisibleRow(bv, y + yo,
- xo, row, y + text->first_y);
+ xo, row, y + text->first_y);
}
y += row->height();
row = row->next();
diff --git a/src/frontends/screen.h b/src/frontends/screen.h
index bfa7e82e82..10e9e40a42 100644
--- a/src/frontends/screen.h
+++ b/src/frontends/screen.h
@@ -14,7 +14,7 @@
#ifdef __GNUG__
#pragma interface
#endif
-
+
class LyXText;
class LyXCursor;
class WorkArea;
@@ -24,7 +24,7 @@ struct Row;
/**
* LyXScreen - document rendering management
*
- * This class is used to manage the on-screen rendering inside the
+ * This class is used to manage the on-screen rendering inside the
* work area; it is responsible for deciding which LyXText rows
* need re-drawing.
*
@@ -48,15 +48,15 @@ public:
LyXScreen();
virtual ~LyXScreen();
-
+
/**
* draw the screen from a given position
* @param y the text position to draw from
*
- * Uses as much of the already printed pixmap as possible
+ * Uses as much of the already printed pixmap as possible
*/
virtual void draw(LyXText *, BufferView *, unsigned int y) = 0;
-
+
/**
* showManualCursor - display the cursor on the work area
* @param text the lyx text containing the cursor
@@ -69,10 +69,10 @@ public:
virtual void showManualCursor(LyXText const *, int x, int y,
int asc, int desc,
Cursor_Shape shape) = 0;
-
+
/// unpaint the cursor painted by showManualCursor()
virtual void hideCursor() = 0;
-
+
/**
* fit the cursor onto the visible work area, scrolling if necessary
* @param bv the buffer view
@@ -86,13 +86,13 @@ public:
*/
bool fitManualCursor(BufferView * bv, LyXText * text,
int x, int y, int a, int d);
-
+
/// redraw the screen, without using existing pixmap
virtual void redraw(LyXText *, BufferView *);
-
+
/// draw the cursor if it's not already shown
virtual void showCursor(LyXText const *, BufferView const *);
-
+
/**
* topCursorVisible - get a new "top" to make the cursor visible
* @param c the cursor
@@ -103,7 +103,7 @@ public:
* within the LyXText is "nicely" visible.
*/
virtual unsigned int topCursorVisible(LyXCursor const & c, int top_y);
-
+
/**
* fitCursor - fit the cursor onto the work area
* @param text the text containing the cursor
@@ -113,7 +113,7 @@ public:
* Scrolls the screen so that the cursor is visible,
*/
virtual bool fitCursor(LyXText *, BufferView *);
-
+
/// show the cursor if it's not, and vice versa
virtual void cursorToggle(BufferView *) const;
@@ -123,23 +123,23 @@ public:
* @param bv the bufferview
* @param xo the x offset into the text
* @param yo the x offset into the text
- *
+ *
* Updates part of the screen. If text->status is
* LyXText::NEED_MORE_REFRESH, we update from the
* point of change and to the end of the screen.
* If text->status is LyXText::NEED_VERY_LITTLE_REFRESH,
- * we only update the current row.
+ * we only update the current row.
*/
virtual void update(LyXText * text, BufferView * bv, int yo = 0, int xo = 0);
-
+
/// FIXME
virtual void toggleSelection(LyXText *, BufferView *, bool = true,
int y_offset = 0, int x_offset = 0);
-
+
/// FIXME - at least change the name !!
virtual void toggleToggle(LyXText *, BufferView *,
int y_offset = 0, int x_offset = 0);
-
+
/// FIXME
virtual bool forceClear() const { return force_clear_; }
@@ -149,21 +149,21 @@ protected:
/// get the work area
virtual WorkArea & workarea() const = 0;
-
+
/// y1 and y2 are coordinates of the screen
virtual void drawFromTo(LyXText *, BufferView *, int y1, int y2,
- int y_offset = 0, int x_offset = 0, bool internal = false);
+ int y_offset = 0, int x_offset = 0, bool internal = false);
/// y is a coordinate of the text
virtual void drawOneRow(LyXText *, BufferView *, Row * row,
int y_text, int y_offset = 0, int x_offset = 0);
-
+
/// grey out (no buffer)
void greyOut();
-
+
/// FIXME ?
bool force_clear_;
-
+
/// is the blinking cursor currently drawn
bool cursor_visible_;
};
diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog
index 51bb4af759..2cdcf58bc4 100644
--- a/src/frontends/xforms/ChangeLog
+++ b/src/frontends/xforms/ChangeLog
@@ -1,3 +1,7 @@
+2002-06-24 Lars Gullik Bjønnes
+
+ * Toolbar_pimpl.C: layout as layout
+
2002-06-21 Angus Leeming
* xscreen.C: add a using std::endl directive.
@@ -6,84 +10,84 @@
* FormPreferences.h:
* FormPreferences.C:
- * forms/form_preferences.fd: remove show_banner, display_shortcuts
-
+ * forms/form_preferences.fd: remove show_banner, display_shortcuts
+
2002-06-21 John Levon
* XWorkArea.h:
* XWorkArea.C: remove splash, should be handled in
LyXScreen::greyOut()
-
+
2002-06-21 John Levon
* forms/form_texinfo.fd: "Update List" not "Rescan"
-
+
2002-06-20 John Levon
* guiapi.C: createIndex() changed
-
+
2002-06-20 John Levon
* FormBibtex.C: use new lyx::eliminate_duplicates
2002-06-20 Herbert Voss
-
- * FormBibtex.C:
- * forms/form_bibtex.fd: give better support for choosing the
- bibstyle (new browserfield with the available bibstyles).
- move some code of ControlTexinfo into a helper
- file support/tex-helpers to use some of the functions
-
+
+ * FormBibtex.C:
+ * forms/form_bibtex.fd: give better support for choosing the
+ bibstyle (new browserfield with the available bibstyles).
+ move some code of ControlTexinfo into a helper
+ file support/tex-helpers to use some of the functions
+
2002-06-20 John Levon
* XWorkArea.h:
* XWorkArea.C: remove unused code, name change
-
+
2002-06-20 John Levon
* XLyXKeySym.h:
* XLyXKeySym.C: whitespace
-
+
2002-06-20 John Levon
* XWorkArea.h: remove focus stuff, greyOut()
-
+
2002-06-19 John Levon
* XWorkArea.C: remove focus/unfocus events
-
+
2002-06-19 John Levon
* XWorkArea.h: remove unused methods
-
+
2002-06-15 Martin Vermeer
- * FormMathsDelim.C: Redesign of Delimiters dialogue in mathed.
+ * FormMathsDelim.C: Redesign of Delimiters dialogue in mathed.
Cleaner, smaller.
2002-06-19 John Levon
* XWorkArea.h: remove unused width()
-
+
2002-06-18 John Levon
* guiapi.C: fix compile with libAiksaurus
-
+
2002-06-17 Herbert Voss
-
- * forms/.cvsignore: ignore the *.lo files
+
+ * forms/.cvsignore: ignore the *.lo files
2002-06-18 John Levon
-
+
* FormSearch.h:
- * FormSearch.C: focus and select search string on open (bug #77)
+ * FormSearch.C: focus and select search string on open (bug #77)
2002-06-16 Lars Gullik Bjønnes
-
+
* changes to let the function setup happen in frontends
* guiapi.C: new file
-
+
2002-06-16
* xscreen.C (draw): After drawing, we wait for X with XSync..
diff --git a/src/frontends/xforms/FormAboutlyx.C b/src/frontends/xforms/FormAboutlyx.C
index 9b63cdac38..b178c61105 100644
--- a/src/frontends/xforms/FormAboutlyx.C
+++ b/src/frontends/xforms/FormAboutlyx.C
@@ -13,9 +13,9 @@
#pragma implementation
#endif
+#include "FormAboutlyx.h"
#include "xformsBC.h"
#include "ControlAboutlyx.h"
-#include "FormAboutlyx.h"
#include "forms/form_aboutlyx.h"
#include "xforms_helpers.h"
#include FORMS_H_LOCATION
diff --git a/src/frontends/xforms/FormAboutlyx.h b/src/frontends/xforms/FormAboutlyx.h
index fa08318993..bc5d5e3b6a 100644
--- a/src/frontends/xforms/FormAboutlyx.h
+++ b/src/frontends/xforms/FormAboutlyx.h
@@ -17,8 +17,6 @@
#include "FormBase.h"
-#include
-
#include
class ControlAboutlyx;
diff --git a/src/frontends/xforms/FormBaseDeprecated.h b/src/frontends/xforms/FormBaseDeprecated.h
index 188f980863..905a315332 100644
--- a/src/frontends/xforms/FormBaseDeprecated.h
+++ b/src/frontends/xforms/FormBaseDeprecated.h
@@ -27,7 +27,7 @@
#include "forms_fwd.h"
-#include
+//#include
class Buffer;
class Dialogs;
diff --git a/src/frontends/xforms/FormDocument.C b/src/frontends/xforms/FormDocument.C
index ee2f78f981..a4a9df8a3d 100644
--- a/src/frontends/xforms/FormDocument.C
+++ b/src/frontends/xforms/FormDocument.C
@@ -62,12 +62,6 @@ FormDocument::FormDocument(LyXView * lv, Dialogs * d)
ActCell(0), Confirmed(0),
current_bullet_panel(0), current_bullet_depth(0), fbullet(0)
{
-#if 0
- // let the dialog be shown
- // This is a permanent connection so we won't bother
- // storing a copy because we won't be disconnecting.
- d->showDocument = boost::bind(&FormDocument::show, this);
-#endif
}
@@ -143,19 +137,12 @@ void FormDocument::build()
// Create the contents of the unit choices
// Don't include the "%" terms...
vector units_vec = getLatexUnits();
-#if 0
- for (vector::iterator it = units_vec.begin();
- it != units_vec.end(); ++it) {
- if (contains(*it, "%"))
- it = units_vec.erase(it, it+1) - 1;
- }
-#else
vector::iterator ret =
std::remove_if(units_vec.begin(),
units_vec.end(),
bind2nd(contains_functor(), "%"));
units_vec.erase(ret, units_vec.end());
-#endif
+
string units = getStringFromVector(units_vec, "|");
fl_addto_choice(paper_->choice_custom_width_units, units.c_str());
diff --git a/src/frontends/xforms/FormMathsPanel.C b/src/frontends/xforms/FormMathsPanel.C
index 251ace8f1d..6510cbd661 100644
--- a/src/frontends/xforms/FormMathsPanel.C
+++ b/src/frontends/xforms/FormMathsPanel.C
@@ -152,9 +152,6 @@ FormMathsPanel::FormMathsPanel(LyXView * lv, Dialogs * d)
ams_ops_.reset(new FormMathsBitmap(lv, d, *this, _("AMS Operators"), latex));
//showUnderMouse(false);
-#if 0
- d->showMathPanel = boost::bind(&FormMathsPanel::show, this);
-#endif
}
diff --git a/src/frontends/xforms/FormParagraph.C b/src/frontends/xforms/FormParagraph.C
index ab4a5dab45..42540b213b 100644
--- a/src/frontends/xforms/FormParagraph.C
+++ b/src/frontends/xforms/FormParagraph.C
@@ -37,7 +37,7 @@ using std::bind2nd;
using std::remove_if;
typedef FormCB > base_class;
-
+
FormParagraph::FormParagraph(ControlParagraph & c)
: base_class(c, _("Paragraph Layout"), false)
{}
@@ -74,19 +74,11 @@ void FormParagraph::build()
// Create the contents of the unit choices
// Don't include the "%" terms...
vector units_vec = getLatexUnits();
-#if 0
- for (vector::iterator it = units_vec.begin();
- it != units_vec.end(); ++it) {
- if (contains(*it, "%"))
- it = units_vec.erase(it, it+1) - 1;
- }
-#else
- // Something similar to this is a better way to erase
+
vector::iterator del =
remove_if(units_vec.begin(), units_vec.end(),
bind2nd(contains_functor(), "%"));
units_vec.erase(del, units_vec.end());
-#endif
string units = getStringFromVector(units_vec, "|");
@@ -195,15 +187,15 @@ void FormParagraph::apply()
// the input field, reset the kind to "None".
validateVSpaceWidgets(dialog_->choice_space_above,
dialog_->input_space_above);
-
+
VSpace const space_top =
setVSpaceFromWidgets(dialog_->choice_space_above,
dialog_->input_space_above,
dialog_->choice_value_space_above,
dialog_->check_space_above);
-
+
controller().params().spaceTop(space_top);
-
+
validateVSpaceWidgets(dialog_->choice_space_below,
dialog_->input_space_below);
@@ -212,7 +204,7 @@ void FormParagraph::apply()
dialog_->input_space_below,
dialog_->choice_value_space_below,
dialog_->check_space_below);
-
+
controller().params().spaceBottom(space_bottom);
/* lines and pagebreaks */
@@ -224,10 +216,10 @@ void FormParagraph::apply()
bool const pagebreak_top = fl_get_button(dialog_->check_pagebreaks_top);
controller().params().pagebreakTop(pagebreak_top);
-
+
bool const pagebreak_bottom = fl_get_button(dialog_->check_pagebreaks_bottom);
controller().params().pagebreakBottom(pagebreak_bottom);
-
+
/* alignment */
LyXAlignment align;
@@ -240,7 +232,7 @@ void FormParagraph::apply()
else
align = LYX_ALIGN_BLOCK;
controller().params().align(align);
-
+
/* label width */
string const labelwidthstring =
getStringFromInput(dialog_->input_labelwidth);
@@ -274,7 +266,7 @@ void FormParagraph::apply()
Spacing const spacing(linespacing, other);
controller().params().spacing(spacing);
-
+
}
namespace {
@@ -352,7 +344,7 @@ void FormParagraph::update()
fl_set_button(dialog_->radio_align_left, 0);
fl_set_button(dialog_->radio_align_center, 0);
fl_set_button(dialog_->radio_align_block, 0);
-
+
LyXAlignment align = controller().params().align();
switch (align) {
@@ -531,5 +523,3 @@ ButtonPolicy::SMInput FormParagraph::input(FL_OBJECT * ob, long)
return ButtonPolicy::SMI_VALID;
}
-
-
diff --git a/src/frontends/xforms/FormPreferences.C b/src/frontends/xforms/FormPreferences.C
index 4acd391e7e..40ae2a5ecf 100644
--- a/src/frontends/xforms/FormPreferences.C
+++ b/src/frontends/xforms/FormPreferences.C
@@ -80,12 +80,6 @@ FormPreferences::FormPreferences(LyXView & lv, Dialogs & d)
// let the dialog be shown
// This is a permanent connection so we won't bother
// storing a copy because we won't be disconnecting.
-#if 0
- d->showPreferences = boost::bind(&FormPreferences::show, this);
-#endif
-#if 0
- d->showSpellcheckerPreferences = boost::bind(&FormPreferences::showSpellPref, this);
-#endif
}
diff --git a/src/frontends/xforms/FormTabular.C b/src/frontends/xforms/FormTabular.C
index 60150d2cc3..cbe494842c 100644
--- a/src/frontends/xforms/FormTabular.C
+++ b/src/frontends/xforms/FormTabular.C
@@ -43,13 +43,6 @@ FormTabular::FormTabular(LyXView & lv, Dialogs & d)
: FormInset(&lv, &d, _("Tabular Layout")),
inset_(0), actCell_(-1), closing_(false)
{
-#if 0
- // let the dialog be shown
- // This is a permanent connection so we won't bother
- // storing a copy because we won't be disconnecting.
- d->showTabular = boost::bind(&FormTabular::showInset, this, _1);
- d->updateTabular = boost::bind(&FormTabular::updateInset, this, _1);
-#endif
}
@@ -154,18 +147,10 @@ void FormTabular::build()
// Create the contents of the unit choices
// Don't include the "%" terms...
vector units_vec = getLatexUnits();
-#if 0
- for (vector::iterator it = units_vec.begin();
- it != units_vec.end(); ++it) {
- if (contains(*it, "%"))
- it = units_vec.erase(it, it + 1) - 1;
- }
-#else
vector::iterator ret =
remove_if(units_vec.begin(), units_vec.end(),
bind2nd(contains_functor(), "%"));
units_vec.erase(ret, units_vec.end());
-#endif
string units = getStringFromVector(units_vec, "|");
diff --git a/src/frontends/xforms/Toolbar_pimpl.C b/src/frontends/xforms/Toolbar_pimpl.C
index 27a4d78894..4c29bc95bb 100644
--- a/src/frontends/xforms/Toolbar_pimpl.C
+++ b/src/frontends/xforms/Toolbar_pimpl.C
@@ -180,8 +180,8 @@ void Toolbar::Pimpl::layoutSelected()
LyXTextClass::const_iterator end = tc.end();
for (LyXTextClass::const_iterator cit = tc.begin();
cit != end; ++cit) {
- if (_(cit->name()) == layoutguiname) {
- owner->getLyXFunc()->dispatch(LFUN_LAYOUT, cit->name());
+ if (_((*cit)->name()) == layoutguiname) {
+ owner->getLyXFunc()->dispatch(LFUN_LAYOUT, (*cit)->name());
return;
}
}
@@ -195,7 +195,7 @@ void Toolbar::Pimpl::setLayout(string const & layout)
if (combox) {
LyXTextClass const & tc =
textclasslist[owner->buffer()->params.textclass];
- combox->select(_(tc[layout].name()));
+ combox->select(_(tc[layout]->name()));
}
}
@@ -214,8 +214,8 @@ void Toolbar::Pimpl::updateLayoutList(bool force)
for (LyXTextClass::const_iterator cit = tc.begin();
cit != end; ++cit) {
// ignore obsolete entries
- if (cit->obsoleted_by().empty())
- combox->addline(_(cit->name()));
+ if ((*cit)->obsoleted_by().empty())
+ combox->addline(_((*cit)->name()));
}
}
// we need to do this.
diff --git a/src/frontends/xforms/XWorkArea.C b/src/frontends/xforms/XWorkArea.C
index c3cfdf9439..3468047595 100644
--- a/src/frontends/xforms/XWorkArea.C
+++ b/src/frontends/xforms/XWorkArea.C
@@ -33,7 +33,7 @@
// xforms doesn't define this (but it should be in ).
extern "C"
FL_APPEVENT_CB fl_set_preemptive_callback(Window, FL_APPEVENT_CB, void *);
-
+
using std::endl;
using std::abs;
using std::hex;
@@ -59,7 +59,7 @@ void setXtermCursor(Window win)
XDefineCursor(fl_get_display(), win, cursor);
XFlush(fl_get_display());
}
-
+
// FIXME !
mouse_button::state x_button_state(unsigned int button)
@@ -178,9 +178,9 @@ XWorkArea::XWorkArea(int x, int y, int w, int h)
fl_set_scrollbar_bounds(scrollbar, 0.0, 0.0);
fl_set_scrollbar_value(scrollbar, 0.0);
fl_set_scrollbar_size(scrollbar, scrollbar->h);
-
+
int const bw = int(abs(fl_get_border_width()));
-
+
// Create the workarea pixmap
createPixmap(w - 15 - 2 * bw, h - 2 * bw);
@@ -200,7 +200,7 @@ XWorkArea::XWorkArea(int x, int y, int w, int h)
C_XWorkArea_work_area_handler);
obj->wantkey = FL_KEY_ALL;
obj->u_vdata = this;
-
+
fl_set_object_boxtype(obj,FL_DOWN_BOX);
fl_set_object_resize(obj, FL_RESIZE_ALL);
fl_set_object_gravity(obj, NorthWestGravity, SouthEastGravity);
@@ -278,7 +278,7 @@ void XWorkArea::setScrollbarParams(int height, int pos, int line_height)
lyxerr[Debug::GUI] << "scroll: height now " << height << endl;
lyxerr[Debug::GUI] << "scroll: work_height " << work_height << endl;
-
+
/* If the text is smaller than the working area, the scrollbar
* maximum must be the working area height. No scrolling will
* be possible */
@@ -335,6 +335,7 @@ int XWorkArea::work_area_handler(FL_OBJECT * ob, int event,
lyxerr[Debug::WORKAREA] << "Workarea event: DRAW" << endl;
area->createPixmap(area->workWidth(), area->workHeight());
area->workAreaResize();
+ area->redraw();
break;
case FL_PUSH:
if (!ev || ev->xbutton.button == 0) break;
@@ -389,7 +390,7 @@ int XWorkArea::work_area_handler(FL_OBJECT * ob, int event,
// lyxerr << "We have " << num_keys << " keys in the returned buffer" << endl;
// lyxerr << "Our dummy string is " << dummy << endl;
#endif
-
+
if (lyxerr.debugging(Debug::KEY)) {
char const * tmp = XKeysymToString(key);
char const * tmp2 = XKeysymToString(keysym);
@@ -477,7 +478,7 @@ int XWorkArea::work_area_handler(FL_OBJECT * ob, int event,
XLyXKeySym * xlk = new XLyXKeySym;
xlk->initFromKeySym(ret_key);
-
+
area->workAreaKeyPress(LyXKeySymPtr(xlk),
x_key_state(ret_state));
}
diff --git a/src/frontends/xforms/XWorkArea.h b/src/frontends/xforms/XWorkArea.h
index 1793a89dd3..0b9ba2e6f6 100644
--- a/src/frontends/xforms/XWorkArea.h
+++ b/src/frontends/xforms/XWorkArea.h
@@ -40,7 +40,7 @@ public:
}
///
Window getWin() const { return work_area->form->window; }
- ///
+ ///
virtual void setScrollbarParams(int height, int pos, int line_height);
///
Pixmap getPixmap() const { return workareapixmap; }
@@ -48,12 +48,12 @@ public:
static int work_area_handler(FL_OBJECT *, int event,
FL_Coord, FL_Coord,
int /*key*/, void * xev);
-
+
/// return x position of window
int xpos() const { return work_area->x; }
/// return y position of window
int ypos() const { return work_area->y; }
-
+
/// xforms callback from scrollbar
void scroll_cb();
/// a selection exists
@@ -84,5 +84,5 @@ private:
/// the current document's height (for scrollbar)
int doc_height_;
};
-
+
#endif // XWORKAREA_H
diff --git a/src/frontends/xforms/guiapi.C b/src/frontends/xforms/guiapi.C
index 13ccdb1d33..8e4515f164 100644
--- a/src/frontends/xforms/guiapi.C
+++ b/src/frontends/xforms/guiapi.C
@@ -106,7 +106,7 @@
#include "FormThesaurus.h"
#include "forms/form_thesaurus.h"
#endif
-
+
#include "FormToc.h"
#include "forms/form_toc.h"
diff --git a/src/frontends/xforms/xscreen.C b/src/frontends/xforms/xscreen.C
index 36513b90ed..23544eb6a6 100644
--- a/src/frontends/xforms/xscreen.C
+++ b/src/frontends/xforms/xscreen.C
@@ -40,14 +40,14 @@ namespace {
GC createGC()
{
XGCValues val;
- val.foreground = BlackPixel(fl_get_display(),
+ val.foreground = BlackPixel(fl_get_display(),
DefaultScreen(fl_get_display()));
-
+
val.function = GXcopy;
val.graphics_exposures = false;
val.line_style = LineSolid;
val.line_width = 0;
- return XCreateGC(fl_get_display(), RootWindow(fl_get_display(), 0),
+ return XCreateGC(fl_get_display(), RootWindow(fl_get_display(), 0),
GCForeground | GCFunction | GCGraphicsExposures
| GCLineWidth | GCLineStyle , &val);
}
@@ -76,13 +76,13 @@ XScreen::~XScreen()
XFreeGC(fl_get_display(), gc_copy);
}
-
-void XScreen::setCursorColor()
+
+void XScreen::setCursorColor()
{
if (!lyxColorHandler.get()) return;
GC gc = lyxColorHandler->getGCForeground(LColor::cursor);
-
+
XGCValues val;
XGetGCValues(fl_get_display(),
gc, GCForeground, &val);
@@ -95,14 +95,14 @@ void XScreen::showManualCursor(LyXText const * text, int x, int y,
{
// Update the cursor color.
setCursorColor();
-
+
int const y1 = max(y - text->first_y - asc, 0);
int const y_tmp = min(y - text->first_y + desc,
static_cast(owner_.workHeight()));
// Secure against very strange situations
int const y2 = max(y_tmp, y1);
-
+
if (cursor_pixmap) {
XFreePixmap(fl_get_display(), cursor_pixmap);
cursor_pixmap = 0;
@@ -127,7 +127,7 @@ void XScreen::showManualCursor(LyXText const * text, int x, int y,
break;
}
- cursor_pixmap =
+ cursor_pixmap =
XCreatePixmap (fl_get_display(),
fl_root,
cursor_pixmap_w,
@@ -174,11 +174,11 @@ void XScreen::hideCursor()
if (!cursor_visible_) return;
if (cursor_pixmap) {
- XCopyArea (fl_get_display(),
+ XCopyArea (fl_get_display(),
cursor_pixmap,
owner_.getWin(),
gc_copy,
- 0, 0,
+ 0, 0,
cursor_pixmap_w, cursor_pixmap_h,
cursor_pixmap_x + owner_.xpos(),
cursor_pixmap_y + owner_.ypos());
@@ -186,7 +186,7 @@ void XScreen::hideCursor()
cursor_visible_ = false;
}
-
+
void XScreen::expose(int x, int y, int w, int h)
{
lyxerr[Debug::GUI] << "expose " << w << "x" << h
@@ -233,8 +233,8 @@ void XScreen::draw(LyXText * text, BufferView * bv, unsigned int y)
old_first - text->first_y);
} else {
drawFromTo(text, bv,
- owner_.workHeight() + old_first - text->first_y,
- owner_.workHeight(), 0, 0, internal);
+ owner_.workHeight() + old_first - text->first_y,
+ owner_.workHeight(), 0, 0, internal);
XCopyArea (fl_get_display(),
owner_.getWin(),
owner_.getWin(),
@@ -250,7 +250,7 @@ void XScreen::draw(LyXText * text, BufferView * bv, unsigned int y)
owner_.workWidth(), text->first_y - old_first);
}
} else {
- // make a dumb new-draw
+ // make a dumb new-draw
drawFromTo(text, bv, 0, owner_.workHeight(), 0, 0, internal);
expose(0, 0, owner_.workWidth(), owner_.workHeight());
}
diff --git a/src/frontends/xforms/xscreen.h b/src/frontends/xforms/xscreen.h
index 1fc39adc26..481aab4fcc 100644
--- a/src/frontends/xforms/xscreen.h
+++ b/src/frontends/xforms/xscreen.h
@@ -20,7 +20,7 @@
#include "screen.h"
#include "XWorkArea.h"
-
+
/** The class XScreen is used for the main Textbody.
Concretely, the screen is held in a pixmap. This pixmap is kept up to
date and used to optimize drawing on the screen.
@@ -42,7 +42,7 @@ public:
virtual void showManualCursor(LyXText const *, int x, int y,
int asc, int desc,
Cursor_Shape shape);
-
+
/** Draws the screen form textposition y. Uses as much of
the already printed pixmap as possible */
virtual void draw(LyXText *, BufferView *, unsigned int y);
@@ -50,14 +50,14 @@ public:
protected:
/// get the work area
virtual WorkArea & workarea() const { return owner_; }
-
+
/// Copies specified area of pixmap to screen
- virtual void expose(int x, int y, int w, int h);
-
+ virtual void expose(int x, int y, int w, int h);
+
private:
/// our owning widget
XWorkArea & owner_;
-
+
///
Pixmap cursor_pixmap;
///
diff --git a/src/insets/ChangeLog b/src/insets/ChangeLog
index 72e3de1b05..d60be2f84a 100644
--- a/src/insets/ChangeLog
+++ b/src/insets/ChangeLog
@@ -1,3 +1,6 @@
+2002-06-24 Lars Gullik Bjønnes
+
+ * insettext.C: layout as layout
2002-05-28 André Pönitz
@@ -6,12 +9,12 @@
* insetref.C: tiny whitespace
2002-06-15 Herbert Voss
-
- * insetgraphics.C: (prepareFile) fix bug with zipped eps-files
- and take always convert when no userdefined converter was
- found
- (latex) small changes in the lyxerr output
-
+
+ * insetgraphics.C: (prepareFile) fix bug with zipped eps-files
+ and take always convert when no userdefined converter was
+ found
+ (latex) small changes in the lyxerr output
+
2002-06-15 LyX Development team
* inset*.[Ch] (docbook): Added new argument to take the pernicious
@@ -24,7 +27,7 @@
2002-06-13 Edwin Leuven
* insetquotes.C: change lyxfont::draw to font_metrics::draw
-
+
2002-06-12 Vitaly Lipatov
* insetquotes.C (draw): fix drawing of double quotes
@@ -32,27 +35,27 @@
2002-06-12 John Levon
* insettabular.C: s/scrollCB/scrollDocView/
-
+
2002-06-12 John Levon
* insettext.C: change of topCursorVisible()
prototype
-
+
2002-06-12 John Levon
* insettext.h:
* insettext.C: rename/change of LyXScreen
-
+
2002-06-07 Angus Leeming
Fixes needed to compile with Compaq cxx 6.5.
- * insetexternal.C:
+ * insetexternal.C:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
2002-06-05 Jean-Marc Lasgouttes
- * insetinclude.C (uniqueID):
+ * insetinclude.C (uniqueID):
* insetgraphics.C (uniqueID): renamed from unique_id, since this
conflicted with some AIX headers.
diff --git a/src/insets/inset.C b/src/insets/inset.C
index f20d5e3583..4fa75c48d9 100644
--- a/src/insets/inset.C
+++ b/src/insets/inset.C
@@ -19,7 +19,7 @@
#include "BufferView.h"
#include "support/lstrings.h"
#include "frontends/Painter.h"
-#include "frontends/mouse_state.h"
+#include "frontends/mouse_state.h"
#include "commandtags.h"
#include "support/lstrings.h"
#include "gettext.h"
diff --git a/src/insets/inset.h b/src/insets/inset.h
index d0f14006f0..2bb302ecf4 100644
--- a/src/insets/inset.h
+++ b/src/insets/inset.h
@@ -454,7 +454,7 @@ public:
// if that one has one!
///
virtual bool insetButtonRelease(BufferView *,
- int x, int y, mouse_button::state button);
+ int x, int y, mouse_button::state button);
///
virtual void insetMotionNotify(BufferView *, int x, int y, mouse_button::state state);
///
diff --git a/src/insets/insetcollapsable.C b/src/insets/insetcollapsable.C
index b66e5e5e44..0f2cde6ade 100644
--- a/src/insets/insetcollapsable.C
+++ b/src/insets/insetcollapsable.C
@@ -235,7 +235,7 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
void InsetCollapsable::edit(BufferView * bv, int xp, int yp,
- mouse_button::state button)
+ mouse_button::state button)
{
UpdatableInset::edit(bv, xp, yp, button);
diff --git a/src/insets/insetert.C b/src/insets/insetert.C
index cb009011b8..7b71bfec59 100644
--- a/src/insets/insetert.C
+++ b/src/insets/insetert.C
@@ -309,7 +309,7 @@ void InsetERT::insetButtonPress(BufferView * bv,
}
-bool InsetERT::insetButtonRelease(BufferView * bv, int x, int y,
+bool InsetERT::insetButtonRelease(BufferView * bv, int x, int y,
mouse_button::state button)
{
if (button == mouse_button::button3) {
@@ -454,7 +454,7 @@ InsetERT::localDispatch(BufferView * bv, kb_action action, string const & arg)
switch (action) {
case LFUN_LAYOUT:
- bv->owner()->setLayout(inset.paragraph()->layout());
+ bv->owner()->setLayout(inset.paragraph()->layout()->name());
break;
default:
result = InsetCollapsable::localDispatch(bv, action, arg);
@@ -712,7 +712,7 @@ int InsetERT::getMaxWidth(BufferView * bv, UpdatableInset const * in) const
void InsetERT::update(BufferView * bv, LyXFont const & font,
- bool reinit)
+ bool reinit)
{
if (inset.need_update & InsetText::INIT ||
inset.need_update & InsetText::FULL)
diff --git a/src/insets/insetfoot.C b/src/insets/insetfoot.C
index 91f45fb071..d91cdb6699 100644
--- a/src/insets/insetfoot.C
+++ b/src/insets/insetfoot.C
@@ -25,7 +25,6 @@
// the following are needed just to get the layout of the enclosing
// paragraph. This seems a bit too much to me (JMarc)
#include "lyxlayout.h"
-#include "lyxtextclasslist.h"
#include "buffer.h"
#include "paragraph.h"
@@ -65,9 +64,8 @@ int InsetFoot::latex(Buffer const * buf,
ostream & os, bool fragile, bool fp) const
{
if (buf && parOwner()) {
- LyXLayout const & layout =
- textclasslist[buf->params.textclass][parOwner()->layout()];
- fragile |= layout.intitle;
+ LyXLayout_ptr const & layout = parOwner()->layout();
+ fragile |= layout->intitle;
}
os << "%\n\\footnote{";
diff --git a/src/insets/insetgraphics.C b/src/insets/insetgraphics.C
index e083bc60ff..4ace559e77 100644
--- a/src/insets/insetgraphics.C
+++ b/src/insets/insetgraphics.C
@@ -601,8 +601,8 @@ string const InsetGraphics::prepareFile(Buffer const *buf) const
string const orig_file = params().filename;
string orig_file_with_path =
MakeAbsPath(orig_file, buf->filePath());
- lyxerr[Debug::GRAPHICS] << "[InsetGraphics::prepareFile] orig_file = "
- << orig_file << "\n\twith path: "
+ lyxerr[Debug::GRAPHICS] << "[InsetGraphics::prepareFile] orig_file = "
+ << orig_file << "\n\twith path: "
<< orig_file_with_path << endl;
if (!IsFileReadable(orig_file_with_path))
@@ -627,13 +627,13 @@ string const InsetGraphics::prepareFile(Buffer const *buf) const
lyxerr[Debug::GRAPHICS] << "\twe have a zipped file ("
<< getExtFromContents(orig_file_with_path) << ")\n";
if (params().noUnzip && zipped) {
- lyxerr[Debug::GRAPHICS]
+ lyxerr[Debug::GRAPHICS]
<< "\tpass file unzipped to LaTeX but with full path.\n";
// latex needs an absolue path, otherwise the coresponding
// *.eps.bb file isn't found
return orig_file_with_path;
}
-
+
string temp_file(orig_file);
// Uncompress the file if necessary. If it has been uncompressed in
// a previous call to prepareFile, do nothing.
@@ -649,7 +649,7 @@ string const InsetGraphics::prepareFile(Buffer const *buf) const
<< (success ? " succeeded\n" : " failed\n");
} else
lyxerr[Debug::GRAPHICS]
- << "\tzipped file " << temp_file
+ << "\tzipped file " << temp_file
<< " exists! Maybe no tempdir ...\n";
orig_file_with_path = unzipFile(temp_file);
lyxerr[Debug::GRAPHICS]
@@ -691,12 +691,12 @@ string const InsetGraphics::prepareFile(Buffer const *buf) const
temp_file = MakeAbsPath(temp_file, buf->tmppath);
lyxerr[Debug::GRAPHICS]
<< "\tchanged to: " << temp_file << endl;
-
+
// if the file doen't exists, copy it into the tempdi
if (!IsFileReadable(temp_file)) {
bool const success = lyx::copy(orig_file_with_path, temp_file);
lyxerr[Debug::GRAPHICS]
- << "\tcopying from " << orig_file_with_path << " to "
+ << "\tcopying from " << orig_file_with_path << " to "
<< temp_file
<< (success ? " succeeded\n" : " failed\n");
if (!success) {
@@ -716,7 +716,7 @@ string const InsetGraphics::prepareFile(Buffer const *buf) const
// the orig_file_with_path, maybe it is a zipped one
return lyxrc.use_tempdir ? temp_file : orig_file_with_path;
}
-
+
string const outfile_base = RemoveExtension(temp_file);
lyxerr[Debug::GRAPHICS]
<< "\tThe original file is " << orig_file << "\n"
@@ -728,21 +728,21 @@ string const InsetGraphics::prepareFile(Buffer const *buf) const
// if no special converter defined, than we take the default one
// from ImageMagic: convert from:inname.from to:outname.to
if (!converters.convert(buf, temp_file, outfile_base, from, to)) {
- string const command =
+ string const command =
"convert " +
from + ':' + temp_file + ' ' +
to + ':' + outfile_base + '.' + to;
- lyxerr[Debug::GRAPHICS]
+ lyxerr[Debug::GRAPHICS]
<< "No converter defined! I use convert from ImageMagic:\n\t"
<< command << endl;
Systemcall one;
one.startscript(Systemcall::Wait, command);
if (!IsFileReadable(ChangeExtension(outfile_base, to)))
- Alert::alert(_("Cannot convert Image (not existing file??)"),
+ Alert::alert(_("Cannot convert Image (not existing file?)"),
_("No information for converting from ")
+ from + _(" to ") + to);
}
-
+
return RemoveExtension(temp_file);
}
@@ -838,7 +838,8 @@ int InsetGraphics::linuxdoc(Buffer const *, ostream &) const
// For explanation on inserting graphics into DocBook checkout:
// http://linuxdoc.org/LDP/LDP-Author-Guide/inserting-pictures.html
// See also the docbook guide at http://www.docbook.org/
-int InsetGraphics::docbook(Buffer const *, ostream & os, bool mixcont) const
+int InsetGraphics::docbook(Buffer const *, ostream & os,
+ bool /*mixcont*/) const
{
// In DocBook v5.0, the graphic tag will be eliminated from DocBook, will
// need to switch to MediaObject. However, for now this is sufficient and
diff --git a/src/insets/insetgraphicsParams.h b/src/insets/insetgraphicsParams.h
index dc8e0b508b..c7a3b9de78 100644
--- a/src/insets/insetgraphicsParams.h
+++ b/src/insets/insetgraphicsParams.h
@@ -94,7 +94,7 @@ struct InsetGraphicsParams
void Write(std::ostream & os) const;
/// If the token belongs to our parameters, read it.
bool Read(LyXLex & lex, string const & token);
- /// convert
+ /// convert
// Only a subset of InsetGraphicsParams is needed for display purposes.
// This function also interrogates lyxrc to ascertain whether
// to display or not.
diff --git a/src/insets/insetinclude.C b/src/insets/insetinclude.C
index 844d6d3cad..27fae37715 100644
--- a/src/insets/insetinclude.C
+++ b/src/insets/insetinclude.C
@@ -342,7 +342,8 @@ int InsetInclude::linuxdoc(Buffer const * buffer, ostream & os) const
}
-int InsetInclude::docbook(Buffer const * buffer, ostream & os, bool mixcont) const
+int InsetInclude::docbook(Buffer const * buffer, ostream & os,
+ bool /*mixcont*/) const
{
string incfile(params_.cparams.getContents());
diff --git a/src/insets/insetspecialchar.C b/src/insets/insetspecialchar.C
index 0feb09eee1..7dcbc23afc 100644
--- a/src/insets/insetspecialchar.C
+++ b/src/insets/insetspecialchar.C
@@ -53,7 +53,7 @@ int InsetSpecialChar::width(BufferView *, LyXFont const & font) const
case HYPHENATION:
{
int w = font_metrics::width('-', font);
- if (w > 5)
+ if (w > 5)
w -= 2; // to make it look shorter
return w;
}
diff --git a/src/insets/insettext.C b/src/insets/insettext.C
index a3ed108ea8..c172d3ec13 100644
--- a/src/insets/insettext.C
+++ b/src/insets/insettext.C
@@ -140,8 +140,7 @@ InsetText::InsetText(BufferParams const & bp)
do_reinit(false)
{
par = new Paragraph;
- par->layout(textclasslist[bp.textclass].defaultLayoutName());
-
+ par->layout(textclasslist[bp.textclass].defaultLayout());
init();
}
@@ -219,7 +218,7 @@ InsetText::~InsetText()
void InsetText::clear()
{
// This is a gross hack...
- string old_layout = par->layout();
+ LyXLayout_ptr old_layout = par->layout();
while (par) {
Paragraph * tmp = par->next();
@@ -663,7 +662,7 @@ void InsetText::updateLocal(BufferView * bv, int what, bool mark_dirty) const
bv->owner()->updateMenubar();
bv->owner()->updateToolbar();
if (old_par != cpar(bv)) {
- bv->owner()->setLayout(cpar(bv)->layout());
+ bv->owner()->setLayout(cpar(bv)->layout()->name());
old_par = cpar(bv);
}
}
@@ -807,9 +806,9 @@ void InsetText::insetUnlock(BufferView * bv)
code = FULL;
} else if (owner()) {
bv->owner()->setLayout(owner()->getLyXText(bv)
- ->cursor.par()->layout());
+ ->cursor.par()->layout()->name());
} else
- bv->owner()->setLayout(bv->text->cursor.par()->layout());
+ bv->owner()->setLayout(bv->text->cursor.par()->layout()->name());
// hack for deleteEmptyParMech
if (par->size()) {
lt->setCursor(bv, par, 0);
@@ -1086,7 +1085,9 @@ void InsetText::insetButtonPress(BufferView * bv,
lt = 0;
updateLocal(bv, CURSOR, false);
}
- bv->owner()->setLayout(cpar(bv)->layout());
+
+ bv->owner()->setLayout(cpar(bv)->layout()->name());
+
// we moved the view we cannot do mouse selection in this case!
if (getLyXText(bv)->first_y != old_first_y)
no_selection = true;
@@ -1443,7 +1444,7 @@ InsetText::localDispatch(BufferView * bv,
case LFUN_LAYOUT:
// do not set layouts on non breakable textinsets
if (autoBreakRows) {
- string cur_layout = cpar(bv)->layout();
+ string cur_layout = cpar(bv)->layout()->name();
// Derive layout number from given argument (string)
// and current buffer's textclass (number). */
@@ -1454,7 +1455,7 @@ InsetText::localDispatch(BufferView * bv,
// If the entry is obsolete, use the new one instead.
if (hasLayout) {
string const & obs =
- textclasslist[tclass][layout].
+ textclasslist[tclass][layout]->
obsoleted_by();
if (!obs.empty())
layout = obs;
@@ -1470,13 +1471,13 @@ InsetText::localDispatch(BufferView * bv,
if (cur_layout != layout) {
cur_layout = layout;
lt->setLayout(bv, layout);
- bv->owner()->setLayout(cpar(bv)->layout());
+ bv->owner()->setLayout(cpar(bv)->layout()->name());
updwhat = CURSOR_PAR;
updflag = true;
}
} else {
// reset the layout box
- bv->owner()->setLayout(cpar(bv)->layout());
+ bv->owner()->setLayout(cpar(bv)->layout()->name());
}
break;
case LFUN_PARAGRAPH_SPACING:
@@ -1593,8 +1594,7 @@ int InsetText::docbook(Buffer const * buf, ostream & os, bool mixcont) const
string sgmlparam;
int desc_on = 0; // description mode
- LyXLayout const & style =
- textclasslist[buf->params.textclass][p->layout()];
+ LyXLayout_ptr const & style = p->layout();
// environment tag closing
for (; depth > p->params().depth(); --depth) {
@@ -1610,7 +1610,7 @@ int InsetText::docbook(Buffer const * buf, ostream & os, bool mixcont) const
}
if (depth == p->params().depth()
- && environment_stack[depth] != style.latexname()
+ && environment_stack[depth] != style->latexname()
&& !environment_stack[depth].empty()) {
if (environment_inner[depth] != "!-- --") {
item_name= "listitem";
@@ -1626,9 +1626,9 @@ int InsetText::docbook(Buffer const * buf, ostream & os, bool mixcont) const
}
// Write opening SGML tags.
- switch (style.latextype) {
+ switch (style->latextype) {
case LATEX_PARAGRAPH:
- lines += buf->sgmlOpenTag(os, depth + command_depth, mixcont, style.latexname());
+ lines += buf->sgmlOpenTag(os, depth + command_depth, mixcont, style->latexname());
break;
case LATEX_COMMAND:
@@ -1643,12 +1643,12 @@ int InsetText::docbook(Buffer const * buf, ostream & os, bool mixcont) const
environment_stack[depth].erase();
}
- if (environment_stack[depth] != style.latexname()) {
+ if (environment_stack[depth] != style->latexname()) {
if (environment_stack.size() == depth + 1) {
environment_stack.push_back("!-- --");
environment_inner.push_back("!-- --");
}
- environment_stack[depth] = style.latexname();
+ environment_stack[depth] = style->latexname();
environment_inner[depth] = "!-- --";
lines += buf->sgmlOpenTag(os, depth + command_depth, mixcont, environment_stack[depth]);
} else {
@@ -1660,17 +1660,17 @@ int InsetText::docbook(Buffer const * buf, ostream & os, bool mixcont) const
}
}
- if (style.latextype == LATEX_ENVIRONMENT) {
- if (!style.latexparam().empty()) {
- if (style.latexparam() == "CDATA")
+ if (style->latextype == LATEX_ENVIRONMENT) {
+ if (!style->latexparam().empty()) {
+ if (style->latexparam() == "CDATA")
os << "sgmlOpenTag(os, depth + command_depth, mixcont, style.latexparam());
+ lines += buf->sgmlOpenTag(os, depth + command_depth, mixcont, style->latexparam());
}
break;
}
- desc_on = (style.labeltype == LABEL_MANUAL);
+ desc_on = (style->labeltype == LABEL_MANUAL);
environment_inner[depth] = desc_on?"varlistentry":"listitem";
lines += buf->sgmlOpenTag(os, depth + 1 + command_depth, mixcont, environment_inner[depth]);
@@ -1680,7 +1680,7 @@ int InsetText::docbook(Buffer const * buf, ostream & os, bool mixcont) const
break;
default:
- lines += buf->sgmlOpenTag(os, depth + command_depth, mixcont, style.latexname());
+ lines += buf->sgmlOpenTag(os, depth + command_depth, mixcont, style->latexname());
break;
}
@@ -1689,13 +1689,13 @@ int InsetText::docbook(Buffer const * buf, ostream & os, bool mixcont) const
string end_tag;
// write closing SGML tags
- switch (style.latextype) {
+ switch (style->latextype) {
case LATEX_ENVIRONMENT:
- if (!style.latexparam().empty()) {
- if (style.latexparam() == "CDATA")
+ if (!style->latexparam().empty()) {
+ if (style->latexparam() == "CDATA")
os << "]]>";
else
- lines += buf->sgmlCloseTag(os, depth + command_depth, mixcont, style.latexparam());
+ lines += buf->sgmlCloseTag(os, depth + command_depth, mixcont, style->latexparam());
}
break;
case LATEX_ITEM_ENVIRONMENT:
@@ -1704,10 +1704,10 @@ int InsetText::docbook(Buffer const * buf, ostream & os, bool mixcont) const
lines += buf->sgmlCloseTag(os, depth + 1 + command_depth, mixcont, end_tag);
break;
case LATEX_PARAGRAPH:
- lines += buf->sgmlCloseTag(os, depth + command_depth, mixcont, style.latexname());
+ lines += buf->sgmlCloseTag(os, depth + command_depth, mixcont, style->latexname());
break;
default:
- lines += buf->sgmlCloseTag(os, depth + command_depth, mixcont, style.latexname());
+ lines += buf->sgmlCloseTag(os, depth + command_depth, mixcont, style->latexname());
break;
}
}
@@ -1740,9 +1740,9 @@ void InsetText::validate(LaTeXFeatures & features) const
}
-int InsetText::beginningOfMainBody(Buffer const * buf, Paragraph * p) const
+int InsetText::beginningOfMainBody(Paragraph * p) const
{
- if (textclasslist[buf->params.textclass][p->layout()].labeltype != LABEL_MANUAL)
+ if (p->layout()->labeltype != LABEL_MANUAL)
return 0;
else
return p->beginningOfMainBody();
diff --git a/src/insets/insettext.h b/src/insets/insettext.h
index fefd364ff8..971634b65e 100644
--- a/src/insets/insettext.h
+++ b/src/insets/insettext.h
@@ -286,7 +286,7 @@ private:
///
typedef Cache::value_type value_type;
///
- int beginningOfMainBody(Buffer const *, Paragraph * par) const;
+ int beginningOfMainBody(Paragraph * par) const;
///
UpdatableInset::RESULT moveRight(BufferView *,
bool activate_inset = true,
diff --git a/src/lyx_cb.C b/src/lyx_cb.C
index 2e29832717..6548ea1edb 100644
--- a/src/lyx_cb.C
+++ b/src/lyx_cb.C
@@ -433,13 +433,12 @@ void MenuInsertLabel(BufferView * bv, string const & arg)
bv->owner()->prohibitInput();
if (label.empty()) {
Paragraph * par = bv->getLyXText()->cursor.par();
- LyXTextClass const & tclass =
- textclasslist[bv->buffer()->params.textclass];
- LyXLayout const * layout = &tclass[par->layout()];
-
+ LyXLayout_ptr layout = par->layout();
if (layout->latextype == LATEX_PARAGRAPH && par->previous()) {
Paragraph * par2 = par->previous();
- LyXLayout const * layout2 = &tclass[par2->layout()];
+
+ LyXLayout_ptr const & layout2 = par2->layout();
+
if (layout2->latextype != LATEX_PARAGRAPH) {
par = par2;
layout = layout2;
diff --git a/src/lyx_main.C b/src/lyx_main.C
index fb84f8ed6b..0e9e289c9e 100644
--- a/src/lyx_main.C
+++ b/src/lyx_main.C
@@ -14,7 +14,7 @@
#endif
#include "lyx_main.h"
-
+
#include "support/filetools.h"
#include "support/lyxlib.h"
#include "support/os.h"
@@ -23,7 +23,7 @@
#include "debug.h"
#include "gettext.h"
#include "lyxlex.h"
-
+
#include "bufferlist.h"
#include "lyxtextclasslist.h"
#include "lyxserver.h"
@@ -55,7 +55,7 @@ extern void LoadLyXFile(string const &);
extern void QuitLyX();
extern LyXServer * lyxserver;
-
+
string system_lyxdir;
string build_lyxdir;
string system_tempdir;
@@ -118,7 +118,7 @@ LyX::LyX(int & argc, char * argv[])
if (first_start) {
files.push_back(i18nLibFileSearch("examples", "splash.lyx"));
}
-
+
#if 0 // FIXME: GUII
// Execute batch commands if available
if (!batch_command.empty()) {
@@ -130,7 +130,7 @@ LyX::LyX(int & argc, char * argv[])
last_loaded = bufferlist.newFile("tmpfile", string());
bool success = false;
-
+
// try to dispatch to last loaded buffer first
bool const dispatched = last_loaded->dispatch(batch_command, &success);
@@ -145,7 +145,7 @@ LyX::LyX(int & argc, char * argv[])
lyx_gui::start(batch_command, files);
}
-
+
extern "C" {
static
@@ -819,7 +819,7 @@ bool LyX::easyParse(int & argc, char * argv[])
commandLineVersionInfo();
exit(0);
}
- // FIXME: why is this commented out ?
+ // FIXME: why is this commented out ?
// Check for "-nw": No XWindows as for emacs this should
// give a LyX that could be used in a terminal window.
//else if (arg == "-nw") {
@@ -836,7 +836,7 @@ bool LyX::easyParse(int & argc, char * argv[])
lyxerr << _("Missing command string after -x switch!") << endl;
// Argh. Setting gui to false segfaults..
- // FIXME: when ? how ?
+ // FIXME: when ? how ?
// gui = false;
}
@@ -859,11 +859,11 @@ bool LyX::easyParse(int & argc, char * argv[])
lyxerr << _("Missing filename for --import") << endl;
exit(1);
}
-
+
string const file(argv[i+2]);
string const type(argv[i+1]);
removeargs = 3;
-
+
batch_command = "buffer-import " + type + " " + file;
lyxerr << "batch_command: "
<< batch_command << endl;
diff --git a/src/lyxfind.C b/src/lyxfind.C
index 78dd3b416b..0b2a5c5906 100644
--- a/src/lyxfind.C
+++ b/src/lyxfind.C
@@ -98,7 +98,7 @@ int LyXReplace(BufferView * bv,
return replace_count;
}
-
+
bool LyXFind(BufferView * bv,
string const & searchstr, bool forward,
@@ -135,7 +135,7 @@ bool LyXFind(BufferView * bv,
bv->toggleSelection();
text->clearSelection();
-
+
SearchResult result = forward ?
SearchForward(bv, text, searchstr, casesens, matchwrd) :
SearchBackward(bv, text, searchstr, casesens, matchwrd);
@@ -158,7 +158,7 @@ bool LyXFind(BufferView * bv,
return found;
}
-
+
SearchResult LyXFind(BufferView * bv, LyXText * text,
string const & searchstr, bool forward,
diff --git a/src/lyxfunc.C b/src/lyxfunc.C
index 4a0202e35f..e1850f85bf 100644
--- a/src/lyxfunc.C
+++ b/src/lyxfunc.C
@@ -1906,7 +1906,7 @@ void LyXFunc::doImport(string const & argument)
lyxerr[Debug::INFO] << "LyXFunc::doImport: " << format
<< " file: " << filename << endl;
-
+
// need user interaction
if (filename.empty()) {
string initpath = lyxrc.document_path;
@@ -1974,7 +1974,7 @@ void LyXFunc::doImport(string const & argument)
}
}
- // if the file exists already, and we didn't do
+ // if the file exists already, and we didn't do
// -i lyx thefile.lyx, warn
if (FileInfo(lyxfile, true).exist() && filename != lyxfile) {
if (!Alert::askQuestion(_("A document by the name"),
diff --git a/src/lyxlayout.C b/src/lyxlayout.C
index 130c128039..2f6b0fc84d 100644
--- a/src/lyxlayout.C
+++ b/src/lyxlayout.C
@@ -183,15 +183,20 @@ bool LyXLayout::Read (LyXLex & lexrc, LyXTextClass const & tclass)
if (tclass.hasLayout(style)) {
string const tmpname = name_;
- this->operator=(tclass[style]);
+ this->operator=(*tclass[style]);
name_ = tmpname;
} else {
- lyxerr << "Cannot copy unknown style `" << style << "'" << endl;
- LyXTextClass::const_iterator it = tclass.begin();
- LyXTextClass::const_iterator end = tclass.end();
- lyxerr << "All layouts so far:" << endl;
+ lyxerr << "Cannot copy unknown style `"
+ << style << "'\n"
+ << "All layouts so far:"
+ << endl;
+ LyXTextClass::const_iterator it =
+ tclass.begin();
+ LyXTextClass::const_iterator end =
+ tclass.end();
for (; it != end; ++it) {
- lyxerr << it->name() << endl;
+ lyxerr << (*it)->name()
+ << endl;
}
//lexrc.printError("Cannot copy known "
@@ -206,7 +211,7 @@ bool LyXLayout::Read (LyXLex & lexrc, LyXTextClass const & tclass)
if (tclass.hasLayout(style)) {
string const tmpname = name_;
- this->operator=(tclass[style]);
+ this->operator=(*tclass[style]);
name_ = tmpname;
if (obsoleted_by().empty())
obsoleted_by_ = style;
diff --git a/src/lyxlayout_ptr_fwd.h b/src/lyxlayout_ptr_fwd.h
new file mode 100644
index 0000000000..dfd6695445
--- /dev/null
+++ b/src/lyxlayout_ptr_fwd.h
@@ -0,0 +1,26 @@
+// -*- C++ -*-
+/* This file is part of
+ * ======================================================
+ *
+ * LyX, The Document Processor
+ *
+ * Copyright 1995 Matthias Ettrich
+ * Copyright 1995-2001 The LyX Team.
+ *
+ * ====================================================== */
+
+#ifndef LYXLAYOUT_PTR_FWD_H
+#define LYXLAYOUT_PTR_FWD_H
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+#include
+
+class LyXLayout;
+
+/// Global typedef
+typedef boost::shared_ptr LyXLayout_ptr;
+
+#endif
diff --git a/src/lyxtextclass.C b/src/lyxtextclass.C
index 21d0cbf507..271c9dd3cc 100644
--- a/src/lyxtextclass.C
+++ b/src/lyxtextclass.C
@@ -31,6 +31,20 @@ using std::find_if;
using std::remove_if;
using std::ostream;
+namespace { // anon
+
+struct compare_name {
+ compare_name(string const & name)
+ : name_(name) {}
+ template
+ bool operator()(C & c) {
+ return c->name() == name_;
+ }
+ string name_;
+};
+
+} // anon
+
LyXTextClass::LyXTextClass(string const & fn, string const & cln,
string const & desc)
@@ -183,14 +197,14 @@ bool LyXTextClass::Read(string const & filename, bool merge)
string const name = subst(lexrc.getString(),
'_', ' ');
if (hasLayout(name)) {
- LyXLayout & lay =
- const_cast(operator[](name));
- error = do_readStyle(lexrc, lay);
+ LyXLayout * lay =
+ operator[](name).get();
+ error = do_readStyle(lexrc, *lay);
} else {
LyXLayout lay;
lay.setName(name);
if (!(error = do_readStyle(lexrc, lay)))
- layoutlist.push_back(lay);
+ layoutlist.push_back(boost::shared_ptr(new LyXLayout(lay)));
if (defaultlayout_.empty()) {
// We do not have a default
// layout yet, so we choose
@@ -504,12 +518,12 @@ bool LyXTextClass::hasLayout(string const & n) const
string const name = (n.empty() ? defaultLayoutName() : n);
return find_if(layoutlist.begin(), layoutlist.end(),
- lyx::compare_memfun(&LyXLayout::name, name))
+ compare_name(name))
!= layoutlist.end();
}
-LyXLayout const & LyXTextClass::operator[](string const & n) const
+LyXLayout_ptr const & LyXTextClass::operator[](string const & n) const
{
lyx::Assert(!n.empty());
@@ -527,7 +541,7 @@ LyXLayout const & LyXTextClass::operator[](string const & n) const
LayoutList::const_iterator cit =
find_if(layoutlist.begin(),
layoutlist.end(),
- lyx::compare_memfun(&LyXLayout::name, name));
+ compare_name(name));
if (cit == layoutlist.end()) {
lyxerr << "We failed to find the layout '" << name
@@ -541,7 +555,7 @@ LyXLayout const & LyXTextClass::operator[](string const & n) const
lastLayoutName = name;
lastLayoutIndex = std::distance(layoutlist.begin(), cit);
- return *cit;
+ return (*cit);
}
@@ -552,7 +566,8 @@ bool LyXTextClass::delete_layout(string const & name)
LayoutList::iterator it =
remove_if(layoutlist.begin(), layoutlist.end(),
- lyx::compare_memfun(&LyXLayout::name, name));
+ compare_name(name));
+
LayoutList::iterator end = layoutlist.end();
bool const ret = (it != end);
layoutlist.erase(it, end);
@@ -589,7 +604,7 @@ string const LyXTextClass::defaultLayoutName() const
}
-LyXLayout const & LyXTextClass::defaultLayout() const
+LyXLayout_ptr const & LyXTextClass::defaultLayout() const
{
return operator[](defaultLayoutName());
}
diff --git a/src/lyxtextclass.h b/src/lyxtextclass.h
index 295148afc5..1a8a6e8633 100644
--- a/src/lyxtextclass.h
+++ b/src/lyxtextclass.h
@@ -17,22 +17,20 @@
#endif
#include "lyxlayout.h"
+#include "LString.h"
+#include "lyxlayout_ptr_fwd.h"
#include "support/types.h"
-#include "LString.h"
-
#include
class LyXLex;
-
-
///
class LyXTextClass {
public:
///
- typedef std::vector LayoutList;
+ typedef std::vector LayoutList;
///
typedef LayoutList::const_iterator const_iterator;
///
@@ -58,7 +56,7 @@ public:
bool hasLayout(string const & name) const;
///
- LyXLayout const & operator[](string const & vname) const;
+ LyXLayout_ptr const & operator[](string const & vname) const;
/// Sees to that the textclass structure has been loaded
bool load() const;
@@ -66,7 +64,7 @@ public:
///
string const defaultLayoutName() const;
///
- LyXLayout const & defaultLayout() const;
+ LyXLayout_ptr const & defaultLayout() const;
///
string const & name() const;
///
diff --git a/src/mathed/button_inset.C b/src/mathed/button_inset.C
index 4a5644cb92..14f895d9ac 100644
--- a/src/mathed/button_inset.C
+++ b/src/mathed/button_inset.C
@@ -1,8 +1,13 @@
+#include
#include "button_inset.h"
#include "math_support.h"
#include "frontends/Painter.h"
+#include
+
+using std::max;
+
ButtonInset::ButtonInset()
: MathNestInset(2)
@@ -38,4 +43,3 @@ void ButtonInset::draw(MathPainterInfo & pi, int x, int y) const
pi.base.font);
}
}
-
diff --git a/src/mathed/formula.C b/src/mathed/formula.C
index 9c9b57e318..f84f38c259 100644
--- a/src/mathed/formula.C
+++ b/src/mathed/formula.C
@@ -193,7 +193,7 @@ void InsetFormula::draw(BufferView * bv, LyXFont const & font,
if (grfx::ImagePtr image = preview(os.str()))
pain.image(x, y, w, h, *image);
#endif
-
+
xx += par_->width();
xo_ = x;
yo_ = y;
diff --git a/src/mathed/formulabase.C b/src/mathed/formulabase.C
index aec69509a2..00df0bec99 100644
--- a/src/mathed/formulabase.C
+++ b/src/mathed/formulabase.C
@@ -272,7 +272,7 @@ void InsetFormulaBase::fitInsetCursor(BufferView * bv) const
{
if (!mathcursor)
return;
-
+
int const asc = font_metrics::maxAscent(font_);
int const desc = font_metrics::maxDescent(font_);
int x, y;
diff --git a/src/mathed/math_cursor.C b/src/mathed/math_cursor.C
index 54d0fdcc23..33ce2d78b7 100644
--- a/src/mathed/math_cursor.C
+++ b/src/mathed/math_cursor.C
@@ -340,7 +340,7 @@ void MathCursor::insert(string const & str)
void MathCursor::insert(char c)
{
//lyxerr << "inserting '" << c << "'\n";
- selClearOrDel();
+ selClearOrDel();
plainInsert(MathAtom(new MathCharInset(c)));
}
@@ -907,7 +907,7 @@ MathCursor::col_type MathCursor::hullCol() const
{
idx_type idx = 0;
MathHullInset * p = enclosingHull(idx);
- return p->col(idx);
+ return p->col(idx);
}
@@ -915,7 +915,7 @@ MathCursor::row_type MathCursor::hullRow() const
{
idx_type idx = 0;
MathHullInset * p = enclosingHull(idx);
- return p->row(idx);
+ return p->row(idx);
}
@@ -1109,7 +1109,7 @@ bool MathCursor::goUpDown(bool up)
// check if we had something else in mind, if not, this is the future goal
if (targetx_ == -1)
targetx_ = xo;
- else
+ else
xo = targetx_;
// try neigbouring script insets
@@ -1522,7 +1522,7 @@ bool MathCursor::interpret(char c)
// no special circumstances, so insert the character without any fuss
insert(c);
- autocorrect_ = true;
+ autocorrect_ = true;
return true;
}
@@ -1557,7 +1557,7 @@ string MathCursor::info() const
Cursor_[i].par_->infoize(os);
os << " ";
}
- //if (pos() > 0)
+ //if (pos() > 0)
// prevAtom()->infoize(os);
os << " ";
return os.str().c_str(); // .c_str() needed for lyxstring
@@ -1675,7 +1675,7 @@ void MathCursor::handleExtern(const string & arg)
iss >> lang >> extra;
if (extra.empty())
extra = "noextra";
-
+
if (selection()) {
MathArray ar;
@@ -1710,7 +1710,7 @@ void MathCursor::handleExtern(const string & arg)
insert(pipeThroughExtern(lang, extra, ar));
return;
}
-
+
if (hull->getType() == LM_OT_EQUATION) {
lyxerr << "use equation inset\n";
hull->mutate(LM_OT_EQNARRAY);
@@ -1722,8 +1722,8 @@ void MathCursor::handleExtern(const string & arg)
cursor().cell() = pipeThroughExtern(lang, extra, ar);
idxLineLast();
return;
- }
-
+ }
+
{
lyxerr << "use eqnarray\n";
idxLineLast();
diff --git a/src/mathed/math_decorationinset.C b/src/mathed/math_decorationinset.C
index 03657b13bc..9282349eab 100644
--- a/src/mathed/math_decorationinset.C
+++ b/src/mathed/math_decorationinset.C
@@ -10,6 +10,8 @@
#include "math_mathmlstream.h"
#include "math_streamstr.h"
+#include
+
MathDecorationInset::MathDecorationInset(string const & name)
: MathNestInset(1), name_(name)
diff --git a/src/mathed/math_parser.C b/src/mathed/math_parser.C
index 484bc2b1d0..e9bb698caa 100644
--- a/src/mathed/math_parser.C
+++ b/src/mathed/math_parser.C
@@ -572,7 +572,7 @@ bool Parser::parse_macro(string & name)
MathMacroTable::create(name, nargs, ar1, ar2);
return true;
}
-
+
bool Parser::parse_normal(MathAtom & at)
{
@@ -722,7 +722,7 @@ void Parser::parse_into1(MathGridInset & grid, unsigned flags,
else if (t.cat() == catAlign) {
++cellcol;
//lyxerr << " column now " << cellcol << " max: " << grid.ncols() << "\n";
- if (cellcol == grid.ncols()) {
+ if (cellcol == grid.ncols()) {
lyxerr << "adding column " << cellcol << "\n";
grid.addCol(cellcol - 1);
}
@@ -811,7 +811,7 @@ void Parser::parse_into1(MathGridInset & grid, unsigned flags,
// resize the table if necessary
for (int i = 0; i < cols; ++i) {
++cellcol;
- if (cellcol == grid.ncols()) {
+ if (cellcol == grid.ncols()) {
lyxerr << "adding column " << cellcol << "\n";
grid.addCol(cellcol - 1);
}
diff --git a/src/mathed/preview.C b/src/mathed/preview.C
index f5cdf86f29..81e56d569b 100644
--- a/src/mathed/preview.C
+++ b/src/mathed/preview.C
@@ -1,4 +1,3 @@
-
#include
#include "formula.h"
@@ -60,7 +59,7 @@ grfx::ImagePtr preview(string const & str)
// do we already have access to a rendered version?
previews_map::const_iterator it = thePreviews.find(str);
if (it != thePreviews.end())
- return it->second;
+ return it->second;
// constructing new item
//grfx::ImagePtr & im = thePreviews[str];
@@ -130,4 +129,3 @@ grfx::ImagePtr preview(string const & str)
#endif
return it->second;
}
-
diff --git a/src/mathed/ref_inset.C b/src/mathed/ref_inset.C
index c607d19812..89ef47cd1e 100644
--- a/src/mathed/ref_inset.C
+++ b/src/mathed/ref_inset.C
@@ -1,3 +1,4 @@
+#include
#include "ref_inset.h"
#include "math_cursor.h"
@@ -10,6 +11,8 @@
#include "lyxfunc.h"
#include "gettext.h"
#include "LaTeXFeatures.h"
+#include "debug.h"
+
RefInset::RefInset()
: CommandInset("ref")
@@ -33,17 +36,17 @@ void RefInset::infoize(std::ostream & os) const
}
-int RefInset::dispatch(string const & cmd, idx_type, pos_type)
+int RefInset::dispatch(string const & cmd, idx_type, pos_type)
{
if (cmd == "mouse 3") {
- cerr << "trying to goto ref" << cell(0) << "\n";
+ lyxerr << "trying to goto ref" << cell(0) << "\n";
mathcursor->formula()->view()->owner()->getLyXFunc()->
dispatch(LFUN_REF_GOTO, asString(cell(0)));
return 1; // dispatched
}
-
+
if (cmd == "mouse 1") {
- cerr << "trying to open ref" << cell(0) << "\n";
+ lyxerr << "trying to open ref" << cell(0) << "\n";
// Eventually trigger dialog with button 3 not 1
// mathcursor->formula()->view()->owner()->getDialogs()
// ->showRef(this);
@@ -108,6 +111,7 @@ int RefInset::docbook(std::ostream & os, bool) const
return 0;
}
+
RefInset::type_info RefInset::types[] = {
{ "ref", N_("Standard"), N_("Ref: ")},
{ "pageref", N_("Page Number"), N_("Page: ")},
diff --git a/src/minibuffer.C b/src/minibuffer.C
index f8acbc5fa4..94a7a6cc13 100644
--- a/src/minibuffer.C
+++ b/src/minibuffer.C
@@ -209,7 +209,7 @@ int MiniBuffer::peek_event(FL_OBJECT * ob, int event, int key)
case 27:
case XK_Escape:
// Abort
- // FIXME: really needed ? when ?
+ // FIXME: really needed ? when ?
//owner_->view()->focus(true);
init();
deactivate();
@@ -236,7 +236,7 @@ int MiniBuffer::peek_event(FL_OBJECT * ob, int event, int key)
#endif
// Return the inputted string
deactivate();
- // FIXME: really needed ? when ?
+ // FIXME: really needed ? when ?
//owner_->view()->focus(true);
if (!input.empty()) {
history_->push_back(input);
diff --git a/src/paragraph.C b/src/paragraph.C
index 4bb88f2b82..f92968bac2 100644
--- a/src/paragraph.C
+++ b/src/paragraph.C
@@ -189,12 +189,7 @@ void Paragraph::writeFile(Buffer const * buf, ostream & os,
}
// First write the layout
- string lay = layout();
- if (lay.empty()) {
- lay = textclasslist[bparams.textclass].defaultLayoutName();
- }
-
- os << "\n\\layout " << layout() << "\n";
+ os << "\n\\layout " << layout()->name() << "\n";
// Maybe some vertical spaces.
if (params().spaceTop().kind() != VSpace::NONE)
@@ -346,7 +341,7 @@ void Paragraph::validate(LaTeXFeatures & features) const
features.require("setspace");
// then the layouts
- features.useLayout(layout());
+ features.useLayout(layout()->name());
// then the fonts
Language const * doc_language = bparams.language;
@@ -397,14 +392,14 @@ void Paragraph::validate(LaTeXFeatures & features) const
features.require("ParagraphLeftIndent");
// then the insets
- LyXLayout const & lout = textclasslist[bparams.textclass][layout()];
+ LyXLayout_ptr const & lout = layout();
InsetList::const_iterator icit = insetlist.begin();
InsetList::const_iterator iend = insetlist.end();
for (; icit != iend; ++icit) {
if (icit->inset) {
icit->inset->validate(features);
- if (lout.needprotect &&
+ if (lout->needprotect &&
icit->inset->lyxCode() == Inset::FOOT_CODE)
features.require("NeedLyXFootnoteCode");
}
@@ -644,17 +639,17 @@ LyXFont const Paragraph::getFont(BufferParams const & bparams,
{
lyx::Assert(pos >= 0);
- LyXLayout const & lout =
- textclasslist[bparams.textclass][layout()];
+ LyXLayout_ptr const & lout = layout();
+
pos_type main_body = 0;
- if (lout.labeltype == LABEL_MANUAL)
+ if (lout->labeltype == LABEL_MANUAL)
main_body = beginningOfMainBody();
LyXFont layoutfont;
if (pos < main_body)
- layoutfont = lout.labelfont;
+ layoutfont = lout->labelfont;
else
- layoutfont = lout.font;
+ layoutfont = lout->font;
LyXFont tmpfont = getFontSettings(bparams, pos);
#ifndef INHERIT_LANGUAGE
@@ -669,10 +664,9 @@ LyXFont const Paragraph::getFont(BufferParams const & bparams,
LyXFont const Paragraph::getLabelFont(BufferParams const & bparams) const
{
- LyXLayout const & lout =
- textclasslist[bparams.textclass][layout()];
+ LyXLayout_ptr const & lout = layout();
- LyXFont tmpfont = lout.labelfont;
+ LyXFont tmpfont = lout->labelfont;
tmpfont.setLanguage(getParLanguage(bparams));
return pimpl_->realizeFont(tmpfont, bparams);
@@ -681,10 +675,9 @@ LyXFont const Paragraph::getLabelFont(BufferParams const & bparams) const
LyXFont const Paragraph::getLayoutFont(BufferParams const & bparams) const
{
- LyXLayout const & lout =
- textclasslist[bparams.textclass][layout()];
+ LyXLayout_ptr const & lout = layout();
- LyXFont tmpfont = lout.font;
+ LyXFont tmpfont = lout->font;
tmpfont.setLanguage(getParLanguage(bparams));
return pimpl_->realizeFont(tmpfont, bparams);
@@ -877,8 +870,7 @@ void Paragraph::breakParagraph(BufferParams const & bparams,
{
// create a new paragraph
Paragraph * tmp = new Paragraph(this);
- tmp->layout(textclasslist[bparams.textclass].defaultLayoutName());
-
+ tmp->layout(textclasslist[bparams.textclass].defaultLayout());
// remember to set the inset_owner
tmp->setInsetOwner(inInset());
@@ -891,8 +883,8 @@ void Paragraph::breakParagraph(BufferParams const & bparams,
tmp->setLabelWidthString(params().labelWidthString());
}
- bool isempty = (textclasslist[bparams.textclass][layout()].keepempty &&
- !size());
+ bool isempty = (layout()->keepempty && !size());
+
if (!isempty && (size() > pos || !size() || flag == 2)) {
tmp->layout(layout());
tmp->params().align(params().align());
@@ -932,7 +924,8 @@ void Paragraph::breakParagraph(BufferParams const & bparams,
bibkey = 0;
params().clear();
- layout(textclasslist[bparams.textclass].defaultLayoutName());
+
+ layout(textclasslist[bparams.textclass].defaultLayout());
// layout stays the same with latex-environments
if (flag) {
@@ -952,9 +945,9 @@ void Paragraph::makeSameLayout(Paragraph const * par)
}
-int Paragraph::stripLeadingSpaces(lyx::textclass_type tclass)
+int Paragraph::stripLeadingSpaces()
{
- if (textclasslist[tclass][layout()].free_spacing ||
+ if (layout()->free_spacing ||
isFreeSpacing()) {
return 0;
}
@@ -1037,14 +1030,14 @@ void Paragraph::pasteParagraph(BufferParams const & bparams)
}
-int Paragraph::getEndLabel(BufferParams const & bparams) const
+int Paragraph::getEndLabel() const
{
Paragraph const * par = this;
depth_type par_depth = getDepth();
while (par) {
- string const & layout = par->layout();
- int const endlabeltype =
- textclasslist[bparams.textclass][layout].endlabeltype;
+ LyXLayout_ptr const & layout = par->layout();
+ int const endlabeltype = layout->endlabeltype;
+
if (endlabeltype != END_LABEL_NO_LABEL) {
if (!next_)
return endlabeltype;
@@ -1072,9 +1065,9 @@ Paragraph::depth_type Paragraph::getDepth() const
}
-Paragraph::depth_type Paragraph::getMaxDepthAfter(Buffer const * buffer) const
+Paragraph::depth_type Paragraph::getMaxDepthAfter() const
{
- bool const isenv = textclasslist[buffer->params.textclass][layout()].isEnvironment();
+ bool const isenv = layout()->isEnvironment();
if (isenv)
return params().depth() + 1;
@@ -1117,7 +1110,7 @@ void Paragraph::setLabelWidthString(string const & s)
}
-void Paragraph::applyLayout(string const & new_layout)
+void Paragraph::applyLayout(LyXLayout_ptr const & new_layout)
{
layout(new_layout);
params().labelWidthString(string());
@@ -1254,14 +1247,14 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
lyxerr[Debug::LATEX] << "TeXOnePar... " << this << endl;
Inset const * in = inInset();
bool further_blank_line = false;
- LyXLayout style;
+ LyXLayout_ptr style;
// well we have to check if we are in an inset with unlimited
// lenght (all in one row) if that is true then we don't allow
// any special options in the paragraph and also we don't allow
// any environment other then "Standard" to be valid!
if ((in == 0) || !in->forceDefaultParagraphs(in)) {
- style = textclasslist[bparams.textclass][layout()];
+ style = layout();
if (params().startOfAppendix()) {
os << "\\appendix\n";
@@ -1274,7 +1267,7 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
texrow.newline();
}
- if (tex_code_break_column && style.isCommand()) {
+ if (tex_code_break_column && style->isCommand()) {
os << '\n';
texrow.newline();
}
@@ -1309,7 +1302,7 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
if (language->babel() != previous_language->babel()
// check if we already put language command in TeXEnvironment()
- && !(style.isEnvironment()
+ && !(style->isEnvironment()
&& (!previous() || previous()->layout() != layout() ||
previous()->params().depth() != params().depth())))
{
@@ -1340,11 +1333,11 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
texrow.newline();
}
- switch (style.latextype) {
+ switch (style->latextype) {
case LATEX_COMMAND:
os << '\\'
- << style.latexname()
- << style.latexparam();
+ << style->latexname()
+ << style->latexparam();
break;
case LATEX_ITEM_ENVIRONMENT:
if (bibkey) {
@@ -1374,9 +1367,9 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
(size() == 0
? getLayoutFont(bparams) : getFont(bparams, size() - 1));
- bool is_command = style.isCommand();
+ bool is_command = style->isCommand();
- if (style.resfont.size() != font.size() && next_ && !is_command) {
+ if (style->resfont.size() != font.size() && next_ && !is_command) {
if (!need_par)
os << "{";
os << "\\" << font.latexSize() << " \\par}";
@@ -1385,7 +1378,7 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
} else if (is_command)
os << "}";
- switch (style.latextype) {
+ switch (style->latextype) {
case LATEX_ITEM_ENVIRONMENT:
case LATEX_LIST_ENVIRONMENT:
if (next_ && (params().depth() < next_->params().depth())) {
@@ -1559,7 +1552,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
bool return_value = false;
- LyXLayout style;
+ LyXLayout_ptr style;
// well we have to check if we are in an inset with unlimited
// lenght (all in one row) if that is true then we don't allow
@@ -1571,14 +1564,14 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
if (asdefault) {
style = textclasslist[bparams.textclass].defaultLayout();
} else {
- style = textclasslist[bparams.textclass][layout()];
+ style = layout();
}
LyXFont basefont;
// Maybe we have to create a optional argument.
pos_type main_body;
- if (style.labeltype != LABEL_MANUAL)
+ if (style->labeltype != LABEL_MANUAL)
main_body = 0;
else
main_body = beginningOfMainBody();
@@ -1593,7 +1586,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
basefont = getLayoutFont(bparams);
}
- moving_arg |= style.needprotect;
+ moving_arg |= style->needprotect;
// Which font is currently active?
LyXFont running_font(basefont);
@@ -1604,7 +1597,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
// if the paragraph is empty, the loop will not be entered at all
if (!size()) {
- if (style.isCommand()) {
+ if (style->isCommand()) {
os << '{';
++column;
}
@@ -1627,7 +1620,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
os << ']';
++column;
}
- if (style.isCommand()) {
+ if (style->isCommand()) {
os << '{';
++column;
}
@@ -1671,7 +1664,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
// Do not print the separation of the optional argument
if (i != main_body - 1) {
pimpl_->simpleTeXBlanks(os, texrow, i,
- column, font, style);
+ column, font, *style);
}
}
@@ -1689,7 +1682,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
if (c == Paragraph::META_NEWLINE) {
// newlines are handled differently here than
// the default in SimpleTeXSpecialChars().
- if (!style.newline_allowed) {
+ if (!style->newline_allowed) {
os << '\n';
} else {
if (open_font) {
@@ -1715,7 +1708,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const * buf,
os, texrow, moving_arg,
font, running_font,
basefont, open_font,
- style, i, column, c);
+ *style, i, column, c);
}
}
@@ -1826,8 +1819,7 @@ Paragraph * Paragraph::TeXEnvironment(Buffer const * buf,
{
lyxerr[Debug::LATEX] << "TeXEnvironment... " << this << endl;
- LyXLayout const & style =
- textclasslist[bparams.textclass][layout()];
+ LyXLayout_ptr const & style = layout();
Language const * language = getParLanguage(bparams);
Language const * doc_language = bparams.language;
@@ -1860,21 +1852,21 @@ Paragraph * Paragraph::TeXEnvironment(Buffer const * buf,
leftindent_open = true;
}
- if (style.isEnvironment()) {
- if (style.latextype == LATEX_LIST_ENVIRONMENT) {
- os << "\\begin{" << style.latexname() << "}{"
+ if (style->isEnvironment()) {
+ if (style->latextype == LATEX_LIST_ENVIRONMENT) {
+ os << "\\begin{" << style->latexname() << "}{"
<< params().labelWidthString() << "}\n";
- } else if (style.labeltype == LABEL_BIBLIO) {
+ } else if (style->labeltype == LABEL_BIBLIO) {
// ale970405
- os << "\\begin{" << style.latexname() << "}{"
+ os << "\\begin{" << style->latexname() << "}{"
<< bibitemWidest(buf)
<< "}\n";
- } else if (style.latextype == LATEX_ITEM_ENVIRONMENT) {
- os << "\\begin{" << style.latexname() << '}'
- << style.latexparam() << '\n';
+ } else if (style->latextype == LATEX_ITEM_ENVIRONMENT) {
+ os << "\\begin{" << style->latexname() << '}'
+ << style->latexparam() << '\n';
} else
- os << "\\begin{" << style.latexname() << '}'
- << style.latexparam() << '\n';
+ os << "\\begin{" << style->latexname() << '}'
+ << style->latexparam() << '\n';
texrow.newline();
}
Paragraph * par = this;
@@ -1882,11 +1874,12 @@ Paragraph * Paragraph::TeXEnvironment(Buffer const * buf,
par = par->TeXOnePar(buf, bparams, os, texrow, false);
if (par && par->params().depth() > params().depth()) {
- if (textclasslist[bparams.textclass][par->layout()].isParagraph()
+ if (par->layout()->isParagraph()) {
+
// Thinko!
// How to handle this? (Lgb)
//&& !suffixIs(os, "\n\n")
- ) {
+ //) {
// There should be at least one '\n' already
// but we need there to be two for Standard
// paragraphs that are depth-increment'ed to be
@@ -1907,8 +1900,8 @@ Paragraph * Paragraph::TeXEnvironment(Buffer const * buf,
&& par->params().depth() == params().depth()
&& par->params().leftIndent() == params().leftIndent());
- if (style.isEnvironment()) {
- os << "\\end{" << style.latexname() << "}\n";
+ if (style->isEnvironment()) {
+ os << "\\end{" << style->latexname() << "}\n";
texrow.newline();
}
@@ -2169,16 +2162,14 @@ void Paragraph::id(int id_arg)
}
-string const & Paragraph::layout() const
+LyXLayout_ptr const & Paragraph::layout() const
{
return layout_;
}
-void Paragraph::layout(string const & new_layout)
+void Paragraph::layout(LyXLayout_ptr const & new_layout)
{
- lyx::Assert(!new_layout.empty());
-
layout_ = new_layout;
}
diff --git a/src/paragraph.h b/src/paragraph.h
index 47b1420752..b555faa376 100644
--- a/src/paragraph.h
+++ b/src/paragraph.h
@@ -15,6 +15,7 @@
#include "LString.h"
+#include "lyxlayout_ptr_fwd.h"
#include "insets/inset.h" // Just for Inset::Code
#include "lyxfont.h" // Just for LyXFont::FONT_SIZE
#include "support/types.h"
@@ -146,7 +147,7 @@ public:
/** Check if the current paragraph is the last paragraph in a
proof environment */
- int getEndLabel(BufferParams const &) const;
+ int getEndLabel() const;
///
Inset * inInset() const;
///
@@ -164,9 +165,9 @@ public:
void clearContents();
///
- string const & layout() const;
+ LyXLayout_ptr const & layout() const;
///
- void layout(string const & new_layout);
+ void layout(LyXLayout_ptr const & new_layout);
///
void setCounter(int i, int v);
@@ -221,9 +222,9 @@ public:
/// The nesting depth of a paragraph
depth_type getDepth() const;
/// The maximal possible depth of a paragraph after this one
- depth_type getMaxDepthAfter(Buffer const *) const;
+ depth_type getMaxDepthAfter() const;
///
- void applyLayout(string const & new_layout);
+ void applyLayout(LyXLayout_ptr const & new_layout);
///
int getFirstCounter(int i) const;
///
@@ -318,7 +319,7 @@ public:
Paragraph * getParFromID(int id) const;
///
- int stripLeadingSpaces(lyx::textclass_type tclass);
+ int stripLeadingSpaces();
#ifndef NO_PEXTRA_REALLY
/* If I set a PExtra Indent on one paragraph of a ENV_LIST-TYPE
@@ -338,7 +339,7 @@ public:
ParagraphParameters const & params() const;
private:
///
- string layout_;
+ LyXLayout_ptr layout_;
public:
/** Both these definitions must be made public to keep Compaq cxx 6.5
* happy.
diff --git a/src/paragraph_pimpl.C b/src/paragraph_pimpl.C
index 4f662fe182..76355805cc 100644
--- a/src/paragraph_pimpl.C
+++ b/src/paragraph_pimpl.C
@@ -278,7 +278,7 @@ void Paragraph::Pimpl::simpleTeXBlanks(ostream & os, TexRow & texrow,
bool Paragraph::Pimpl::isTextAt(string const & str, pos_type pos)
{
pos_type const len = str.length();
-
+
// is the paragraph large enough?
if (pos + len > size())
return false;
@@ -384,7 +384,7 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const * buf,
break;
case '±': case '²': case '³':
- case '×': case '÷': case '¹':
+ case '×': case '÷': case '¹':
case '¬': case 'µ':
if ((bparams.inputenc == "latin1" ||
bparams.inputenc == "latin9") ||
@@ -544,7 +544,7 @@ Paragraph * Paragraph::Pimpl::TeXDeeper(Buffer const * buf,
Paragraph * par = owner_;
while (par && par->params().depth() == owner_->params().depth()) {
- if (textclasslist[bparams.textclass][par->layout()].isEnvironment()) {
+ if (par->layout()->isEnvironment()) {
par = par->TeXEnvironment(buf, bparams,
os, texrow);
} else {
@@ -584,7 +584,7 @@ LyXFont const Paragraph::Pimpl::realizeFont(LyXFont const & font,
while (par && par->getDepth() && !tmpfont.resolved()) {
par = par->outerHook();
if (par) {
- tmpfont.realize(tclass[par->layout()].font
+ tmpfont.realize(par->layout()->font
#ifdef INHERIT_LANGUAGE
, bparams.language
#endif
diff --git a/src/support/lyxalgo.h b/src/support/lyxalgo.h
index 60aaff7b2b..7f4fda7281 100644
--- a/src/support/lyxalgo.h
+++ b/src/support/lyxalgo.h
@@ -54,7 +54,7 @@ struct firster {
/**
- * copy elements in the given range to the output iterator
+ * copy elements in the given range to the output iterator
* if the predicate evaluates as true
*/
template
diff --git a/src/tabular.C b/src/tabular.C
index d3653e8662..eae5366071 100644
--- a/src/tabular.C
+++ b/src/tabular.C
@@ -1449,7 +1449,8 @@ void LyXTabular::OldFormatRead(BufferParams const & bp,
Paragraph * par = new Paragraph;
Paragraph * return_par = 0;
- par->layout(textclasslist[bp.textclass].defaultLayoutName());
+ par->layout(textclasslist[bp.textclass].defaultLayout());
+
string tmptok;
int pos = 0;
Paragraph::depth_type depth = 0;
@@ -2371,7 +2372,8 @@ int LyXTabular::docbookRow(Buffer const * buf, ostream & os, int row) const
}
-int LyXTabular::docbook(Buffer const * buf, ostream & os, bool mixcont) const
+int LyXTabular::docbook(Buffer const * buf, ostream & os,
+ bool /*mixcont*/) const
{
int ret = 0;
diff --git a/src/text.C b/src/text.C
index faffc5fce0..248919e886 100644
--- a/src/text.C
+++ b/src/text.C
@@ -90,10 +90,9 @@ int LyXText::workWidth(BufferView * bview, Inset * inset) const
return workWidth(bview);
}
- LyXLayout const & layout =
- textclasslist[bview->buffer()->params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
- if (layout.margintype != MARGIN_RIGHT_ADDRESS_BOX) {
+ if (layout->margintype != MARGIN_RIGHT_ADDRESS_BOX) {
// Optimization here: in most cases, the real row is
// not needed, but only the par/pos values. So we just
// construct a dummy row for leftMargin. (JMarc)
@@ -215,7 +214,7 @@ int LyXText::singleWidth(BufferView * bview, Paragraph * par,
return font_metrics::width(c, font);
} else if (IsHfillChar(c)) {
- // Because of the representation as vertical lines
+ // Because of the representation as vertical lines
return 3;
} else if (c == Paragraph::META_INSET) {
Inset * tmpinset = par->getInset(pos);
@@ -707,25 +706,25 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
LyXTextClass const & tclass =
textclasslist[bview->buffer()->params.textclass];
- LyXLayout const & layout = tclass[row->par()->layout()];
+ LyXLayout_ptr const & layout = row->par()->layout();
- string parindent = layout.parindent;
+ string parindent = layout->parindent;
int x = LYX_PAPER_MARGIN;
-
+
x += font_metrics::signedWidth(tclass.leftmargin(), tclass.defaultfont());
// this is the way, LyX handles the LaTeX-Environments.
// I have had this idea very late, so it seems to be a
// later added hack and this is true
if (!row->par()->getDepth()) {
- if (row->par()->layout() == tclass.defaultLayoutName()) {
+ if (row->par()->layout() == tclass.defaultLayout()) {
// find the previous same level paragraph
if (row->par()->previous()) {
Paragraph * newpar = row->par()
->depthHook(row->par()->getDepth());
if (newpar &&
- tclass[newpar->layout()].nextnoindent)
+ newpar->layout()->nextnoindent)
parindent.erase();
}
}
@@ -738,7 +737,7 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
// make a corresponding row. Needed to call LeftMargin()
// check wether it is a sufficent paragraph
- if (newpar && tclass[newpar->layout()].isEnvironment()) {
+ if (newpar && newpar->layout()->isEnvironment()) {
Row dummyrow;
dummyrow.par(newpar);
dummyrow.pos(newpar->size());
@@ -751,67 +750,69 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
row->par()->params().depth(0);
}
- if (newpar && row->par()->layout() == tclass.defaultLayoutName()) {
+ if (newpar && row->par()->layout() == tclass.defaultLayout()) {
if (newpar->params().noindent())
parindent.erase();
- else
- parindent = tclass[newpar->layout()].parindent;
+ else {
+ parindent = newpar->layout()->parindent;
+ }
+
}
}
LyXFont const labelfont = getLabelFont(bview->buffer(), row->par());
- switch (layout.margintype) {
+ switch (layout->margintype) {
case MARGIN_DYNAMIC:
- if (!layout.leftmargin.empty()) {
- x += font_metrics::signedWidth(layout.leftmargin,
+ if (!layout->leftmargin.empty()) {
+ x += font_metrics::signedWidth(layout->leftmargin,
tclass.defaultfont());
}
if (!row->par()->getLabelstring().empty()) {
- x += font_metrics::signedWidth(layout.labelindent,
+ x += font_metrics::signedWidth(layout->labelindent,
labelfont);
x += font_metrics::width(row->par()->getLabelstring(),
labelfont);
- x += font_metrics::width(layout.labelsep, labelfont);
+ x += font_metrics::width(layout->labelsep, labelfont);
}
break;
case MARGIN_MANUAL:
- x += font_metrics::signedWidth(layout.labelindent, labelfont);
+ x += font_metrics::signedWidth(layout->labelindent, labelfont);
if (row->pos() >= beginningOfMainBody(bview->buffer(), row->par())) {
if (!row->par()->getLabelWidthString().empty()) {
x += font_metrics::width(row->par()->getLabelWidthString(),
labelfont);
- x += font_metrics::width(layout.labelsep, labelfont);
+ x += font_metrics::width(layout->labelsep, labelfont);
}
}
break;
case MARGIN_STATIC:
- x += font_metrics::signedWidth(layout.leftmargin, tclass.defaultfont()) * 4
+ x += font_metrics::signedWidth(layout->leftmargin, tclass.defaultfont()) * 4
/ (row->par()->getDepth() + 4);
break;
case MARGIN_FIRST_DYNAMIC:
- if (layout.labeltype == LABEL_MANUAL) {
+ if (layout->labeltype == LABEL_MANUAL) {
if (row->pos() >= beginningOfMainBody(bview->buffer(), row->par())) {
- x += font_metrics::signedWidth(layout.leftmargin,
+ x += font_metrics::signedWidth(layout->leftmargin,
labelfont);
} else {
- x += font_metrics::signedWidth(layout.labelindent,
+ x += font_metrics::signedWidth(layout->labelindent,
labelfont);
}
} else if (row->pos()
// Special case to fix problems with
// theorems (JMarc)
- || (layout.labeltype == LABEL_STATIC
- && layout.latextype == LATEX_ENVIRONMENT
+ || (layout->labeltype == LABEL_STATIC
+ && layout->latextype == LATEX_ENVIRONMENT
&& ! row->par()->isFirstInSequence())) {
- x += font_metrics::signedWidth(layout.leftmargin,
+ x += font_metrics::signedWidth(layout->leftmargin,
labelfont);
- } else if (layout.labeltype != LABEL_TOP_ENVIRONMENT
- && layout.labeltype != LABEL_BIBLIO
- && layout.labeltype !=
+ } else if (layout->labeltype != LABEL_TOP_ENVIRONMENT
+ && layout->labeltype != LABEL_BIBLIO
+ && layout->labeltype !=
LABEL_CENTERED_TOP_ENVIRONMENT) {
- x += font_metrics::signedWidth(layout.labelindent,
+ x += font_metrics::signedWidth(layout->labelindent,
labelfont);
- x += font_metrics::width(layout.labelsep, labelfont);
+ x += font_metrics::width(layout->labelsep, labelfont);
x += font_metrics::width(row->par()->getLabelstring(),
labelfont);
}
@@ -835,8 +836,8 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
if (tmprow->fill() < minfill)
minfill = tmprow->fill();
}
-
- x += font_metrics::signedWidth(layout.leftmargin,
+
+ x += font_metrics::signedWidth(layout->leftmargin,
tclass.defaultfont());
x += minfill;
}
@@ -855,17 +856,17 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
LyXAlignment align; // wrong type
if (row->par()->params().align() == LYX_ALIGN_LAYOUT)
- align = layout.align;
+ align = layout->align;
else
align = row->par()->params().align();
// set the correct parindent
if (row->pos() == 0) {
- if ((layout.labeltype == LABEL_NO_LABEL
- || layout.labeltype == LABEL_TOP_ENVIRONMENT
- || layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT
- || (layout.labeltype == LABEL_STATIC
- && layout.latextype == LATEX_ENVIRONMENT
+ if ((layout->labeltype == LABEL_NO_LABEL
+ || layout->labeltype == LABEL_TOP_ENVIRONMENT
+ || layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT
+ || (layout->labeltype == LABEL_STATIC
+ && layout->latextype == LATEX_ENVIRONMENT
&& ! row->par()->isFirstInSequence()))
&& align == LYX_ALIGN_BLOCK
&& !row->par()->params().noindent()
@@ -873,12 +874,12 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
&& (!row->par()->inInset() || !row->par()->inInset()->owner() ||
(row->par()->inInset()->owner()->lyxCode() != Inset::TABULAR_CODE &&
row->par()->inInset()->owner()->lyxCode() != Inset::ERT_CODE))
- && (row->par()->layout() != tclass.defaultLayoutName() ||
+ && (row->par()->layout() != tclass.defaultLayout() ||
bview->buffer()->params.paragraph_separation ==
BufferParams::PARSEP_INDENT)) {
x += font_metrics::signedWidth(parindent,
tclass.defaultfont());
- } else if (layout.labeltype == LABEL_BIBLIO) {
+ } else if (layout->labeltype == LABEL_BIBLIO) {
// ale970405 Right width for bibitems
x += bibitemMaxWidth(bview, tclass.defaultfont());
}
@@ -897,7 +898,7 @@ int LyXText::rightMargin(Buffer const * buf, Row const * row) const
return LYX_PAPER_MARGIN;
LyXTextClass const & tclass = textclasslist[buf->params.textclass];
- LyXLayout const & layout = tclass[row->par()->layout()];
+ LyXLayout_ptr const & layout = row->par()->layout();
int x = LYX_PAPER_MARGIN
+ font_metrics::signedWidth(tclass.rightmargin(),
@@ -919,7 +920,7 @@ int LyXText::rightMargin(Buffer const * buf, Row const * row) const
// make a corresponding row. Needed to call LeftMargin()
// check wether it is a sufficent paragraph
- if (newpar && tclass[newpar->layout()].isEnvironment()) {
+ if (newpar && newpar->layout()->isEnvironment()) {
Row dummyrow;
dummyrow.par(newpar);
dummyrow.pos(0);
@@ -934,7 +935,8 @@ int LyXText::rightMargin(Buffer const * buf, Row const * row) const
}
//lyxerr << "rightmargin: " << layout->rightmargin << endl;
- x += font_metrics::signedWidth(layout.rightmargin, tclass.defaultfont())
+ x += font_metrics::signedWidth(layout->rightmargin,
+ tclass.defaultfont())
* 4 / (row->par()->getDepth() + 4);
return x;
}
@@ -942,17 +944,16 @@ int LyXText::rightMargin(Buffer const * buf, Row const * row) const
int LyXText::labelEnd(BufferView * bview, Row const * row) const
{
- if (textclasslist[bview->buffer()->params.textclass][row->par()->layout()].margintype
- == MARGIN_MANUAL) {
+ if (row->par()->layout()->margintype == MARGIN_MANUAL) {
Row tmprow;
tmprow = *row;
tmprow.pos(row->par()->size());
- // just the beginning of the main body
+ // just the beginning of the main body
return leftMargin(bview, &tmprow);
} else {
// LabelEnd is only needed,
- // if the layout fills a flushleft label.
- return 0;
+ // if the layout fills a flushleft label.
+ return 0;
}
}
@@ -975,11 +976,11 @@ LyXText::nextBreakPoint(BufferView * bview, Row const * row, int width) const
pos_type const main_body =
beginningOfMainBody(bview->buffer(), par);
- LyXLayout const & layout =
- textclasslist[bview->buffer()->params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
+
pos_type i = pos;
- if (layout.margintype == MARGIN_RIGHT_ADDRESS_BOX) {
+ if (layout->margintype == MARGIN_RIGHT_ADDRESS_BOX) {
// special code for right address boxes, only newlines count
while (i < par->size()) {
if (par->isNewline(i)) {
@@ -1012,8 +1013,8 @@ LyXText::nextBreakPoint(BufferView * bview, Row const * row, int width) const
// valid here. if not, change it to
// non-display
if (in->display() &&
- (layout.isCommand() ||
- (layout.labeltype == LABEL_MANUAL
+ (layout->isCommand() ||
+ (layout->labeltype == LABEL_MANUAL
&& i < beginningOfMainBody(bview->buffer(), par))))
{
// display istn't allowd
@@ -1051,7 +1052,7 @@ LyXText::nextBreakPoint(BufferView * bview, Row const * row, int width) const
}
++i;
if (i == main_body) {
- x += font_metrics::width(layout.labelsep,
+ x += font_metrics::width(layout->labelsep,
getLabelFont(bview->buffer(), par));
if (par->isLineSeparator(i - 1))
x-= singleWidth(bview, par, i - 1);
@@ -1094,9 +1095,7 @@ int LyXText::fill(BufferView * bview, Row * row, int paper_width) const
pos_type const last = rowLastPrintable(row);
// special handling of the right address boxes
- if (textclasslist[bview->buffer()->params.textclass][row->par()->layout()].margintype
- == MARGIN_RIGHT_ADDRESS_BOX)
- {
+ if (row->par()->layout()->margintype == MARGIN_RIGHT_ADDRESS_BOX) {
int const tmpfill = row->fill();
row->fill(0); // the minfill in MarginLeft()
w = leftMargin(bview, row);
@@ -1104,14 +1103,15 @@ int LyXText::fill(BufferView * bview, Row * row, int paper_width) const
} else
w = leftMargin(bview, row);
- LyXLayout const & layout = textclasslist[bview->buffer()->params.textclass][row->par()->layout()];
+ LyXLayout_ptr const & layout = row->par()->layout();
+
pos_type const main_body =
beginningOfMainBody(bview->buffer(), row->par());
pos_type i = row->pos();
while (i <= last) {
if (main_body > 0 && i == main_body) {
- w += font_metrics::width(layout.labelsep, getLabelFont(bview->buffer(), row->par()));
+ w += font_metrics::width(layout->labelsep, getLabelFont(bview->buffer(), row->par()));
if (row->par()->isLineSeparator(i - 1))
w -= singleWidth(bview, row->par(), i - 1);
int left_margin = labelEnd(bview, row);
@@ -1122,7 +1122,7 @@ int LyXText::fill(BufferView * bview, Row * row, int paper_width) const
++i;
}
if (main_body > 0 && main_body > last) {
- w += font_metrics::width(layout.labelsep, getLabelFont(bview->buffer(), row->par()));
+ w += font_metrics::width(layout->labelsep, getLabelFont(bview->buffer(), row->par()));
if (last >= 0 && row->par()->isLineSeparator(last))
w -= singleWidth(bview, row->par(), last);
int const left_margin = labelEnd(bview, row);
@@ -1266,8 +1266,7 @@ bool LyXText::hfillExpansion(Buffer const * buf, Row const * row_ptr,
return true;
// in some labels it does not count
- if (textclasslist[buf->params.textclass][row_ptr->par()->layout()].margintype
- != MARGIN_MANUAL
+ if (row_ptr->par()->layout()->margintype != MARGIN_MANUAL
&& pos < beginningOfMainBody(buf, row_ptr->par()))
return false;
@@ -1305,15 +1304,14 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
// ok , let us initialize the maxasc and maxdesc value.
// This depends in LaTeX of the font of the last character
// in the paragraph. The hack below is necessary because
- // of the possibility of open footnotes
+ // of the possibility of open footnotes
// Correction: only the fontsize count. The other properties
- // are taken from the layoutfont. Nicer on the screen :)
+ // are taken from the layoutfont. Nicer on the screen :)
Paragraph * par = row_ptr->par();
Paragraph * firstpar = row_ptr->par();
- LyXLayout const & layout
- = textclasslist[bview->buffer()->params.textclass][firstpar->layout()];
+ LyXLayout_ptr const & layout = firstpar->layout();
// as max get the first character of this row then it can increes but not
// decrees the height. Just some point to start with so we don't have to
@@ -1335,11 +1333,11 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
//lyxerr << "spacing_val = " << spacing_val << endl;
int maxasc = int(font_metrics::maxAscent(font) *
- layout.spacing.getValue() *
- spacing_val);
+ layout->spacing.getValue() *
+ spacing_val);
int maxdesc = int(font_metrics::maxDescent(font) *
- layout.spacing.getValue() *
- spacing_val);
+ layout->spacing.getValue() *
+ spacing_val);
pos_type const pos_end = rowLast(row_ptr);
int labeladdon = 0;
@@ -1394,13 +1392,13 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
if (bview->buffer()->params.paragraph_separation ==
BufferParams::PARSEP_SKIP)
{
- if (layout.isParagraph()
+ if (layout->isParagraph()
&& firstpar->getDepth() == 0
&& firstpar->previous())
{
maxasc += bview->buffer()->params.getDefSkip().inPixels(bview);
} else if (firstpar->previous() &&
- textclasslist[bview->buffer()->params.textclass][firstpar->previous()->layout()].isParagraph() &&
+ firstpar->previous()->layout()->isParagraph() &&
firstpar->previous()->getDepth() == 0)
{
// is it right to use defskip here too? (AS)
@@ -1427,7 +1425,7 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
// This is special code for the chapter, since the label of this
// layout is printed in an extra row
- if (layout.labeltype == LABEL_COUNTER_CHAPTER
+ if (layout->labeltype == LABEL_COUNTER_CHAPTER
&& bview->buffer()->params.secnumdepth >= 0)
{
float spacing_val = 1.0;
@@ -1438,17 +1436,17 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
}
labeladdon = int(font_metrics::maxDescent(labelfont) *
- layout.spacing.getValue() *
- spacing_val)
+ layout->spacing.getValue() *
+ spacing_val)
+ int(font_metrics::maxAscent(labelfont) *
- layout.spacing.getValue() *
+ layout->spacing.getValue() *
spacing_val);
}
// special code for the top label
- if ((layout.labeltype == LABEL_TOP_ENVIRONMENT
- || layout.labeltype == LABEL_BIBLIO
- || layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)
+ if ((layout->labeltype == LABEL_TOP_ENVIRONMENT
+ || layout->labeltype == LABEL_BIBLIO
+ || layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)
&& row_ptr->par()->isFirstInSequence()
&& !row_ptr->par()->getLabelstring().empty())
{
@@ -1461,13 +1459,13 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
labeladdon = int(
(font_metrics::maxAscent(labelfont) *
- layout.spacing.getValue() *
+ layout->spacing.getValue() *
spacing_val)
+(font_metrics::maxDescent(labelfont) *
- layout.spacing.getValue() *
+ layout->spacing.getValue() *
spacing_val)
- + layout.topsep * defaultHeight()
- + layout.labelbottomsep * defaultHeight());
+ + layout->topsep * defaultHeight()
+ + layout->labelbottomsep * defaultHeight());
}
// and now the layout spaces, for example before and after a section,
@@ -1481,17 +1479,17 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
prev->getDepth() == firstpar->getDepth() &&
prev->getLabelWidthString() == firstpar->getLabelWidthString())
{
- layoutasc = (layout.itemsep * defaultHeight());
+ layoutasc = (layout->itemsep * defaultHeight());
} else if (row_ptr->previous()) {
- tmptop = layout.topsep;
+ tmptop = layout->topsep;
if (row_ptr->previous()->par()->getDepth() >= row_ptr->par()->getDepth())
- tmptop -= textclasslist[bview->buffer()->params.textclass][row_ptr->previous()->par()->layout()].bottomsep;
+ tmptop -= row_ptr->previous()->par()->layout()->bottomsep;
if (tmptop > 0)
layoutasc = (tmptop * defaultHeight());
} else if (row_ptr->par()->params().lineTop()) {
- tmptop = layout.topsep;
+ tmptop = layout->topsep;
if (tmptop > 0)
layoutasc = (tmptop * defaultHeight());
@@ -1499,7 +1497,7 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
prev = row_ptr->par()->outerHook();
if (prev) {
- maxasc += int(textclasslist[bview->buffer()->params.textclass][prev->layout()].parsep * defaultHeight());
+ maxasc += int(prev->layout()->parsep * defaultHeight());
} else {
if (firstpar->previous() &&
firstpar->previous()->getDepth() == 0 &&
@@ -1508,7 +1506,7 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
{
// avoid parsep
} else if (firstpar->previous()) {
- maxasc += int(layout.parsep * defaultHeight());
+ maxasc += int(layout->parsep * defaultHeight());
}
}
}
@@ -1529,7 +1527,7 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
// there height depends on the font of the nearest character
if (firstpar->params().lineBottom())
maxdesc += 2 * font_metrics::ascent('x',
- getFont(bview->buffer(),
+ getFont(bview->buffer(),
par,
max(pos_type(0), par->size() - 1)));
@@ -1548,13 +1546,13 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
float unusual = 0;
if (comparepar->getDepth() > nextpar->getDepth()) {
- usual = (textclasslist[bview->buffer()->params.textclass][comparepar->layout()].bottomsep * defaultHeight());
+ usual = (comparepar->layout()->bottomsep * defaultHeight());
comparepar = comparepar->depthHook(nextpar->getDepth());
if (comparepar->layout()!= nextpar->layout()
|| nextpar->getLabelWidthString() !=
comparepar->getLabelWidthString())
{
- unusual = (textclasslist[bview->buffer()->params.textclass][comparepar->layout()].bottomsep * defaultHeight());
+ unusual = (comparepar->layout()->bottomsep * defaultHeight());
}
if (unusual > usual)
layoutdesc = unusual;
@@ -1565,7 +1563,7 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
if (comparepar->layout() != nextpar->layout()
|| nextpar->getLabelWidthString() !=
comparepar->getLabelWidthString())
- layoutdesc = int(textclasslist[bview->buffer()->params.textclass][comparepar->layout()].bottomsep * defaultHeight());
+ layoutdesc = int(comparepar->layout()->bottomsep * defaultHeight());
}
}
}
@@ -1582,7 +1580,7 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
height += row_ptr->height();
float x = 0;
- if (layout.margintype != MARGIN_RIGHT_ADDRESS_BOX) {
+ if (layout->margintype != MARGIN_RIGHT_ADDRESS_BOX) {
float dummy;
// this IS needed
row_ptr->width(maxwidth);
@@ -1602,7 +1600,7 @@ void LyXText::setHeightOfRow(BufferView * bview, Row * row_ptr) const
// Appends the implicit specified paragraph behind the specified row,
-// start at the implicit given position
+// start at the implicit given position
void LyXText::appendParagraph(BufferView * bview, Row * row) const
{
bool not_ready = true;
@@ -1675,7 +1673,7 @@ void LyXText::breakAgain(BufferView * bview, Row * row) const
not_ready = false;
}
- // set the dimensions of the row
+ // set the dimensions of the row
tmprow->fill(fill(bview, tmprow, workWidth(bview)));
setHeightOfRow(bview, tmprow);
} while (not_ready);
@@ -1692,7 +1690,7 @@ void LyXText::breakAgainOneRow(BufferView * bview, Row * row)
if (z < row->par()->size()) {
if (!row->next()
|| (row->next() && row->next()->par() != row->par())) {
- // insert a new row
+ // insert a new row
++z;
insertRow(row, row->par(), z);
row = row->next();
@@ -1727,13 +1725,13 @@ void LyXText::breakParagraph(BufferView * bview, char keep_layout)
{
LyXTextClass const & tclass =
textclasslist[bview->buffer()->params.textclass];
- LyXLayout const & layout = tclass[cursor.par()->layout()];
+ LyXLayout_ptr const & layout = cursor.par()->layout();
// this is only allowed, if the current paragraph is not empty or caption
// and if it has not the keepempty flag aktive
if ((cursor.par()->size() <= 0)
- && layout.labeltype != LABEL_SENSITIVE
- && !layout.keepempty)
+ && layout->labeltype != LABEL_SENSITIVE
+ && !layout->keepempty)
return;
setUndo(bview, Undo::FINISH, cursor.par(), cursor.par()->next());
@@ -1750,32 +1748,32 @@ void LyXText::breakParagraph(BufferView * bview, char keep_layout)
if (keep_layout)
keep_layout = 2;
else
- keep_layout = layout.isEnvironment();
+ keep_layout = layout->isEnvironment();
// we need to set this before we insert the paragraph. IMO the
// breakParagraph call should return a bool if it inserts the
// paragraph before or behind and we should react on that one
// but we can fix this in 1.3.0 (Jug 20020509)
- bool const isempty = (layout.keepempty && !cursor.par()->size());
+ bool const isempty = (layout->keepempty && !cursor.par()->size());
cursor.par()->breakParagraph(bview->buffer()->params, cursor.pos(),
keep_layout);
// well this is the caption hack since one caption is really enough
- if (layout.labeltype == LABEL_SENSITIVE) {
+ if (layout->labeltype == LABEL_SENSITIVE) {
if (!cursor.pos())
// set to standard-layout
- cursor.par()->applyLayout(tclass.defaultLayoutName());
+ cursor.par()->applyLayout(tclass.defaultLayout());
else
// set to standard-layout
- cursor.par()->next()->applyLayout(tclass.defaultLayoutName());
+ cursor.par()->next()->applyLayout(tclass.defaultLayout());
}
// if the cursor is at the beginning of a row without prior newline,
// move one row up!
// This touches only the screen-update. Otherwise we would may have
- // an empty row on the screen
+ // an empty row on the screen
if (cursor.pos() && !cursor.row()->par()->isNewline(cursor.row()->pos() - 1)
- && cursor.row()->pos() == cursor.pos())
+ && cursor.row()->pos() == cursor.pos())
{
cursorLeft(bview);
}
@@ -1785,7 +1783,7 @@ void LyXText::breakParagraph(BufferView * bview, char keep_layout)
refresh_y = cursor.y() - cursor.row()->baseline();
// Do not forget the special right address boxes
- if (layout.margintype == MARGIN_RIGHT_ADDRESS_BOX) {
+ if (layout->margintype == MARGIN_RIGHT_ADDRESS_BOX) {
while (refresh_row->previous() &&
refresh_row->previous()->par() == refresh_row->par())
{
@@ -1832,7 +1830,7 @@ void LyXText::redoParagraph(BufferView * bview) const
// insert a character, moves all the following breaks in the
-// same Paragraph one to the right and make a rebreak
+// same Paragraph one to the right and make a rebreak
void LyXText::insertChar(BufferView * bview, char c)
{
setUndo(bview, Undo::INSERT, cursor.par(), cursor.par()->next());
@@ -1840,8 +1838,7 @@ void LyXText::insertChar(BufferView * bview, char c)
// When the free-spacing option is set for the current layout,
// disable the double-space checking
- bool const freeSpacing =
- textclasslist[bview->buffer()->params.textclass][cursor.row()->par()->layout()].free_spacing ||
+ bool const freeSpacing = cursor.row()->par()->layout()->free_spacing ||
cursor.row()->par()->isFreeSpacing();
if (lyxrc.auto_number) {
@@ -1904,9 +1901,9 @@ void LyXText::insertChar(BufferView * bview, char c)
// CHECK There is a bug here! (Asger)
LyXFont realtmpfont = real_current_font;
- LyXFont rawtmpfont = current_font;
+ LyXFont rawtmpfont = current_font;
// store the current font. This is because of the use of cursor
- // movements. The moving cursor would refresh the current font
+ // movements. The moving cursor would refresh the current font
// Get the font that is used to calculate the baselineskip
pos_type const lastpos = cursor.par()->size();
@@ -2084,7 +2081,7 @@ void LyXText::insertChar(BufferView * bview, char c)
redoHeightOfParagraph(bview, cursor);
} else {
// now the special right address boxes
- if (textclasslist[bview->buffer()->params.textclass][cursor.par()->layout()].margintype
+ if (cursor.par()->layout()->margintype
== MARGIN_RIGHT_ADDRESS_BOX) {
redoDrawingOfParagraph(bview, cursor);
}
@@ -2134,11 +2131,10 @@ void LyXText::prepareToPrint(BufferView * bview,
? leftMargin(bview, row) : 0;
// is there a manual margin with a manual label
- LyXTextClass const & tclass = textclasslist[bview->buffer()->params.textclass];
- LyXLayout const & layout = tclass[row->par()->layout()];
+ LyXLayout_ptr const & layout = row->par()->layout();
- if (layout.margintype == MARGIN_MANUAL
- && layout.labeltype == LABEL_MANUAL) {
+ if (layout->margintype == MARGIN_MANUAL
+ && layout->labeltype == LABEL_MANUAL) {
// one more since labels are left aligned
nlh = numberOfLabelHfills(bview->buffer(), row) + 1;
if (nlh && !row->par()->getLabelWidthString().empty()) {
@@ -2160,7 +2156,7 @@ void LyXText::prepareToPrint(BufferView * bview,
// set x how you need it
int align;
if (row->par()->params().align() == LYX_ALIGN_LAYOUT) {
- align = layout.align;
+ align = layout->align;
} else {
align = row->par()->params().align();
}
@@ -2215,7 +2211,7 @@ void LyXText::prepareToPrint(BufferView * bview,
if (main_body > 0 &&
(main_body - 1 > last ||
!row->par()->isLineSeparator(main_body - 1))) {
- x += font_metrics::width(layout.labelsep,
+ x += font_metrics::width(layout->labelsep,
getLabelFont(bview->buffer(), row->par()));
if (main_body - 1 <= last)
x += fill_label_hfill;
@@ -2224,12 +2220,12 @@ void LyXText::prepareToPrint(BufferView * bview,
}
-// important for the screen
+// important for the screen
// the cursor set functions have a special mechanism. When they
// realize, that you left an empty paragraph, they will delete it.
-// They also delete the corresponding row
+// They also delete the corresponding row
void LyXText::cursorRightOneWord(BufferView * bview) const
{
@@ -2282,7 +2278,7 @@ void LyXText::cursorTab(BufferView * bview) const
// Skip initial whitespace at end of word and move cursor to *start*
-// of prior word, not to end of next prior word.
+// of prior word, not to end of next prior word.
void LyXText::cursorLeftOneWord(BufferView * bview) const
{
LyXCursor tmpcursor = cursor;
@@ -2320,7 +2316,7 @@ void LyXText::cursorLeftOneWord(LyXCursor & cur) const
// Select current word. This depends on behaviour of
-// CursorLeftOneWord(), so it is patched as well.
+// CursorLeftOneWord(), so it is patched as well.
void LyXText::getWord(LyXCursor & from, LyXCursor & to,
word_location const loc) const
{
@@ -2382,7 +2378,7 @@ void LyXText::selectWord(BufferView * bview, word_location const loc)
// Select the word currently under the cursor when no
-// selection is currently set
+// selection is currently set
bool LyXText::selectWordWhenUnderCursor(BufferView * bview,
word_location const loc)
{
@@ -2544,7 +2540,7 @@ void LyXText::deleteWordBackward(BufferView * bview)
}
-// Kill to end of line.
+// Kill to end of line.
void LyXText::deleteLineForward(BufferView * bview)
{
if (!cursor.par()->size())
@@ -2782,12 +2778,12 @@ void LyXText::backspace(BufferView * bview)
// because the user would be confused if the footnote behaves
// different wether it is open or closed.
- // Correction: Pasting is always allowed with standard-layout
+ // Correction: Pasting is always allowed with standard-layout
LyXTextClass const & tclass = textclasslist[bview->buffer()->params.textclass];
if (cursor.par() != tmppar
&& (cursor.par()->layout() == tmppar->layout()
- || tmppar->layout() == tclass.defaultLayoutName())
+ || tmppar->layout() == tclass.defaultLayout())
&& cursor.par()->getAlign() == tmppar->getAlign()) {
removeParagraph(tmprow);
removeRow(tmprow);
@@ -2823,7 +2819,7 @@ void LyXText::backspace(BufferView * bview)
}
} else {
// this is the code for a normal backspace, not pasting
- // any paragraphs
+ // any paragraphs
setUndo(bview, Undo::DELETE,
cursor.par(), cursor.par()->next());
// We used to do cursorLeftIntern() here, but it is
@@ -2851,7 +2847,7 @@ void LyXText::backspace(BufferView * bview)
int y = cursor.y() - row->baseline();
pos_type z;
// remember that a space at the end of a row doesnt count
- // when calculating the fill
+ // when calculating the fill
if (cursor.pos() < rowLast(row) ||
!cursor.par()->isLineSeparator(cursor.pos())) {
row->fill(row->fill() + singleWidth(bview,
@@ -2860,7 +2856,7 @@ void LyXText::backspace(BufferView * bview)
}
// some special code when deleting a newline. This is similar
- // to the behavior when pasting paragraphs
+ // to the behavior when pasting paragraphs
if (cursor.pos() && cursor.par()->isNewline(cursor.pos())) {
cursor.par()->erase(cursor.pos());
// refresh the positions
@@ -2963,7 +2959,7 @@ void LyXText::backspace(BufferView * bview)
// it can happen that a paragraph loses one row
// without a real breakup. This is when a word
// is to long to be broken. Well, I don t care this
- // hack ;-)
+ // hack ;-)
if (rowLast(row) == row->par()->size() - 1)
removeRow(row->next());
@@ -3018,9 +3014,8 @@ void LyXText::backspace(BufferView * bview)
redoHeightOfParagraph(bview, cursor);
} else {
// now the special right address boxes
- if (textclasslist
- [bview->buffer()->params.textclass]
- [cursor.par()->layout()].margintype == MARGIN_RIGHT_ADDRESS_BOX) {
+ if (cursor.par()->layout()->margintype
+ == MARGIN_RIGHT_ADDRESS_BOX) {
redoDrawingOfParagraph(bview, cursor);
}
}
@@ -3153,13 +3148,10 @@ void LyXText::paintRowSelection(DrawRowParams & p)
pos_type pos = vis2log(vpos);
float const old_tmpx = tmpx;
if (main_body > 0 && pos == main_body - 1) {
- LyXLayout const & layout =
- textclasslist
- [buffer->params.textclass]
- [par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
LyXFont const lfont = getLabelFont(buffer, par);
- tmpx += p.label_hfill + font_metrics::width(layout.labelsep, lfont);
+ tmpx += p.label_hfill + font_metrics::width(layout->labelsep, lfont);
if (par->isLineSeparator(main_body - 1))
tmpx -= singleWidth(p.bv, par, main_body - 1);
@@ -3376,20 +3368,19 @@ void LyXText::paintFirstRow(DrawRowParams & p)
Buffer const * buffer = p.bv->buffer();
- LyXTextClass const & tclass = textclasslist[buffer->params.textclass];
- LyXLayout const & layout = tclass[par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
// think about the parskip
// some parskips VERY EASY IMPLEMENTATION
if (buffer->params.paragraph_separation == BufferParams::PARSEP_SKIP) {
if (par->previous()) {
- if (layout.latextype == LATEX_PARAGRAPH
+ if (layout->latextype == LATEX_PARAGRAPH
&& !par->getDepth()) {
y_top += buffer->params.getDefSkip().inPixels(p.bv);
} else {
- LyXLayout const & playout =
- tclass[par->previous()->layout()];
- if (playout.latextype == LATEX_PARAGRAPH
+ LyXLayout_ptr const & playout =
+ par->previous()->layout();
+ if (playout->latextype == LATEX_PARAGRAPH
&& !par->previous()->getDepth()) {
// is it right to use defskip here, too? (AS)
y_top += buffer->params.getDefSkip().inPixels(p.bv);
@@ -3419,9 +3410,9 @@ void LyXText::paintFirstRow(DrawRowParams & p)
bool const is_rtl = p.row->par()->isRightToLeftPar(p.bv->buffer()->params);
// should we print a label?
- if (layout.labeltype >= LABEL_STATIC
- && (layout.labeltype != LABEL_STATIC
- || layout.latextype != LATEX_ENVIRONMENT
+ if (layout->labeltype >= LABEL_STATIC
+ && (layout->labeltype != LABEL_STATIC
+ || layout->latextype != LATEX_ENVIRONMENT
|| par->isFirstInSequence())) {
LyXFont font = getLabelFont(buffer, par);
@@ -3432,7 +3423,7 @@ void LyXText::paintFirstRow(DrawRowParams & p)
// this is special code for the chapter layout. This is
// printed in an extra row and has a pagebreak at
// the top.
- if (layout.labeltype == LABEL_COUNTER_CHAPTER) {
+ if (layout->labeltype == LABEL_COUNTER_CHAPTER) {
if (buffer->params.secnumdepth >= 0) {
float spacing_val = 1.0;
if (!parparams.spacing().isDefault()) {
@@ -3442,8 +3433,8 @@ void LyXText::paintFirstRow(DrawRowParams & p)
}
int const maxdesc =
- int(font_metrics::maxDescent(font) * layout.spacing.getValue() * spacing_val)
- + int(layout.parsep) * defaultHeight();
+ int(font_metrics::maxDescent(font) * layout->spacing.getValue() * spacing_val)
+ + int(layout->parsep) * defaultHeight();
if (is_rtl) {
x = ww - leftMargin(p.bv, p.row) -
@@ -3458,9 +3449,9 @@ void LyXText::paintFirstRow(DrawRowParams & p)
} else {
if (is_rtl) {
x = ww - leftMargin(p.bv, p.row)
- + font_metrics::width(layout.labelsep, font);
+ + font_metrics::width(layout->labelsep, font);
} else {
- x = p.x - font_metrics::width(layout.labelsep, font)
+ x = p.x - font_metrics::width(layout->labelsep, font)
- font_metrics::width(str, font);
}
@@ -3470,9 +3461,9 @@ void LyXText::paintFirstRow(DrawRowParams & p)
// the labels at the top of an environment.
// More or less for bibliography
} else if (par->isFirstInSequence() &&
- (layout.labeltype == LABEL_TOP_ENVIRONMENT ||
- layout.labeltype == LABEL_BIBLIO ||
- layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)) {
+ (layout->labeltype == LABEL_TOP_ENVIRONMENT ||
+ layout->labeltype == LABEL_BIBLIO ||
+ layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT)) {
LyXFont font = getLabelFont(buffer, par);
if (!par->getLabelstring().empty()) {
string const str = par->getLabelstring();
@@ -3484,11 +3475,11 @@ void LyXText::paintFirstRow(DrawRowParams & p)
}
int maxdesc =
- int(font_metrics::maxDescent(font) * layout.spacing.getValue() * spacing_val
- + (layout.labelbottomsep * defaultHeight()));
+ int(font_metrics::maxDescent(font) * layout->spacing.getValue() * spacing_val
+ + (layout->labelbottomsep * defaultHeight()));
float x = p.x;
- if (layout.labeltype == LABEL_CENTERED_TOP_ENVIRONMENT) {
+ if (layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT) {
x = ((is_rtl ? leftMargin(p.bv, p.row) : p.x)
+ ww - rightMargin(buffer, p.row)) / 2;
x -= font_metrics::width(str, font) / 2;
@@ -3502,14 +3493,14 @@ void LyXText::paintFirstRow(DrawRowParams & p)
}
}
- if (layout.labeltype == LABEL_BIBLIO && par->bibkey) {
+ if (layout->labeltype == LABEL_BIBLIO && par->bibkey) {
LyXFont font = getLayoutFont(buffer, par);
float x;
if (is_rtl) {
x = ww - leftMargin(p.bv, p.row)
- + font_metrics::width(layout.labelsep, font);
+ + font_metrics::width(layout->labelsep, font);
} else {
- x = p.x - font_metrics::width(layout.labelsep, font)
+ x = p.x - font_metrics::width(layout->labelsep, font)
- par->bibkey->width(p.bv, font);
}
par->bibkey->draw(p.bv, font, p.yo + p.row->baseline(), x, p.cleared);
@@ -3577,7 +3568,7 @@ void LyXText::paintLastRow(DrawRowParams & p)
}
bool const is_rtl = p.row->par()->isRightToLeftPar(p.bv->buffer()->params);
- int const endlabel = par->getEndLabel(buffer->params);
+ int const endlabel = par->getEndLabel();
// draw an endlabel
switch (endlabel) {
@@ -3602,10 +3593,13 @@ void LyXText::paintLastRow(DrawRowParams & p)
}
case END_LABEL_STATIC:
{
+#if 0
LyXFont font(LyXFont::ALL_SANE);
- string const & layout = par->layout();
- string const str = textclasslist[buffer->params.textclass][layout].endlabelstring();
font = getLabelFont(buffer, par);
+#else
+ LyXFont font = getLabelFont(buffer, par);
+#endif
+ string const & str = par->layout()->endlabelstring();
int const x = is_rtl ?
int(p.x) - font_metrics::width(str, font)
: ww - rightMargin(buffer, p.row) - p.row->fill();
@@ -3631,8 +3625,7 @@ void LyXText::paintRowText(DrawRowParams & p)
main_body = 0;
}
- LyXLayout const & layout =
- textclasslist[buffer->params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
pos_type vpos = p.row->pos();
while (vpos <= last) {
@@ -3645,7 +3638,7 @@ void LyXText::paintRowText(DrawRowParams & p)
continue;
}
if (main_body > 0 && pos == main_body - 1) {
- int const lwidth = font_metrics::width(layout.labelsep,
+ int const lwidth = font_metrics::width(layout->labelsep,
getLabelFont(buffer, par));
p.x += p.label_hfill + lwidth
@@ -3756,12 +3749,12 @@ int LyXText::defaultHeight() const
{
LyXFont font(LyXFont::ALL_SANE);
return int(font_metrics::maxAscent(font)
- + font_metrics::maxDescent(font) * 1.5);
+ + font_metrics::maxDescent(font) * 1.5);
}
// returns the column near the specified x-coordinate of the row
-// x is set to the real beginning of this column
+// x is set to the real beginning of this column
pos_type
LyXText::getColumnNearX(BufferView * bview, Row * row, int & x,
bool & boundary) const
@@ -3777,9 +3770,9 @@ LyXText::getColumnNearX(BufferView * bview, Row * row, int & x,
pos_type vc = row->pos();
pos_type last = rowLastPrintable(row);
pos_type c = 0;
- LyXLayout const & layout =
- textclasslist[bview->buffer()->params.textclass][
- row->par()->layout()];
+
+ LyXLayout_ptr const & layout = row->par()->layout();
+
bool left_side = false;
pos_type main_body = beginningOfMainBody(bview->buffer(), row->par());
@@ -3795,7 +3788,7 @@ LyXText::getColumnNearX(BufferView * bview, Row * row, int & x,
last_tmpx = tmpx;
if (main_body > 0 && c == main_body-1) {
tmpx += fill_label_hfill +
- font_metrics::width(layout.labelsep,
+ font_metrics::width(layout->labelsep,
getLabelFont(bview->buffer(), row->par()));
if (row->par()->isLineSeparator(main_body - 1))
tmpx -= singleWidth(bview, row->par(), main_body-1);
@@ -3927,17 +3920,10 @@ Row * LyXText::getRowNearY(int & y) const
if (y < tmpy) {
lyxerr << "up" << endl;
-#if 0
- while (tmprow && tmpy - tmprow->height() >= y) {
- tmpy -= tmprow->height();
- tmprow = tmprow->previous();
- }
-#else
do {
tmpy -= tmprow->height();
tmprow = tmprow->previous();
} while (tmprow && tmpy - tmprow->height() >= y);
-#endif
} else if (y > tmpy) {
lyxerr << "down" << endl;
diff --git a/src/text2.C b/src/text2.C
index e8d347f012..80c9a487cb 100644
--- a/src/text2.C
+++ b/src/text2.C
@@ -128,12 +128,11 @@ LyXFont const realizeFont(LyXFont const & font,
par = par->outerHook();
if (par) {
#ifndef INHERIT_LANGUAGE
- tmpfont.realize(textclasslist[buf->params.textclass][
- par->layout()].font);
+ tmpfont.realize(par->layout()->font);
#else
tmpfont.realize(textclasslist.
Style(buf->params.textclass,
- par->layout()).font,
+ par->layout())->font,
buf->params.language);
#endif
par_depth = par->getDepth();
@@ -165,20 +164,19 @@ LyXFont const LyXText::getFont(Buffer const * buf, Paragraph * par,
{
lyx::Assert(pos >= 0);
- LyXLayout const & layout =
- textclasslist[buf->params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
Paragraph::depth_type par_depth = par->getDepth();
// We specialize the 95% common case:
if (!par_depth) {
- if (layout.labeltype == LABEL_MANUAL
+ if (layout->labeltype == LABEL_MANUAL
&& pos < beginningOfMainBody(buf, par)) {
// 1% goes here
LyXFont f = par->getFontSettings(buf->params, pos);
if (par->inInset())
par->inInset()->getDrawFont(f);
#ifndef INHERIT_LANGUAGE
- return f.realize(layout.reslabelfont);
+ return f.realize(layout->reslabelfont);
#else
return f.realize(layout.reslabelfont, buf->params.language);
#endif
@@ -187,7 +185,7 @@ LyXFont const LyXText::getFont(Buffer const * buf, Paragraph * par,
if (par->inInset())
par->inInset()->getDrawFont(f);
#ifndef INHERIT_LANGUAGE
- return f.realize(layout.resfont);
+ return f.realize(layout->resfont);
#else
return f.realize(layout.resfont, buf->params.language);
#endif
@@ -200,10 +198,10 @@ LyXFont const LyXText::getFont(Buffer const * buf, Paragraph * par,
if (pos < beginningOfMainBody(buf, par)) {
// 1% goes here
- layoutfont = layout.labelfont;
+ layoutfont = layout->labelfont;
} else {
// 99% goes here
- layoutfont = layout.font;
+ layoutfont = layout->font;
}
LyXFont tmpfont = par->getFontSettings(buf->params, pos);
@@ -221,31 +219,29 @@ LyXFont const LyXText::getFont(Buffer const * buf, Paragraph * par,
LyXFont const LyXText::getLayoutFont(Buffer const * buf, Paragraph * par) const
{
- LyXLayout const & layout =
- textclasslist[buf->params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
Paragraph::depth_type par_depth = par->getDepth();
if (!par_depth) {
- return layout.resfont;
+ return layout->resfont;
}
- return realizeFont(layout.font, buf, par);
+ return realizeFont(layout->font, buf, par);
}
LyXFont const LyXText::getLabelFont(Buffer const * buf, Paragraph * par) const
{
- LyXLayout const & layout =
- textclasslist[buf->params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
Paragraph::depth_type par_depth = par->getDepth();
if (!par_depth) {
- return layout.reslabelfont;
+ return layout->reslabelfont;
}
- return realizeFont(layout.labelfont, buf, par);
+ return realizeFont(layout->labelfont, buf, par);
}
@@ -277,15 +273,15 @@ void LyXText::setCharFont(Buffer const * buf, Paragraph * par,
LyXFont font(fnt);
LyXTextClass const & tclass = textclasslist[buf->params.textclass];
- LyXLayout const & layout = tclass[par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
// Get concrete layout font to reduce against
LyXFont layoutfont;
if (pos < beginningOfMainBody(buf, par))
- layoutfont = layout.labelfont;
+ layoutfont = layout->labelfont;
else
- layoutfont = layout.font;
+ layoutfont = layout->font;
// Realize against environment font information
if (par->getDepth()) {
@@ -294,7 +290,7 @@ void LyXText::setCharFont(Buffer const * buf, Paragraph * par,
tp = tp->outerHook();
if (tp)
#ifndef INHERIT_LANGUAGE
- layoutfont.realize(tclass[tp->layout()].font);
+ layoutfont.realize(tp->layout()->font);
#else
layoutfont.realize(textclasslist.
Style(buf->params.textclass,
@@ -460,15 +456,14 @@ void LyXText::toggleInset(BufferView * bview)
void LyXText::makeFontEntriesLayoutSpecific(Buffer const * buf,
Paragraph * par)
{
- LyXLayout const & layout =
- textclasslist[buf->params.textclass][par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
LyXFont layoutfont;
for (pos_type pos = 0; pos < par->size(); ++pos) {
if (pos < beginningOfMainBody(buf, par))
- layoutfont = layout.labelfont;
+ layoutfont = layout->labelfont;
else
- layoutfont = layout.font;
+ layoutfont = layout->font;
LyXFont tmpfont = par->getFontSettings(buf->params, pos);
tmpfont.reduce(layoutfont);
@@ -502,22 +497,22 @@ Paragraph * LyXText::setLayout(BufferView * bview,
Paragraph * par = sstart_cur.par();
Paragraph * epar = send_cur.par()->next();
- LyXLayout const & lyxlayout =
+ LyXLayout_ptr const & lyxlayout =
textclasslist[bview->buffer()->params.textclass][layout];
do {
- par->applyLayout(layout);
+ par->applyLayout(lyxlayout);
makeFontEntriesLayoutSpecific(bview->buffer(), par);
Paragraph * fppar = par;
- fppar->params().spaceTop(lyxlayout.fill_top ?
+ fppar->params().spaceTop(lyxlayout->fill_top ?
VSpace(VSpace::VFILL)
: VSpace(VSpace::NONE));
- fppar->params().spaceBottom(lyxlayout.fill_bottom ?
+ fppar->params().spaceBottom(lyxlayout->fill_bottom ?
VSpace(VSpace::VFILL)
: VSpace(VSpace::NONE));
- if (lyxlayout.margintype == MARGIN_MANUAL)
- par->setLabelWidthString(lyxlayout.labelstring());
- if (lyxlayout.labeltype != LABEL_BIBLIO
+ if (lyxlayout->margintype == MARGIN_MANUAL)
+ par->setLabelWidthString(lyxlayout->labelstring());
+ if (lyxlayout->labeltype != LABEL_BIBLIO
&& fppar->bibkey) {
delete fppar->bibkey;
fppar->bibkey = 0;
@@ -593,17 +588,14 @@ void LyXText::incDepth(BufferView * bview)
bool anything_changed = false;
- LyXTextClass const & tclass =
- textclasslist[bview->buffer()->params.textclass];
-
while (true) {
// NOTE: you can't change the depth of a bibliography entry
- if (tclass[cursor.par()->layout()].labeltype != LABEL_BIBLIO) {
+ if (cursor.par()->layout()->labeltype != LABEL_BIBLIO) {
Paragraph * prev = cursor.par()->previous();
if (prev) {
if (cursor.par()->getDepth()
- < prev->getMaxDepthAfter(bview->buffer())){
+ < prev->getMaxDepthAfter()) {
cursor.par()->params().depth(cursor.par()->getDepth() + 1);
anything_changed = true;
}
@@ -917,7 +909,7 @@ void LyXText::fullRebreak(BufferView * bview)
// the cursor set functions have a special mechanism. When they
// realize, that you left an empty paragraph, they will delete it.
-// They also delete the corresponding row
+// They also delete the corresponding row
// need the selection cursor:
void LyXText::setSelection(BufferView * bview)
@@ -1136,11 +1128,10 @@ string LyXText::getStringToIndex(BufferView * bview)
}
-pos_type LyXText::beginningOfMainBody(Buffer const * buf,
+pos_type LyXText::beginningOfMainBody(Buffer const * /*buf*/,
Paragraph const * par) const
{
- if (textclasslist[buf->params.textclass][
- par->layout()].labeltype != LABEL_MANUAL)
+ if (par->layout()->labeltype != LABEL_MANUAL)
return 0;
else
return par->beginningOfMainBody();
@@ -1188,8 +1179,6 @@ void LyXText::setParagraph(BufferView * bview,
Paragraph * tmppar = selection.end.par();
- LyXTextClass const & tclass =
- textclasslist[bview->buffer()->params.textclass];
while (tmppar != selection.start.par()->previous()) {
setCursor(bview, tmppar, 0);
@@ -1204,12 +1193,12 @@ void LyXText::setParagraph(BufferView * bview,
cursor.par()->params().spaceBottom(space_bottom);
cursor.par()->params().spacing(spacing);
// does the layout allow the new alignment?
- LyXLayout const & layout = tclass[cursor.par()->layout()];
+ LyXLayout_ptr const & layout = cursor.par()->layout();
if (align == LYX_ALIGN_LAYOUT)
- align = layout.align;
- if (align & layout.alignpossible) {
- if (align == layout.align)
+ align = layout->align;
+ if (align & layout->alignpossible) {
+ if (align == layout->align)
cursor.par()->params().align(LYX_ALIGN_LAYOUT);
else
cursor.par()->params().align(align);
@@ -1290,8 +1279,7 @@ string const romanCounter(int n)
void LyXText::setCounter(Buffer const * buf, Paragraph * par) const
{
LyXTextClass const & textclass = textclasslist[buf->params.textclass];
- LyXLayout const & layout = textclass[par->layout()];
-
+ LyXLayout_ptr const & layout = par->layout();
// copy the prev-counters to this one,
// unless this is the first paragraph
@@ -1326,16 +1314,16 @@ void LyXText::setCounter(Buffer const * buf, Paragraph * par) const
*/
if (par->previous()
&& par->previous()->getDepth() < par->getDepth()
- && textclass[par->previous()->layout()].labeltype == LABEL_COUNTER_ENUMI
+ && par->previous()->layout()->labeltype == LABEL_COUNTER_ENUMI
&& par->enumdepth < 3
- && layout.labeltype != LABEL_BIBLIO) {
+ && layout->labeltype != LABEL_BIBLIO) {
par->enumdepth++;
}
// Maybe we have to decrement the enumeration depth, see note above
if (par->previous()
&& par->previous()->getDepth() > par->getDepth()
- && layout.labeltype != LABEL_BIBLIO) {
+ && layout->labeltype != LABEL_BIBLIO) {
par->enumdepth = par->depthHook(par->getDepth())->enumdepth;
par->setCounter(6 + par->enumdepth,
par->depthHook(par->getDepth())->getCounter(6 + par->enumdepth));
@@ -1348,30 +1336,30 @@ void LyXText::setCounter(Buffer const * buf, Paragraph * par) const
par->params().labelString(string());
}
- if (layout.margintype == MARGIN_MANUAL) {
+ if (layout->margintype == MARGIN_MANUAL) {
if (par->params().labelWidthString().empty()) {
- par->setLabelWidthString(layout.labelstring());
+ par->setLabelWidthString(layout->labelstring());
}
} else {
par->setLabelWidthString(string());
}
// is it a layout that has an automatic label?
- if (layout.labeltype >= LABEL_COUNTER_CHAPTER) {
+ if (layout->labeltype >= LABEL_COUNTER_CHAPTER) {
- int i = layout.labeltype - LABEL_COUNTER_CHAPTER;
+ int i = layout->labeltype - LABEL_COUNTER_CHAPTER;
if (i >= 0 && i<= buf->params.secnumdepth) {
par->incCounter(i); // increment the counter
// Is there a label? Useful for Chapter layout
if (!par->params().appendix()) {
- if (!layout.labelstring().empty())
- par->params().labelString(layout.labelstring());
+ if (!layout->labelstring().empty())
+ par->params().labelString(layout->labelstring());
else
par->params().labelString(string());
} else {
- if (!layout.labelstring_appendix().empty())
- par->params().labelString(layout.labelstring_appendix());
+ if (!layout->labelstring_appendix().empty())
+ par->params().labelString(layout->labelstring_appendix());
else
par->params().labelString(string());
}
@@ -1509,12 +1497,12 @@ void LyXText::setCounter(Buffer const * buf, Paragraph * par) const
// reset the following counters
par->setCounter(i, 0);
}
- } else if (layout.labeltype < LABEL_COUNTER_ENUMI) {
+ } else if (layout->labeltype < LABEL_COUNTER_ENUMI) {
for (i++; i < 10; ++i) {
// reset the following counters
par->setCounter(i, 0);
}
- } else if (layout.labeltype == LABEL_COUNTER_ENUMI) {
+ } else if (layout->labeltype == LABEL_COUNTER_ENUMI) {
par->incCounter(i + par->enumdepth);
int number = par->getCounter(i + par->enumdepth);
@@ -1561,7 +1549,7 @@ void LyXText::setCounter(Buffer const * buf, Paragraph * par) const
}
}
- } else if (layout.labeltype == LABEL_BIBLIO) {// ale970302
+ } else if (layout->labeltype == LABEL_BIBLIO) {// ale970302
int i = LABEL_COUNTER_ENUMI - LABEL_COUNTER_CHAPTER + par->enumdepth;
par->incCounter(i);
int number = par->getCounter(i);
@@ -1570,14 +1558,14 @@ void LyXText::setCounter(Buffer const * buf, Paragraph * par) const
par->bibkey = new InsetBibKey(p);
}
par->bibkey->setCounter(number);
- par->params().labelString(layout.labelstring());
+ par->params().labelString(layout->labelstring());
// In biblio should't be following counters but...
} else {
- string s = layout.labelstring();
+ string s = layout->labelstring();
// the caption hack:
- if (layout.labeltype == LABEL_SENSITIVE) {
+ if (layout->labeltype == LABEL_SENSITIVE) {
bool isOK (par->inInset() && par->inInset()->owner() &&
(par->inInset()->owner()->lyxCode() == Inset::FLOAT_CODE));
@@ -1625,12 +1613,10 @@ void LyXText::updateCounters(BufferView * bview, Row * row) const
// now check for the headline layouts. remember that they
// have a dynamic left margin
- LyXTextClass const & tclass =
- textclasslist[bview->buffer()->params.textclass];
- LyXLayout const & layout = tclass[par->layout()];
+ LyXLayout_ptr const & layout = par->layout();
- if (layout.margintype == MARGIN_DYNAMIC
- || layout.labeltype == LABEL_SENSITIVE) {
+ if (layout->margintype == MARGIN_DYNAMIC
+ || layout->labeltype == LABEL_SENSITIVE) {
// Rebreak the paragraph
removeParagraph(row);
appendParagraph(bview, row);
@@ -1664,7 +1650,7 @@ void LyXText::insertInset(BufferView * bview, Inset * inset)
void LyXText::copyEnvironmentType()
{
- copylayouttype = cursor.par()->layout();
+ copylayouttype = cursor.par()->layout()->name();
}
@@ -1736,7 +1722,7 @@ void LyXText::cutSelection(BufferView * bview, bool doclear, bool realcut)
// sometimes necessary
if (doclear)
- selection.start.par()->stripLeadingSpaces(bview->buffer()->params.textclass);
+ selection.start.par()->stripLeadingSpaces();
redoParagraphs(bview, selection.start, endpar);
@@ -1971,10 +1957,7 @@ void LyXText::checkParagraph(BufferView * bview, Paragraph * par,
status(bview, LyXText::NEED_MORE_REFRESH);
// check the special right address boxes
- if (textclasslist[bview->buffer()->params.textclass][
- par->layout()].margintype
- == MARGIN_RIGHT_ADDRESS_BOX)
- {
+ if (par->layout()->margintype == MARGIN_RIGHT_ADDRESS_BOX) {
tmpcursor.par(par);
tmpcursor.row(row);
tmpcursor.y(y);
@@ -2143,13 +2126,13 @@ float LyXText::getCursorX(BufferView * bview, Row * row,
pos_type pos = vis2log(vpos);
if (main_body > 0 && pos == main_body - 1) {
x += fill_label_hfill +
- font_metrics::width(textclasslist[
- bview->buffer()->params.textclass][
- row->par()->layout()]
- .labelsep,
- getLabelFont(bview->buffer(), row->par()));
- if (row->par()->isLineSeparator(main_body-1))
- x -= singleWidth(bview, row->par(),main_body-1);
+ font_metrics::width(
+ row->par()->layout()->labelsep,
+ getLabelFont(bview->buffer(),
+ row->par()));
+ if (row->par()->isLineSeparator(main_body - 1))
+ x -= singleWidth(bview,
+ row->par(), main_body - 1);
}
if (hfillExpansion(bview->buffer(), row, pos)) {
x += singleWidth(bview, row->par(), pos);
@@ -2419,10 +2402,8 @@ bool LyXText::deleteEmptyParagraphMechanism(BufferView * bview,
return false;
// We allow all kinds of "mumbo-jumbo" when freespacing.
- if (textclasslist[bview->buffer()->params.textclass][
- old_cursor.par()->layout()].free_spacing
- || old_cursor.par()->isFreeSpacing())
- {
+ if (old_cursor.par()->layout()->free_spacing
+ || old_cursor.par()->isFreeSpacing()) {
return false;
}
@@ -2488,9 +2469,7 @@ bool LyXText::deleteEmptyParagraphMechanism(BufferView * bview,
return false;
// Do not delete empty paragraphs with keepempty set.
- if (textclasslist
- [bview->buffer()->params.textclass]
- [old_cursor.par()->layout()].keepempty)
+ if (old_cursor.par()->layout()->keepempty)
return false;
// only do our magic if we changed paragraph
@@ -2586,7 +2565,7 @@ bool LyXText::deleteEmptyParagraphMechanism(BufferView * bview,
}
}
if (!deleted) {
- if (old_cursor.par()->stripLeadingSpaces(bview->buffer()->params.textclass)) {
+ if (old_cursor.par()->stripLeadingSpaces()) {
redoParagraphs(bview, old_cursor,
old_cursor.par()->next());
// correct cursor y
diff --git a/src/undo_funcs.C b/src/undo_funcs.C
index 577293af30..49ad788a2c 100644
--- a/src/undo_funcs.C
+++ b/src/undo_funcs.C
@@ -43,7 +43,7 @@ LyXCursor const & undoCursor(BufferView * bv)
return bv->theLockingInset()->cursor(bv);
return bv->text->cursor;
}
-
+
/**
* returns a pointer to the very first Paragraph depending of where we are
* so it will return the first paragraph of the buffer or the first paragraph
@@ -73,13 +73,13 @@ void finishNoUndo(BufferView * bv)
bv->text->status(bv, LyXText::NEED_MORE_REFRESH);
unFreezeUndo();
}
-
-
+
+
// returns false if no undo possible
bool textHandleUndo(BufferView * bv, Undo & undo)
{
Buffer * b = bv->buffer();
-
+
Paragraph * before =
b->getParFromID(undo.number_of_before_par);
Paragraph * behind =
@@ -128,9 +128,9 @@ bool textHandleUndo(BufferView * bv, Undo & undo)
}
vector deletelist;
-
+
Paragraph * deletepar;
-
+
// now add old paragraphs to be deleted
if (before != behind || (!behind && !before)) {
if (before)
@@ -142,7 +142,7 @@ bool textHandleUndo(BufferView * bv, Undo & undo)
deletelist.push_back(deletepar);
tmppar = deletepar;
deletepar = deletepar->next();
-
+
// a memory optimization for edit:
// Only layout information
// is stored in the undo. So restore
@@ -215,7 +215,7 @@ bool textHandleUndo(BufferView * bv, Undo & undo)
// clear any selection and set the selection cursor
// for an evt. new selection.
t->clearSelection();
- t->selection.cursor = t->cursor;
+ t->selection.cursor = t->cursor;
t->updateCounters(bv, t->cursor.row());
bv->fitCursor();
}
@@ -237,7 +237,7 @@ bool textHandleUndo(BufferView * bv, Undo & undo)
// clear any selection and set the selection cursor
// for an evt. new selection.
t->clearSelection();
- t->selection.cursor = t->cursor;
+ t->selection.cursor = t->cursor;
t->updateCounters(bv, t->cursor.row());
}
}
@@ -251,13 +251,13 @@ bool textHandleUndo(BufferView * bv, Undo & undo)
delete (*pit);
}
}
-
+
finishUndo();
bv->text->status(bv, LyXText::NEED_MORE_REFRESH);
return true;
}
-
+
bool createUndo(BufferView * bv, Undo::undo_kind kind,
Paragraph const * first, Paragraph const * behind, shared_ptr & u)
{
@@ -275,7 +275,7 @@ bool createUndo(BufferView * bv, Undo::undo_kind kind,
inset_id = first->inInset()->id();
Buffer * b = bv->buffer();
-
+
// Undo::EDIT and Undo::FINISH are
// always finished. (no overlapping there)
// overlapping only with insert and delete inside one paragraph:
@@ -293,7 +293,7 @@ bool createUndo(BufferView * bv, Undo::undo_kind kind,
return false;
}
}
-
+
// create a new Undo
Paragraph * undopar;
@@ -382,16 +382,16 @@ void unFreezeUndo()
bool textUndo(BufferView * bv)
{
Buffer * b = bv->buffer();
-
+
if (b->undostack.empty()) {
finishNoUndo(bv);
return false;
}
-
+
shared_ptr undo = b->undostack.top();
b->undostack.pop();
finishUndo();
-
+
if (!undo_frozen) {
Paragraph * first = b->getParFromID(undo->number_of_before_par);
if (first && first->next())
@@ -405,7 +405,7 @@ bool textUndo(BufferView * bv)
b->redostack.push(u);
}
}
-
+
// now we can unlock the inset for saftey because the inset pointer could
// be changed during the undo-function. Anyway if needed we have to lock
// the right inset/position if this is requested.
@@ -426,11 +426,11 @@ bool textRedo(BufferView * bv)
finishNoUndo(bv);
return false;
}
-
+
shared_ptr undo = b->redostack.top();
b->redostack.pop();
finishUndo();
-
+
if (!undo_frozen) {
Paragraph * first = bv->buffer()->getParFromID(undo->number_of_before_par);
if (first && first->next())
@@ -444,7 +444,7 @@ bool textRedo(BufferView * bv)
bv->buffer()->undostack.push(u);
}
}
-
+
// now we can unlock the inset for saftey because the inset pointer could
// be changed during the undo-function. Anyway if needed we have to lock
// the right inset/position if this is requested.