Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add font styling options to tables and textlists (#10203)
  • Loading branch information
v-rob committed Aug 11, 2020
1 parent abfea69 commit cd0e213
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/gui/guiFormSpecMenu.cpp
Expand Up @@ -1225,6 +1225,7 @@ void GUIFormSpecMenu::parseTable(parserData* data, const std::string &element)

auto style = getDefaultStyleForElement("table", name);
e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false));
e->setOverrideFont(style.getFont());

m_tables.emplace_back(spec, e);
m_fields.push_back(spec);
Expand Down Expand Up @@ -1302,6 +1303,7 @@ void GUIFormSpecMenu::parseTextList(parserData* data, const std::string &element

auto style = getDefaultStyleForElement("textlist", name);
e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false));
e->setOverrideFont(style.getFont());

m_tables.emplace_back(spec, e);
m_fields.push_back(spec);
Expand Down
27 changes: 26 additions & 1 deletion src/gui/guiTable.cpp
Expand Up @@ -56,7 +56,7 @@ GUITable::GUITable(gui::IGUIEnvironment *env,
m_font = skin->getFont();
if (m_font) {
m_font->grab();
m_rowheight = m_font->getDimension(L"A").Height + 4;
m_rowheight = m_font->getDimension(L"Ay").Height + 4;
m_rowheight = MYMAX(m_rowheight, 1);
}

Expand Down Expand Up @@ -586,6 +586,31 @@ void GUITable::setSelected(s32 index)
}
}

void GUITable::setOverrideFont(IGUIFont *font)
{
if (m_font == font)
return;

if (font == nullptr)
font = Environment->getSkin()->getFont();

if (m_font)
m_font->drop();

m_font = font;
m_font->grab();

m_rowheight = m_font->getDimension(L"Ay").Height + 4;
m_rowheight = MYMAX(m_rowheight, 1);

updateScrollBar();
}

IGUIFont *GUITable::getOverrideFont() const
{
return m_font;
}

GUITable::DynamicData GUITable::getDynamicData() const
{
DynamicData dyndata;
Expand Down
6 changes: 6 additions & 0 deletions src/gui/guiTable.h
Expand Up @@ -123,6 +123,12 @@ class GUITable : public gui::IGUIElement
// Autoscroll to make the selected row fully visible
void setSelected(s32 index);

//! Sets another skin independent font. If this is set to zero, the button uses the font of the skin.
virtual void setOverrideFont(gui::IGUIFont *font = nullptr);

//! Gets the override font (if any)
virtual gui::IGUIFont *getOverrideFont() const;

/* Get selection, scroll position and opened (sub)trees */
DynamicData getDynamicData() const;

Expand Down

0 comments on commit cd0e213

Please sign in to comment.