X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_button.C;h=a20b378a90b40bfde461000483d1cd8b59705233;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=16a153fcdf6f487826176e1ef7e509e178103341;hpb=28ad9602557a145bfd88c79dddecdc34c95c698c;p=lyx.git diff --git a/src/insets/render_button.C b/src/insets/render_button.C index 16a153fcdf..a20b378a90 100644 --- a/src/insets/render_button.C +++ b/src/insets/render_button.C @@ -18,7 +18,8 @@ #include "frontends/FontMetrics.h" #include "frontends/Painter.h" -using lyx::docstring; + +namespace lyx { using std::string; using std::auto_ptr; @@ -35,28 +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(); - lyx::frontend::FontMetrics const & fm = + frontend::FontMetrics const & fm = theFontMetrics(font); - docstring dtext(text_.begin(), text_.end()); - if (editable_) - fm.buttonText(dtext, dim.wid, dim.asc, dim.des); + fm.buttonText(text_, dim.wid, dim.asc, dim.des); else - fm.rectText(dtext, 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; } @@ -67,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