mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Add possibility for command inset to inherit enclosing font
The RenderButton object now has this property. It is set depending on the value of inheritFont() method that is currently only set for InsetRef, InsetBibtex and InsetCitation. Fixes bug #10258
This commit is contained in:
parent
a5377ead20
commit
555338048d
@ -48,6 +48,8 @@ public:
|
||||
///
|
||||
bool hasSettings() const { return true; }
|
||||
///
|
||||
bool inheritFont() const { return true; }
|
||||
///
|
||||
InsetCode lyxCode() const { return BIBTEX_CODE; }
|
||||
///
|
||||
DisplayType display() const { return AlignCenter; }
|
||||
|
@ -43,6 +43,8 @@ public:
|
||||
///
|
||||
bool hasSettings() const { return true; }
|
||||
///
|
||||
bool inheritFont() const { return true; }
|
||||
///
|
||||
docstring toolTip(BufferView const & bv, int x, int y) const;
|
||||
///
|
||||
void doDispatch(Cursor & cur, FuncRequest & cmd);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -125,6 +125,8 @@ private:
|
||||
RenderButton & button() const { return button_; }
|
||||
/// This should provide the text for the button
|
||||
virtual docstring screenLabel() const = 0;
|
||||
/// This should return true when font is inherited from text
|
||||
virtual bool inheritFont() const { return false; }
|
||||
|
||||
/// \name Static public methods obligated for InsetCommand derived classes
|
||||
//@{
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -1019,7 +1019,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);
|
||||
}
|
||||
@ -1201,7 +1201,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) {
|
||||
|
@ -45,10 +45,12 @@ public:
|
||||
docstring toolTip(BufferView const &, int, int) const
|
||||
{ return tooltip_; }
|
||||
///
|
||||
docstring getTOCString() const;
|
||||
docstring getTOCString() const;
|
||||
///
|
||||
bool hasSettings() const { return true; }
|
||||
///
|
||||
bool inheritFont() const { return true; }
|
||||
///
|
||||
InsetCode lyxCode() const { return REF_CODE; }
|
||||
///
|
||||
DisplayType display() const { return Inline; }
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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_;
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user