General cleanup: Text is (or should be) nothing more than InsetText private implementation. We need access to the owner InsetText property in many cases where we instead take the Paragraph owner inset, which is the same of course. Next step is to avoid this indirection whenever possible.

I also updated InsetMathMBox so that it remains compilable, even if not used.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30940 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2009-08-09 15:05:36 +00:00
parent 5444f386e0
commit e8674d6141
5 changed files with 27 additions and 23 deletions

View File

@ -41,13 +41,17 @@ class Spacing;
class Text { class Text {
public: public:
/// constructor /// constructor
explicit Text(); explicit Text(InsetText * owner)
: autoBreakRows_(false), owner_(owner)
{}
/// \return true if there's no content at all. /// \return true if there's no content at all.
/// \warning a non standard layout on an empty paragraph doesn't /// \warning a non standard layout on an empty paragraph doesn't
// count as empty. // count as empty.
bool empty() const; bool empty() const;
InsetText const * inset() { return owner_; }
/// ///
FontInfo layoutFont(Buffer const & buffer, pit_type pit) const; FontInfo layoutFont(Buffer const & buffer, pit_type pit) const;
/// ///
@ -344,6 +348,9 @@ private:
void pasteString(Cursor & cur, docstring const & str, void pasteString(Cursor & cur, docstring const & str,
bool asParagraphs); bool asParagraphs);
/// Owner Inset.
InsetText * owner_;
/// position of the text in the buffer. /// position of the text in the buffer.
DocIterator macrocontext_position_; DocIterator macrocontext_position_;
}; };

View File

