aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorv-rob <robinsonvincent89@gmail.com>2020-08-11 11:07:17 -0700
committerGitHub <noreply@github.com>2020-08-11 20:07:17 +0200
commitcd0e213a3640e980e15735f97dd874754f0dc679 (patch)
tree7dc5e132a883edc4631233612f8855f5267da7e2 /src
parentabfea69e5f68c0f2c946bfcd4444f8cb32e781cf (diff)
downloadminetest-cd0e213a3640e980e15735f97dd874754f0dc679.tar.gz
minetest-cd0e213a3640e980e15735f97dd874754f0dc679.tar.bz2
minetest-cd0e213a3640e980e15735f97dd874754f0dc679.zip
Add font styling options to tables and textlists (#10203)
Diffstat (limited to 'src')
-rw-r--r--src/gui/guiFormSpecMenu.cpp2
-rw-r--r--src/gui/guiTable.cpp27
-rw-r--r--src/gui/guiTable.h6
3 files changed, 34 insertions, 1 deletions
diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp
index 601c5c18e..98392f3c0 100644
--- a/src/gui/guiFormSpecMenu.cpp
+++ b/src/gui/guiFormSpecMenu.cpp
@@ -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);
@@ -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);
diff --git a/src/gui/guiTable.cpp b/src/gui/guiTable.cpp
index c705e17fb..cab2e19fd 100644
--- a/src/gui/guiTable.cpp
+++ b/src/gui/guiTable.cpp
@@ -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);
}
@@ -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;
diff --git a/src/gui/guiTable.h b/src/gui/guiTable.h
index 11093ea72..76a0e94d0 100644
--- a/src/gui/guiTable.h
+++ b/src/gui/guiTable.h
@@ -123,6 +123,12 @@ public:
// 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;