commit b58dcff836f9eb4507df81abffd83e2bfac2b3d0
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Wed May 24 11:28:08 2017 +0200

    Let command inset honor inheritFont() on screen
    
    The RenderButton object now has a inherit_font_ property. It is set
    depending on the value of Inset::inheritFont().
    
    This is a better fix than 55533804, which caused bugs #10682 and #10677.
    
    Fixes bug #10258
---
 src/insets/InsetCommand.cpp  |    3 ++-
 src/insets/InsetExternal.cpp |    2 +-
 src/insets/InsetInclude.cpp  |    4 ++--
 src/insets/RenderButton.cpp  |   10 ++++++----
 src/insets/RenderButton.h    |    3 ++-
 src/mathed/CommandInset.cpp  |    2 +-
 6 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/insets/InsetCommand.cpp b/src/insets/InsetCommand.cpp
index f4f1692..fe10466 100644
--- a/src/insets/InsetCommand.cpp
+++ b/src/insets/InsetCommand.cpp
@@ -96,7 +96,8 @@ InsetCommand::~InsetCommand()
 
 void InsetCommand::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       button_.update(screenLabel(), editable() || clickable(*mi.base.bv, 0, 
0));
+       button_.update(screenLabel(), editable() || clickable(*mi.base.bv, 0, 
0),
+                      inheritFont());
        button_.metrics(mi, dim);
 }
 
diff --git a/src/insets/InsetExternal.cpp b/src/insets/InsetExternal.cpp
index a88769b..8efdd3e 100644
--- a/src/insets/InsetExternal.cpp
+++ b/src/insets/InsetExternal.cpp
@@ -623,7 +623,7 @@ void InsetExternal::setParams(InsetExternalParams const & p)
                        renderer_.reset(new RenderButton);
                        button_ptr = renderer_->asButton();
                }
-               button_ptr->update(screenLabel(params_, buffer()), true);
+               button_ptr->update(screenLabel(params_, buffer()), true, false);
                return;
        }
 
diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp
index 3fc35fe..06b5238 100644
--- a/src/insets/InsetInclude.cpp
+++ b/src/insets/InsetInclude.cpp
@@ -1022,7 +1022,7 @@ void InsetInclude::metrics(MetricsInfo & mi, Dimension & 
dim) const
        } else {
                if (!set_label_) {
                        set_label_ = true;
-                       button_.update(screenLabel(), true);
+                       button_.update(screenLabel(), true, false);
                }
                button_.metrics(mi, dim);
        }
@@ -1207,7 +1207,7 @@ void InsetInclude::updateCommand()
 
 void InsetInclude::updateBuffer(ParIterator const & it, UpdateType utype)
 {
-       button_.update(screenLabel(), true);
+       button_.update(screenLabel(), true, false);
 
        Buffer const * const childbuffer = getChildBuffer();
        if (childbuffer) {
diff --git a/src/insets/RenderButton.cpp b/src/insets/RenderButton.cpp
index 430b8dd..7f983c5 100644
--- a/src/insets/RenderButton.cpp
+++ b/src/insets/RenderButton.cpp
@@ -32,16 +32,18 @@ RenderBase * RenderButton::clone(Inset const *) const
 }
 
 
-void RenderButton::update(docstring const & text, bool editable)
+void RenderButton::update(docstring const & text, bool editable,
+                          bool inherit_font)
 {
        text_ = text;
        editable_ = editable;
+       inherit_font_ = inherit_font;
 }
 
 
-void RenderButton::metrics(MetricsInfo &, Dimension & dim) const
+void RenderButton::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       FontInfo font = sane_font;
+       FontInfo font = inherit_font_ ? mi.base.font : sane_font;
        font.decSize();
        frontend::FontMetrics const & fm =
                theFontMetrics(font);
@@ -58,7 +60,7 @@ void RenderButton::metrics(MetricsInfo &, Dimension & dim) 
const
 void RenderButton::draw(PainterInfo & pi, int x, int y) const
 {
        // Draw it as a box with the LaTeX text
-       FontInfo font = sane_font;
+       FontInfo font = inherit_font_ ? pi.base.font : sane_font;
        font.setColor(Color_command);
        font.decSize();
 
diff --git a/src/insets/RenderButton.h b/src/insets/RenderButton.h
index 5e6ad35..480effd 100644
--- a/src/insets/RenderButton.h
+++ b/src/insets/RenderButton.h
@@ -33,7 +33,7 @@ public:
        virtual void draw(PainterInfo & pi, int x, int y) const;
 
        /// Provide the text for the button
-       void update(docstring const &, bool editable);
+       void update(docstring const &, bool editable, bool inherit_font);
 
        /// The "sensitive area" box, i.e., the button area
        Box box() const { return button_box_; }
@@ -47,6 +47,7 @@ private:
        /// The stored data.
        docstring text_;
        bool editable_;
+       bool inherit_font_;
        Box button_box_;
 };
 
diff --git a/src/mathed/CommandInset.cpp b/src/mathed/CommandInset.cpp
index 0c9e585..344c570 100644
--- a/src/mathed/CommandInset.cpp
+++ b/src/mathed/CommandInset.cpp
@@ -40,7 +40,7 @@ void CommandInset::metrics(MetricsInfo & mi, Dimension & dim) 
const
 {
        if (!set_label_) {
                set_label_ = true;
-               button_.update(screenLabel(), true);
+               button_.update(screenLabel(), true, false);
        }
        button_.metrics(mi, dim);
 }

Reply via email to