aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugues Ross <hugues.ross@gmail.com>2020-01-16 13:41:07 -0500
committerrubenwardy <rw@rubenwardy.com>2020-01-16 18:41:07 +0000
commit680aaa1bd55fd4f0162ba31ca47d7e5b3563f2a1 (patch)
tree9bf016488eecfb804585d2ac10f2c5bb3178d466
parentcea4fd2b27bd266a3dcb8f9ddf9b434ba00c60ad (diff)
downloadminetest-680aaa1bd55fd4f0162ba31ca47d7e5b3563f2a1.tar.gz
minetest-680aaa1bd55fd4f0162ba31ca47d7e5b3563f2a1.tar.bz2
minetest-680aaa1bd55fd4f0162ba31ca47d7e5b3563f2a1.zip
Make clipping of formspec elements more consistent (#9262)
-rw-r--r--doc/lua_api.txt8
-rw-r--r--src/gui/guiFormSpecMenu.cpp11
-rw-r--r--src/network/networkprotocol.h1
3 files changed, 17 insertions, 3 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index f14c815ed..57159d6ac 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -2563,6 +2563,9 @@ Some types may inherit styles from parent types.
### Valid Properties
+* box
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * Default to false in formspec_version version 3 or higher
* button, button_exit, image_button, item_image_button
* alpha - boolean, whether to draw alpha in bgimg. Default true.
* bgcolor - color, sets button tint.
@@ -2586,6 +2589,11 @@ Some types may inherit styles from parent types.
* border - set to false to hide the textbox background and border. Default true.
* noclip - boolean, set to true to allow the element to exceed formspec bounds.
* textcolor - color. Default white.
+* image
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds.
+ * Default to false in formspec_version version 3 or higher
+* item_image
+ * noclip - boolean, set to true to allow the element to exceed formspec bounds. Default to false.
* label, vertlabel
* noclip - boolean, set to true to allow the element to exceed formspec bounds.
* image_button (additional properties)
diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp
index 3c9e55d06..5ddfbc6d5 100644
--- a/src/gui/guiFormSpecMenu.cpp
+++ b/src/gui/guiFormSpecMenu.cpp
@@ -744,7 +744,8 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element)
gui::IGUIImage *e = Environment->addImage(rect, this, spec.fid, 0, true);
e->setImage(texture);
e->setScaleImage(true);
- e->setNotClipped(true);
+ auto style = getStyleForElement("image", spec.fname);
+ e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3));
m_fields.push_back(spec);
return;
@@ -776,7 +777,8 @@ void GUIFormSpecMenu::parseImage(parserData* data, const std::string &element)
);
gui::IGUIImage *e = Environment->addImage(texture, pos, true, this,
spec.fid, 0);
- e->setNotClipped(true);
+ auto style = getStyleForElement("image", spec.fname);
+ e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3));
m_fields.push_back(spec);
return;
@@ -824,6 +826,8 @@ void GUIFormSpecMenu::parseItemImage(parserData* data, const std::string &elemen
GUIItemImage *e = new GUIItemImage(Environment, this, spec.fid,
core::rect<s32>(pos, pos + geom), name, m_font, m_client);
+ auto style = getStyleForElement("item_image", spec.fname);
+ e->setNotClipped(style.getBool(StyleSpec::NOCLIP, false));
e->drop();
m_fields.push_back(spec);
@@ -2110,7 +2114,8 @@ void GUIFormSpecMenu::parseBox(parserData* data, const std::string &element)
GUIBox *e = new GUIBox(Environment, this, spec.fid, rect, tmp_color);
- e->setNotClipped(true);
+ auto style = getStyleForElement("box", spec.fname);
+ e->setNotClipped(style.getBool(StyleSpec::NOCLIP, m_formspec_version < 3));
e->drop();
diff --git a/src/network/networkprotocol.h b/src/network/networkprotocol.h
index a2be181fb..2ade030c4 100644
--- a/src/network/networkprotocol.h
+++ b/src/network/networkprotocol.h
@@ -232,6 +232,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
FORMSPEC VERSION 3:
Formspec elements are drawn in the order of definition
bgcolor[]: use 3 parameters (bgcolor, formspec (now an enum), fbgcolor)
+ box[] and image[] elements enable clipping by default
*/
#define FORMSPEC_API_VERSION 3