#include "InsetVSpace.h"
-#include "buffer.h"
-#include "cursor.h"
-#include "dispatchresult.h"
-#include "funcrequest.h"
-#include "gettext.h"
-#include "LColor.h"
-#include "lyxlex.h"
-#include "lyxtext.h"
-#include "metricsinfo.h"
-#include "outputparams.h"
+#include "Buffer.h"
+#include "Cursor.h"
+#include "Dimension.h"
+#include "DispatchResult.h"
+#include "FuncRequest.h"
+#include "support/gettext.h"
+#include "Lexer.h"
+#include "Text.h"
+#include "MetricsInfo.h"
+#include "OutputParams.h"
#include "frontends/FontMetrics.h"
#include "frontends/Painter.h"
#include <sstream>
+using namespace std;
namespace lyx {
-using std::istringstream;
-using std::ostream;
-using std::ostringstream;
-using std::string;
-using std::max;
-
-
namespace {
int const ADD_TO_VSPACE_WIDTH = 5;
}
-std::auto_ptr<InsetBase> InsetVSpace::doClone() const
+Inset * InsetVSpace::clone() const
{
- return std::auto_ptr<InsetBase>(new InsetVSpace(*this));
+ return new InsetVSpace(*this);
}
-void InsetVSpace::doDispatch(LCursor & cur, FuncRequest & cmd)
+void InsetVSpace::doDispatch(Cursor & cur, FuncRequest & cmd)
{
switch (cmd.action) {
}
case LFUN_MOUSE_RELEASE:
- InsetVSpaceMailer(*this).showDialog(&cur.bv());
+ if (!cur.selection())
+ InsetVSpaceMailer(*this).showDialog(&cur.bv());
break;
default:
- InsetBase::doDispatch(cur, cmd);
+ Inset::doDispatch(cur, cmd);
break;
}
}
-void InsetVSpace::read(Buffer const &, LyXLex & lex)
+void InsetVSpace::read(Buffer const &, Lexer & lex)
{
BOOST_ASSERT(lex.isOK());
string vsp;
}
-bool InsetVSpace::metrics(MetricsInfo & mi, Dimension & dim) const
+void InsetVSpace::metrics(MetricsInfo & mi, Dimension & dim) const
{
int height = 3 * arrow_size;
if (space_.length().len().value() >= 0.0)
height = max(height, space_.inPixels(*mi.base.bv));
- LyXFont font;
+ FontInfo font;
font.decSize();
font.decSize();
dim.asc = height / 2 + (a - d) / 2; // align cursor with the
dim.des = height - dim.asc; // label text
dim.wid = ADD_TO_VSPACE_WIDTH + 2 * arrow_size + 5 + w;
- bool const changed = dim_ != dim;
- dim_ = dim;
- return changed;
+ // Cache the inset dimension.
+ setDimCache(mi, dim);
}
void InsetVSpace::draw(PainterInfo & pi, int x, int y) const
{
- setPosCache(pi, x, y);
-
+ Dimension const dim = dimension(*pi.base.bv);
x += ADD_TO_VSPACE_WIDTH;
-
- int const start = y - dim_.asc;
- int const end = y + dim_.des;
+ int const start = y - dim.asc;
+ int const end = y + dim.des;
// y-values for top arrow
int ty1, ty2;
int a = 0;
int d = 0;
- LyXFont font;
- font.setColor(LColor::added_space);
+ FontInfo font;
+ font.setColor(Color_added_space);
font.decSize();
font.decSize();
docstring const lab = label();
pi.pain.rectText(x + 2 * arrow_size + 5,
start + (end - start) / 2 + (a - d) / 2,
- lab, font, LColor::none, LColor::none);
+ lab, font, Color_none, Color_none);
// top arrow
- pi.pain.line(x, ty1, midx, ty2, LColor::added_space);
- pi.pain.line(midx, ty2, rightx, ty1, LColor::added_space);
+ pi.pain.line(x, ty1, midx, ty2, Color_added_space);
+ pi.pain.line(midx, ty2, rightx, ty1, Color_added_space);
// bottom arrow
- pi.pain.line(x, by1, midx, by2, LColor::added_space);
- pi.pain.line(midx, by2, rightx, by1, LColor::added_space);
+ pi.pain.line(x, by1, midx, by2, Color_added_space);
+ pi.pain.line(midx, by2, rightx, by1, Color_added_space);
// joining line
- pi.pain.line(midx, ty2, midx, by2, LColor::added_space);
+ pi.pain.line(midx, ty2, midx, by2, Color_added_space);
}
int InsetVSpace::latex(Buffer const & buf, odocstream & os,
- OutputParams const &) const
+ OutputParams const &) const
{
os << from_ascii(space_.asLatexCommand(buf.params())) << '\n';
return 1;
int InsetVSpace::plaintext(Buffer const &, odocstream & os,
- OutputParams const &) const
+ OutputParams const &) const
{
os << "\n\n";
return PLAINTEXT_NEWLINE;
int InsetVSpace::docbook(Buffer const &, odocstream & os,
- OutputParams const &) const
+ OutputParams const &) const
{
os << '\n';
return 1;
return;
istringstream data(in);
- LyXLex lex(0,0);
+ Lexer lex(0,0);
lex.setStream(data);
string name;