]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetminipage.C
Enable convertDefault.sh to run even if its executable bit is not set.
[lyx.git] / src / insets / insetminipage.C
index 8e69267393a213268c1c2a7468ccbb86e3e03dc1..ecf9ed6d81d7f6fc050ba69e24f608eb6b810fa0 100644 (file)
@@ -6,7 +6,7 @@
  * \author Jürgen Vigna
  * \author Lars Gullik Bjønnes
  *
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
  */
 
 #include <config.h>
@@ -24,6 +24,7 @@
 #include "lyxlex.h"
 #include "lyxtext.h"
 #include "Lsstream.h"
+#include "metricsinfo.h"
 
 #include "frontends/LyXView.h"
 #include "frontends/Dialogs.h"
@@ -32,6 +33,7 @@
 
 using std::ostream;
 using std::endl;
+using std::auto_ptr;
 
 
 // Some information about Minipages in LaTeX:
@@ -74,35 +76,25 @@ InsetMinipage::InsetMinipage(BufferParams const & bp)
 #if 0
        setAutoCollapse(false);
 #endif
-
-#if 0
-#ifdef WITH_WARNINGS
-#warning Remove this color definitions before 1.2.0 final!
-#endif
-       // just for experimentation :)
-       setBackgroundColor(LColor::green);
-#endif
-
-       inset.setFrameColor(0, LColor::blue);
+       inset.setFrameColor(LColor::blue);
        setInsetName("Minipage");
 }
 
 
-InsetMinipage::InsetMinipage(InsetMinipage const & in, bool same_id)
-       : InsetCollapsable(in, same_id), params_(in.params_)
+InsetMinipage::InsetMinipage(InsetMinipage const & in)
+       : InsetCollapsable(in), params_(in.params_)
 {}
 
 
-Inset * InsetMinipage::clone(Buffer const &, bool same_id) const
+auto_ptr<InsetBase> InsetMinipage::clone() const
 {
-       return new InsetMinipage(*const_cast<InsetMinipage *>(this), same_id);
+       return auto_ptr<InsetBase>(new InsetMinipage(*this));
 }
 
 
 InsetMinipage::~InsetMinipage()
 {
-       InsetMinipageMailer mailer(*this);
-       mailer.hideDialog();
+       InsetMinipageMailer(*this).hideDialog();
 }
 
 
@@ -118,16 +110,12 @@ dispatch_result InsetMinipage::localDispatch(FuncRequest const & cmd)
 
                /* 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;
        }
 
-       case LFUN_INSET_DIALOG_UPDATE: 
+       case LFUN_INSET_DIALOG_UPDATE:
                InsetMinipageMailer(*this).updateDialog(cmd.view());
                return DISPATCHED;
 
@@ -204,43 +192,46 @@ void InsetMinipage::Params::read(LyXLex & lex)
 }
 
 
-void InsetMinipage::write(Buffer const * buf, ostream & os) const
+void InsetMinipage::write(Buffer const & buf, ostream & os) const
 {
        params_.write(os);
        InsetCollapsable::write(buf, os);
 }
 
 
-void InsetMinipage::read(Buffer const * buf, LyXLex & lex)
+void InsetMinipage::read(Buffer const & buf, LyXLex & lex)
 {
        params_.read(lex);
        InsetCollapsable::read(buf, lex);
 }
 
 
-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.a = d.a;
-                       dim.d = d.d;
+                       dim.asc = d.asc;
+                       dim.des = d.des;
                        break;
                case center:
-                       dim.a = d.height() / 2;
-                       dim.d = dim.a;
+                       dim.asc = d.ascent() + d.descent() / 2;
+                       dim.des = dim.asc;
                        break;
                case bottom:
-                       dim.a = d.d;
-                       dim.d = d.a;
+                       dim.asc = d.des;
+                       dim.des = d.asc;
                        break;
                }
+               dim.wid = d.wid;
        }
+       dim_ = dim;
 }
 
 
@@ -250,9 +241,8 @@ string const InsetMinipage::editMessage() const
 }
 
 
-int InsetMinipage::latex(Buffer const * buf, ostream & os,
-                        LatexRunParams const & runparams,
-                        bool fp) const
+int InsetMinipage::latex(Buffer const & buf, ostream & os,
+                        LatexRunParams const & runparams) const
 {
        string s_pos;
        switch (params_.pos) {
@@ -269,16 +259,16 @@ int InsetMinipage::latex(Buffer const * buf, ostream & os,
        os << "\\begin{minipage}[" << s_pos << "]{"
           << params_.width.asLatexString() << "}%\n";
 
-       int i = inset.latex(buf, os, runparams, fp);
+       int i = inset.latex(buf, os, runparams);
 
        os << "\\end{minipage}%\n";
        return i + 2;
 }
 
 
-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);
@@ -297,26 +287,6 @@ bool InsetMinipage::showInsetDialog(BufferView * bv) const
 }
 
 
-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));
@@ -337,7 +307,7 @@ InsetMinipageMailer::InsetMinipageMailer(InsetMinipage & inset)
 {}
 
 
-string const InsetMinipageMailer::inset2string() const
+string const InsetMinipageMailer::inset2string(Buffer const &) const
 {
        return params2string(inset_.params());
 }
@@ -350,9 +320,9 @@ void InsetMinipageMailer::string2params(string const & in,
 
        if (in.empty())
                return;
-       
+
        istringstream data(STRCONV(in));
-       LyXLex lex(0,0);
+       LyXLex lex(0, 0);
        lex.setStream(data);
 
        if (lex.isOK()) {