@ -63,11 +63,6 @@ using namespace std;
namespace lyx { namespace lyx {
Text::Text()
: autoBreakRows_(false)
{}
bool Text::isMainText(Buffer const & buffer) const bool Text::isMainText(Buffer const & buffer) const
{ {
return &buffer.text() == this; return &buffer.text() == this;

View File

@ -76,7 +76,7 @@ using graphics::PreviewLoader;
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
InsetText::InsetText(Buffer const & buf, UsePlain type) InsetText::InsetText(Buffer const & buf, UsePlain type)
: drawFrame_(false), frame_color_(Color_insetframe) : drawFrame_(false), frame_color_(Color_insetframe), text_(this)
{ {
setBuffer(const_cast<Buffer &>(buf)); setBuffer(const_cast<Buffer &>(buf));
initParagraphs(type); initParagraphs(type);
@ -84,7 +84,7 @@ InsetText::InsetText(Buffer const & buf, UsePlain type)
InsetText::InsetText(InsetText const & in) InsetText::InsetText(InsetText const & in)
: Inset(in), text_() : Inset(in), text_(this)
{ {
text_.autoBreakRows_ = in.text_.autoBreakRows_; text_.autoBreakRows_ = in.text_.autoBreakRows_;
drawFrame_ = in.drawFrame_; drawFrame_ = in.drawFrame_;

View File

@ -32,14 +32,15 @@ using namespace std;
namespace lyx { namespace lyx {
InsetMathMBox::InsetMathMBox() InsetMathMBox::InsetMathMBox(Buffer const & buffer) : text_(buffer)
{ {
text_.paragraphs().clear(); text_.paragraphs().clear();
text_.paragraphs().push_back(Paragraph()); text_.paragraphs().push_back(Paragraph());
} }
InsetMathMBox::InsetMathMBox(Layout const & layout) InsetMathMBox::InsetMathMBox(Buffer const & buffer, Layout const & layout)
: text_(buffer)
{ {
text_.paragraphs().clear(); text_.paragraphs().clear();
text_.paragraphs().push_back(Paragraph()); text_.paragraphs().push_back(Paragraph());
@ -55,7 +56,7 @@ Inset * InsetMathMBox::clone() const
void InsetMathMBox::metrics(MetricsInfo & mi, Dimension & dim) const void InsetMathMBox::metrics(MetricsInfo & mi, Dimension & dim) const
{ {
TextMetrics & tm = mi.base.bv->textMetrics(&text_); TextMetrics & tm = mi.base.bv->textMetrics(&text_.text());
tm.metrics(mi, dim); tm.metrics(mi, dim);
metricsMarkers2(dim); metricsMarkers2(dim);
} }
@ -63,7 +64,7 @@ void InsetMathMBox::metrics(MetricsInfo & mi, Dimension & dim) const
void InsetMathMBox::draw(PainterInfo & pi, int x, int y) const void InsetMathMBox::draw(PainterInfo & pi, int x, int y) const
{ {
pi.base.bv->textMetrics(&text_).draw(pi, x + 1, y); pi.base.bv->textMetrics(&text_.text()).draw(pi, x + 1, y);
drawMarkers(pi, x, y); drawMarkers(pi, x, y);
} }
@ -74,13 +75,13 @@ void InsetMathMBox::write(WriteStream & ws) const
ws << "\\mbox{\n"; ws << "\\mbox{\n";
TexRow texrow; TexRow texrow;
OutputParams runparams(&buffer().params().encoding()); OutputParams runparams(&buffer().params().encoding());
latexParagraphs(buffer(), text_, ws.os(), texrow, runparams); latexParagraphs(buffer(), text_.text(), ws.os(), texrow, runparams);
ws.addlines(texrow.rows()); ws.addlines(texrow.rows());
ws << "}"; ws << "}";
} else { } else {
ws << "\\mbox{\n"; ws << "\\mbox{\n";
ostringstream os; ostringstream os;
text_.write(buffer(), os); text_.text().write(buffer(), os);
ws.os() << from_utf8(os.str()); ws.os() << from_utf8(os.str());
ws << "}"; ws << "}";
} }
@ -91,7 +92,7 @@ int InsetMathMBox::latex(odocstream & os, OutputParams const & runparams) const
{ {
os << "\\mbox{\n"; os << "\\mbox{\n";
TexRow texrow; TexRow texrow;
latexParagraphs(buffer(), text_, os, texrow, runparams); latexParagraphs(buffer(), text_.text(), os, texrow, runparams);
os << "}"; os << "}";
return texrow.rows(); return texrow.rows();
} }
@ -99,21 +100,21 @@ int InsetMathMBox::latex(odocstream & os, OutputParams const & runparams) const
void InsetMathMBox::doDispatch(Cursor & cur, FuncRequest & cmd) void InsetMathMBox::doDispatch(Cursor & cur, FuncRequest & cmd)
{ {
text_.dispatch(cur, cmd); text_.text().dispatch(cur, cmd);
} }
Text * InsetMathMBox::getText(int) const Text * InsetMathMBox::getText(int) const
{ {
return &text_; return &text_.text();
} }
void InsetMathMBox::cursorPos(BufferView const & bv, void InsetMathMBox::cursorPos(BufferView const & bv,
CursorSlice const & sl, bool boundary, int & x, int & y) const CursorSlice const & sl, bool boundary, int & x, int & y) const
{ {
x = bv.textMetrics(&text_).cursorX(sl, boundary); x = bv.textMetrics(&text_.text()).cursorX(sl, boundary);
y = bv.textMetrics(&text_).cursorY(sl, boundary); y = bv.textMetrics(&text_.text()).cursorY(sl, boundary);
} }

View File

@ -17,7 +17,8 @@
#define MATH_MBOXINSET_H #define MATH_MBOXINSET_H
#include "InsetMath.h" #include "InsetMath.h"
#include "Text.h"
#include "insets/InsetText.h"
namespace lyx { namespace lyx {
@ -30,8 +31,8 @@ class BufferView;
class InsetMathMBox : public InsetMath { class InsetMathMBox : public InsetMath {
public: public:
/// ///
explicit InsetMathMBox(); explicit InsetMathMBox(Buffer const & buffer);
explicit InsetMathMBox(Layout const & layout); explicit InsetMathMBox(Buffer const & buffer, Layout const & layout);
/// this stores metrics information in cache_ /// this stores metrics information in cache_
void metrics(MetricsInfo & mi, Dimension & dim) const; void metrics(MetricsInfo & mi, Dimension & dim) const;
@ -58,7 +59,7 @@ protected:
virtual void doDispatch(Cursor & cur, FuncRequest & cmd); virtual void doDispatch(Cursor & cur, FuncRequest & cmd);
/// ///
mutable Text text_; mutable InsetText text_;
private: private:
virtual Inset * clone() const; virtual Inset * clone() const;