#include "lyxlex.h"
#include "lyxtext.h"
#include "Lsstream.h"
+#include "metricsinfo.h"
#include "frontends/LyXView.h"
#include "frontends/Dialogs.h"
using std::ostream;
using std::endl;
+using std::auto_ptr;
// Some information about Minipages in LaTeX:
{}
-// InsetMinipage::InsetMinipage(InsetMinipage const & in, bool same_id)
-// : InsetCollapsable(in, same_id), params_(in.params_)
-// {}
-
-
-Inset * InsetMinipage::clone(Buffer const &) const
+auto_ptr<InsetBase> InsetMinipage::clone() const
{
- return new InsetMinipage(*const_cast<InsetMinipage *>(this));
+ return auto_ptr<InsetBase>(new InsetMinipage(*this));
}
-// Inset * InsetMinipage::clone(Buffer const &, bool same_id) const
-// {
-// return new InsetMinipage(*const_cast<InsetMinipage *>(this), same_id);
-// }
-
-
InsetMinipage::~InsetMinipage()
{
InsetMinipageMailer mailer(*this);
/* FIXME: I refuse to believe we have to live
* with ugliness like this ... */
- LyXText * t = inset.getLyXText(cmd.view());
- t->need_break_row = t->rows().begin();
- t->fullRebreak();
- inset.update(cmd.view(), true);
- t->setCursorIntern(t->cursor.par(), t->cursor.pos());
+ inset.getLyXText(cmd.view())->fullRebreak();
cmd.view()->updateInset(this);
return DISPATCHED;
}
}
-void InsetMinipage::dimension(BufferView * bv, LyXFont const & font,
- Dimension & dim) const
+void InsetMinipage::metrics(MetricsInfo & mi, Dimension & dim) const
{
if (collapsed_)
dimension_collapsed(dim);
else {
Dimension d;
- InsetCollapsable::dimension(bv, font, dim);
+ MetricsInfo m = mi;
+ m.base.textwidth = params_.width.inPixels(mi.base.textwidth);
+ InsetCollapsable::metrics(m, d);
switch (params_.pos) {
case top:
dim.asc = d.asc;
dim.des = d.des;
break;
case center:
- dim.asc = d.height() / 2;
+ dim.asc = d.ascent() + d.descent() / 2;
dim.des = dim.asc;
break;
case bottom:
dim.des = d.asc;
break;
}
+ dim.wid = d.wid;
}
+ dim_ = dim;
}
}
-bool InsetMinipage::insetAllowed(Inset::Code code) const
+bool InsetMinipage::insetAllowed(InsetOld::Code code) const
{
- if (code == Inset::FLOAT_CODE || code == Inset::MARGIN_CODE)
+ if (code == InsetOld::FLOAT_CODE || code == InsetOld::MARGIN_CODE)
return false;
return InsetCollapsable::insetAllowed(code);
}
-int InsetMinipage::getMaxWidth(BufferView * bv, UpdatableInset const * inset)
- const
-{
- if (owner() &&
- static_cast<UpdatableInset*>(owner())->getMaxWidth(bv, inset) < 0) {
- return -1;
- }
- if (!params_.width.zero()) {
- int ww1 = latexTextWidth(bv);
- int ww2 = InsetCollapsable::getMaxWidth(bv, inset);
- if (ww2 > 0 && ww2 < ww1) {
- return ww2;
- }
- return ww1;
- }
- // this should not happen!
- return InsetCollapsable::getMaxWidth(bv, inset);
-}
-
-
int InsetMinipage::latexTextWidth(BufferView * bv) const
{
return params_.width.inPixels(InsetCollapsable::latexTextWidth(bv));
{}
-string const InsetMinipageMailer::inset2string() const
+string const InsetMinipageMailer::inset2string(Buffer const &) const
{
return params2string(inset_.params());
}
return;
istringstream data(STRCONV(in));
- LyXLex lex(0,0);
+ LyXLex lex(0, 0);
lex.setStream(data);
if (lex.isOK()) {