X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_button.C;h=a20b378a90b40bfde461000483d1cd8b59705233;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=3200ac5b8651ea4e3c288fd124d7099752117921;hpb=122e7616d75f7148068f55634d145b942183dc44;p=lyx.git diff --git a/src/insets/render_button.C b/src/insets/render_button.C index 3200ac5b86..a20b378a90 100644 --- a/src/insets/render_button.C +++ b/src/insets/render_button.C @@ -15,10 +15,14 @@ #include "LColor.h" #include "metricsinfo.h" -#include "frontends/font_metrics.h" +#include "frontends/FontMetrics.h" #include "frontends/Painter.h" + +namespace lyx { + using std::string; +using std::auto_ptr; RenderButton::RenderButton() @@ -26,30 +30,36 @@ RenderButton::RenderButton() {} -RenderBase * RenderButton::clone() const +auto_ptr RenderButton::clone(InsetBase const *) const { - return new RenderButton(*this); + return auto_ptr(new RenderButton(*this)); } -void RenderButton::update(string const & text, bool editable) +void RenderButton::update(docstring const & text, bool editable) { text_ = text; editable_ = editable; } -void RenderButton::metrics(MetricsInfo &, Dimension & dim) const +bool RenderButton::metrics(MetricsInfo &, Dimension & dim) const { LyXFont font(LyXFont::ALL_SANE); font.decSize(); - + frontend::FontMetrics const & fm = + theFontMetrics(font); + if (editable_) - font_metrics::buttonText(text_, font, dim.wid, dim.asc, dim.des); + fm.buttonText(text_, dim.wid, dim.asc, dim.des); else - font_metrics::rectText(text_, font, dim.wid, dim.asc, dim.des); + fm.rectText(text_, dim.wid, dim.asc, dim.des); dim.wid += 4; + if (dim_ == dim) + return false; + dim_ = dim; + return true; } @@ -61,9 +71,12 @@ void RenderButton::draw(PainterInfo & pi, int x, int y) const font.decSize(); if (editable_) { - pi.pain.buttonText(x + 2, y, text_, font); + pi.pain.buttonText(x + 2, y, text_, font, renderState()); } else { pi.pain.rectText(x + 2, y, text_, font, LColor::commandbg, LColor::commandframe); } } + + +} // namespace lyx