Fix the bgcolor formspec element (#8716)
authorDS <vorunbekannt75@web.de>
Sun, 15 Sep 2019 16:14:31 +0000 (18:14 +0200)
committerrubenwardy <rw@rubenwardy.com>
Sun, 15 Sep 2019 16:14:31 +0000 (17:14 +0100)
doc/lua_api.txt
src/gui/guiFormSpecMenu.cpp

index b809e18c3d70dd0cbb4911551f2a288bec3b3c4d..5a991c278d136e622823d14b36b055a1d0c2525c 100644 (file)
@@ -2092,11 +2092,15 @@ Elements
 
 * Show an inventory image of registered item/node
 
-### `bgcolor[<color>;<fullscreen>]`
+### `bgcolor[<color>]`
 
 * Sets background color of formspec as `ColorString`
-* If `true`, the background color is drawn fullscreen (does not affect the size
-  of the formspec).
+
+### `bgcolor[<color>;<fullscreen>]`
+
+* If `color` is a valid `ColorString`, the fullscreen background color
+  is set to `color`.
+* If `fullscreen` is a true value, the fullscreen background color is drawn.
 
 ### `background[<X>,<Y>;<W>,<H>;<texture name>]`
 
index 53b8ae848655059a2039ce5e9c7766acdd840e1d..e8a7f546ea7e612fd0c3db74660334794eb3a018 100644 (file)
@@ -1881,17 +1881,17 @@ void GUIFormSpecMenu::parseBox(parserData* data, const std::string &element)
        errorstream<< "Invalid Box element(" << parts.size() << "): '" << element << "'"  << std::endl;
 }
 
-void GUIFormSpecMenu::parseBackgroundColor(parserDatadata, const std::string &element)
+void GUIFormSpecMenu::parseBackgroundColor(parserData *data, const std::string &element)
 {
        std::vector<std::string> parts = split(element,';');
 
        if (((parts.size() == 1) || (parts.size() == 2)) ||
                        ((parts.size() > 2) && (m_formspec_version > FORMSPEC_API_VERSION))) {
-               parseColorString(parts[0], m_bgcolor, false);
-
-               if (parts.size() == 2) {
-                       std::string fullscreen = parts[1];
-                       m_bgfullscreen = is_yes(fullscreen);
+               if (parts.size() == 1) {
+                       parseColorString(parts[0], m_bgcolor, false);
+               } else if (parts.size() == 2) {
+                       parseColorString(parts[0], m_fullscreen_bgcolor, false);
+                       m_bgfullscreen = is_yes(parts[1]);
                }
 
                return;
@@ -2921,8 +2921,7 @@ void GUIFormSpecMenu::drawMenu()
 
        if (m_bgfullscreen)
                driver->draw2DRectangle(m_fullscreen_bgcolor, allbg, &allbg);
-       else
-               driver->draw2DRectangle(m_bgcolor, AbsoluteRect, &AbsoluteClippingRect);
+       driver->draw2DRectangle(m_bgcolor, AbsoluteRect, &AbsoluteClippingRect);
 
        m_tooltip_element->setVisible(false);