X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_button.C;h=a20b378a90b40bfde461000483d1cd8b59705233;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=fd794b02d5653d9b1f2612c67033685d0d691806;hpb=dff822442ad64ea35cfa7ed7265f24624093a476;p=lyx.git diff --git a/src/insets/render_button.C b/src/insets/render_button.C index fd794b02d5..a20b378a90 100644 --- a/src/insets/render_button.C +++ b/src/insets/render_button.C @@ -12,15 +12,17 @@ #include "render_button.h" -#include "BufferView.h" #include "LColor.h" #include "metricsinfo.h" -#include "frontends/font_metrics.h" -#include "frontends/LyXView.h" +#include "frontends/FontMetrics.h" #include "frontends/Painter.h" + +namespace lyx { + using std::string; +using std::auto_ptr; RenderButton::RenderButton() @@ -28,47 +30,53 @@ 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; } void RenderButton::draw(PainterInfo & pi, int x, int y) const { - BOOST_ASSERT(pi.base.bv); - view_ = pi.base.bv->owner()->view(); - // Draw it as a box with the LaTeX text LyXFont font(LyXFont::ALL_SANE); font.setColor(LColor::command); 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