X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_button.C;h=a20b378a90b40bfde461000483d1cd8b59705233;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=1537ecf14ccd46491997bf78274eae6f5cbb87b6;hpb=c46b7d89553209b8df4e9de392ee07ef711f092f;p=lyx.git diff --git a/src/insets/render_button.C b/src/insets/render_button.C index 1537ecf14c..a20b378a90 100644 --- a/src/insets/render_button.C +++ b/src/insets/render_button.C @@ -15,10 +15,11 @@ #include "LColor.h" #include "metricsinfo.h" -#include "frontends/font_metrics.h" +#include "frontends/FontMetrics.h" #include "frontends/Painter.h" -using lyx::docstring; + +namespace lyx { using std::string; using std::auto_ptr; @@ -35,26 +36,30 @@ auto_ptr RenderButton::clone(InsetBase const *) const } -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(); - - docstring dtext(text_.begin(), text_.end()); - + frontend::FontMetrics const & fm = + theFontMetrics(font); + if (editable_) - font_metrics::buttonText(dtext, font, dim.wid, dim.asc, dim.des); + fm.buttonText(text_, dim.wid, dim.asc, dim.des); else - font_metrics::rectText(dtext, 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; } @@ -65,12 +70,13 @@ void RenderButton::draw(PainterInfo & pi, int x, int y) const font.setColor(LColor::command); font.decSize(); - docstring dtext(text_.begin(), text_.end()); - if (editable_) { - pi.pain.buttonText(x + 2, y, dtext, font); + pi.pain.buttonText(x + 2, y, text_, font, renderState()); } else { - pi.pain.rectText(x + 2, y, dtext, font, + pi.pain.rectText(x + 2, y, text_, font, LColor::commandbg, LColor::commandframe); } } + + +} // namespace lyx