Browse Source

Merge pull request #59238 from akien-mga/3.x-cherrypicks

Rémi Verschelde 3 years ago
parent
commit
fc93c22b6e

+ 146 - 146
core/color_names.inc

@@ -6,150 +6,150 @@ static void _populate_named_colors() {
 	if (!_named_colors.empty()) {
 	if (!_named_colors.empty()) {
 		return;
 		return;
 	}
 	}
-	_named_colors.insert("aliceblue", Color(0.94, 0.97, 1.00));
-	_named_colors.insert("antiquewhite", Color(0.98, 0.92, 0.84));
-	_named_colors.insert("aqua", Color(0.00, 1.00, 1.00));
-	_named_colors.insert("aquamarine", Color(0.50, 1.00, 0.83));
-	_named_colors.insert("azure", Color(0.94, 1.00, 1.00));
-	_named_colors.insert("beige", Color(0.96, 0.96, 0.86));
-	_named_colors.insert("bisque", Color(1.00, 0.89, 0.77));
-	_named_colors.insert("black", Color(0.00, 0.00, 0.00));
-	_named_colors.insert("blanchedalmond", Color(1.00, 0.92, 0.80));
-	_named_colors.insert("blue", Color(0.00, 0.00, 1.00));
-	_named_colors.insert("blueviolet", Color(0.54, 0.17, 0.89));
-	_named_colors.insert("brown", Color(0.65, 0.16, 0.16));
-	_named_colors.insert("burlywood", Color(0.87, 0.72, 0.53));
-	_named_colors.insert("cadetblue", Color(0.37, 0.62, 0.63));
-	_named_colors.insert("chartreuse", Color(0.50, 1.00, 0.00));
-	_named_colors.insert("chocolate", Color(0.82, 0.41, 0.12));
-	_named_colors.insert("coral", Color(1.00, 0.50, 0.31));
-	_named_colors.insert("cornflower", Color(0.39, 0.58, 0.93));
-	_named_colors.insert("cornsilk", Color(1.00, 0.97, 0.86));
-	_named_colors.insert("crimson", Color(0.86, 0.08, 0.24));
-	_named_colors.insert("cyan", Color(0.00, 1.00, 1.00));
-	_named_colors.insert("darkblue", Color(0.00, 0.00, 0.55));
-	_named_colors.insert("darkcyan", Color(0.00, 0.55, 0.55));
-	_named_colors.insert("darkgoldenrod", Color(0.72, 0.53, 0.04));
-	_named_colors.insert("darkgray", Color(0.66, 0.66, 0.66));
-	_named_colors.insert("darkgreen", Color(0.00, 0.39, 0.00));
-	_named_colors.insert("darkkhaki", Color(0.74, 0.72, 0.42));
-	_named_colors.insert("darkmagenta", Color(0.55, 0.00, 0.55));
-	_named_colors.insert("darkolivegreen", Color(0.33, 0.42, 0.18));
-	_named_colors.insert("darkorange", Color(1.00, 0.55, 0.00));
-	_named_colors.insert("darkorchid", Color(0.60, 0.20, 0.80));
-	_named_colors.insert("darkred", Color(0.55, 0.00, 0.00));
-	_named_colors.insert("darksalmon", Color(0.91, 0.59, 0.48));
-	_named_colors.insert("darkseagreen", Color(0.56, 0.74, 0.56));
-	_named_colors.insert("darkslateblue", Color(0.28, 0.24, 0.55));
-	_named_colors.insert("darkslategray", Color(0.18, 0.31, 0.31));
-	_named_colors.insert("darkturquoise", Color(0.00, 0.81, 0.82));
-	_named_colors.insert("darkviolet", Color(0.58, 0.00, 0.83));
-	_named_colors.insert("deeppink", Color(1.00, 0.08, 0.58));
-	_named_colors.insert("deepskyblue", Color(0.00, 0.75, 1.00));
-	_named_colors.insert("dimgray", Color(0.41, 0.41, 0.41));
-	_named_colors.insert("dodgerblue", Color(0.12, 0.56, 1.00));
-	_named_colors.insert("firebrick", Color(0.70, 0.13, 0.13));
-	_named_colors.insert("floralwhite", Color(1.00, 0.98, 0.94));
-	_named_colors.insert("forestgreen", Color(0.13, 0.55, 0.13));
-	_named_colors.insert("fuchsia", Color(1.00, 0.00, 1.00));
-	_named_colors.insert("gainsboro", Color(0.86, 0.86, 0.86));
-	_named_colors.insert("ghostwhite", Color(0.97, 0.97, 1.00));
-	_named_colors.insert("gold", Color(1.00, 0.84, 0.00));
-	_named_colors.insert("goldenrod", Color(0.85, 0.65, 0.13));
-	_named_colors.insert("gray", Color(0.75, 0.75, 0.75));
-	_named_colors.insert("webgray", Color(0.50, 0.50, 0.50));
-	_named_colors.insert("green", Color(0.00, 1.00, 0.00));
-	_named_colors.insert("webgreen", Color(0.00, 0.50, 0.00));
-	_named_colors.insert("greenyellow", Color(0.68, 1.00, 0.18));
-	_named_colors.insert("honeydew", Color(0.94, 1.00, 0.94));
-	_named_colors.insert("hotpink", Color(1.00, 0.41, 0.71));
-	_named_colors.insert("indianred", Color(0.80, 0.36, 0.36));
-	_named_colors.insert("indigo", Color(0.29, 0.00, 0.51));
-	_named_colors.insert("ivory", Color(1.00, 1.00, 0.94));
-	_named_colors.insert("khaki", Color(0.94, 0.90, 0.55));
-	_named_colors.insert("lavender", Color(0.90, 0.90, 0.98));
-	_named_colors.insert("lavenderblush", Color(1.00, 0.94, 0.96));
-	_named_colors.insert("lawngreen", Color(0.49, 0.99, 0.00));
-	_named_colors.insert("lemonchiffon", Color(1.00, 0.98, 0.80));
-	_named_colors.insert("lightblue", Color(0.68, 0.85, 0.90));
-	_named_colors.insert("lightcoral", Color(0.94, 0.50, 0.50));
-	_named_colors.insert("lightcyan", Color(0.88, 1.00, 1.00));
-	_named_colors.insert("lightgoldenrod", Color(0.98, 0.98, 0.82));
-	_named_colors.insert("lightgray", Color(0.83, 0.83, 0.83));
-	_named_colors.insert("lightgreen", Color(0.56, 0.93, 0.56));
-	_named_colors.insert("lightpink", Color(1.00, 0.71, 0.76));
-	_named_colors.insert("lightsalmon", Color(1.00, 0.63, 0.48));
-	_named_colors.insert("lightseagreen", Color(0.13, 0.70, 0.67));
-	_named_colors.insert("lightskyblue", Color(0.53, 0.81, 0.98));
-	_named_colors.insert("lightslategray", Color(0.47, 0.53, 0.60));
-	_named_colors.insert("lightsteelblue", Color(0.69, 0.77, 0.87));
-	_named_colors.insert("lightyellow", Color(1.00, 1.00, 0.88));
-	_named_colors.insert("lime", Color(0.00, 1.00, 0.00));
-	_named_colors.insert("limegreen", Color(0.20, 0.80, 0.20));
-	_named_colors.insert("linen", Color(0.98, 0.94, 0.90));
-	_named_colors.insert("magenta", Color(1.00, 0.00, 1.00));
-	_named_colors.insert("maroon", Color(0.69, 0.19, 0.38));
-	_named_colors.insert("webmaroon", Color(0.50, 0.00, 0.00));
-	_named_colors.insert("mediumaquamarine", Color(0.40, 0.80, 0.67));
-	_named_colors.insert("mediumblue", Color(0.00, 0.00, 0.80));
-	_named_colors.insert("mediumorchid", Color(0.73, 0.33, 0.83));
-	_named_colors.insert("mediumpurple", Color(0.58, 0.44, 0.86));
-	_named_colors.insert("mediumseagreen", Color(0.24, 0.70, 0.44));
-	_named_colors.insert("mediumslateblue", Color(0.48, 0.41, 0.93));
-	_named_colors.insert("mediumspringgreen", Color(0.00, 0.98, 0.60));
-	_named_colors.insert("mediumturquoise", Color(0.28, 0.82, 0.80));
-	_named_colors.insert("mediumvioletred", Color(0.78, 0.08, 0.52));
-	_named_colors.insert("midnightblue", Color(0.10, 0.10, 0.44));
-	_named_colors.insert("mintcream", Color(0.96, 1.00, 0.98));
-	_named_colors.insert("mistyrose", Color(1.00, 0.89, 0.88));
-	_named_colors.insert("moccasin", Color(1.00, 0.89, 0.71));
-	_named_colors.insert("navajowhite", Color(1.00, 0.87, 0.68));
-	_named_colors.insert("navyblue", Color(0.00, 0.00, 0.50));
-	_named_colors.insert("oldlace", Color(0.99, 0.96, 0.90));
-	_named_colors.insert("olive", Color(0.50, 0.50, 0.00));
-	_named_colors.insert("olivedrab", Color(0.42, 0.56, 0.14));
-	_named_colors.insert("orange", Color(1.00, 0.65, 0.00));
-	_named_colors.insert("orangered", Color(1.00, 0.27, 0.00));
-	_named_colors.insert("orchid", Color(0.85, 0.44, 0.84));
-	_named_colors.insert("palegoldenrod", Color(0.93, 0.91, 0.67));
-	_named_colors.insert("palegreen", Color(0.60, 0.98, 0.60));
-	_named_colors.insert("paleturquoise", Color(0.69, 0.93, 0.93));
-	_named_colors.insert("palevioletred", Color(0.86, 0.44, 0.58));
-	_named_colors.insert("papayawhip", Color(1.00, 0.94, 0.84));
-	_named_colors.insert("peachpuff", Color(1.00, 0.85, 0.73));
-	_named_colors.insert("peru", Color(0.80, 0.52, 0.25));
-	_named_colors.insert("pink", Color(1.00, 0.75, 0.80));
-	_named_colors.insert("plum", Color(0.87, 0.63, 0.87));
-	_named_colors.insert("powderblue", Color(0.69, 0.88, 0.90));
-	_named_colors.insert("purple", Color(0.63, 0.13, 0.94));
-	_named_colors.insert("webpurple", Color(0.50, 0.00, 0.50));
-	_named_colors.insert("rebeccapurple", Color(0.40, 0.20, 0.60));
-	_named_colors.insert("red", Color(1.00, 0.00, 0.00));
-	_named_colors.insert("rosybrown", Color(0.74, 0.56, 0.56));
-	_named_colors.insert("royalblue", Color(0.25, 0.41, 0.88));
-	_named_colors.insert("saddlebrown", Color(0.55, 0.27, 0.07));
-	_named_colors.insert("salmon", Color(0.98, 0.50, 0.45));
-	_named_colors.insert("sandybrown", Color(0.96, 0.64, 0.38));
-	_named_colors.insert("seagreen", Color(0.18, 0.55, 0.34));
-	_named_colors.insert("seashell", Color(1.00, 0.96, 0.93));
-	_named_colors.insert("sienna", Color(0.63, 0.32, 0.18));
-	_named_colors.insert("silver", Color(0.75, 0.75, 0.75));
-	_named_colors.insert("skyblue", Color(0.53, 0.81, 0.92));
-	_named_colors.insert("slateblue", Color(0.42, 0.35, 0.80));
-	_named_colors.insert("slategray", Color(0.44, 0.50, 0.56));
-	_named_colors.insert("snow", Color(1.00, 0.98, 0.98));
-	_named_colors.insert("springgreen", Color(0.00, 1.00, 0.50));
-	_named_colors.insert("steelblue", Color(0.27, 0.51, 0.71));
-	_named_colors.insert("tan", Color(0.82, 0.71, 0.55));
-	_named_colors.insert("teal", Color(0.00, 0.50, 0.50));
-	_named_colors.insert("thistle", Color(0.85, 0.75, 0.85));
-	_named_colors.insert("tomato", Color(1.00, 0.39, 0.28));
-	_named_colors.insert("turquoise", Color(0.25, 0.88, 0.82));
-	_named_colors.insert("transparent", Color(1.00, 1.00, 1.00, 0.00));
-	_named_colors.insert("violet", Color(0.93, 0.51, 0.93));
-	_named_colors.insert("wheat", Color(0.96, 0.87, 0.70));
-	_named_colors.insert("white", Color(1.00, 1.00, 1.00));
-	_named_colors.insert("whitesmoke", Color(0.96, 0.96, 0.96));
-	_named_colors.insert("yellow", Color(1.00, 1.00, 0.00));
-	_named_colors.insert("yellowgreen", Color(0.60, 0.80, 0.20));
+	_named_colors.insert("aliceblue", Color::hex(0xF0F8FFFF));
+	_named_colors.insert("antiquewhite", Color::hex(0xFAEBD7FF));
+	_named_colors.insert("aqua", Color::hex(0x00FFFFFF));
+	_named_colors.insert("aquamarine", Color::hex(0x7FFFD4FF));
+	_named_colors.insert("azure", Color::hex(0xF0FFFFFF));
+	_named_colors.insert("beige", Color::hex(0xF5F5DCFF));
+	_named_colors.insert("bisque", Color::hex(0xFFE4C4FF));
+	_named_colors.insert("black", Color::hex(0x000000FF));
+	_named_colors.insert("blanchedalmond", Color::hex(0xFFEBCDFF));
+	_named_colors.insert("blue", Color::hex(0x0000FFFF));
+	_named_colors.insert("blueviolet", Color::hex(0x8A2BE2FF));
+	_named_colors.insert("brown", Color::hex(0xA52A2AFF));
+	_named_colors.insert("burlywood", Color::hex(0xDEB887FF));
+	_named_colors.insert("cadetblue", Color::hex(0x5F9EA0FF));
+	_named_colors.insert("chartreuse", Color::hex(0x7FFF00FF));
+	_named_colors.insert("chocolate", Color::hex(0xD2691EFF));
+	_named_colors.insert("coral", Color::hex(0xFF7F50FF));
+	_named_colors.insert("cornflower", Color::hex(0x6495EDFF));
+	_named_colors.insert("cornsilk", Color::hex(0xFFF8DCFF));
+	_named_colors.insert("crimson", Color::hex(0xDC143CFF));
+	_named_colors.insert("cyan", Color::hex(0x00FFFFFF));
+	_named_colors.insert("darkblue", Color::hex(0x00008BFF));
+	_named_colors.insert("darkcyan", Color::hex(0x008B8BFF));
+	_named_colors.insert("darkgoldenrod", Color::hex(0xB8860BFF));
+	_named_colors.insert("darkgray", Color::hex(0xA9A9A9FF));
+	_named_colors.insert("darkgreen", Color::hex(0x006400FF));
+	_named_colors.insert("darkkhaki", Color::hex(0xBDB76BFF));
+	_named_colors.insert("darkmagenta", Color::hex(0x8B008BFF));
+	_named_colors.insert("darkolivegreen", Color::hex(0x556B2FFF));
+	_named_colors.insert("darkorange", Color::hex(0xFF8C00FF));
+	_named_colors.insert("darkorchid", Color::hex(0x9932CCFF));
+	_named_colors.insert("darkred", Color::hex(0x8B0000FF));
+	_named_colors.insert("darksalmon", Color::hex(0xE9967AFF));
+	_named_colors.insert("darkseagreen", Color::hex(0x8FBC8FFF));
+	_named_colors.insert("darkslateblue", Color::hex(0x483D8BFF));
+	_named_colors.insert("darkslategray", Color::hex(0x2F4F4FFF));
+	_named_colors.insert("darkturquoise", Color::hex(0x00CED1FF));
+	_named_colors.insert("darkviolet", Color::hex(0x9400D3FF));
+	_named_colors.insert("deeppink", Color::hex(0xFF1493FF));
+	_named_colors.insert("deepskyblue", Color::hex(0x00BFFFFF));
+	_named_colors.insert("dimgray", Color::hex(0x696969FF));
+	_named_colors.insert("dodgerblue", Color::hex(0x1E90FFFF));
+	_named_colors.insert("firebrick", Color::hex(0xB22222FF));
+	_named_colors.insert("floralwhite", Color::hex(0xFFFAF0FF));
+	_named_colors.insert("forestgreen", Color::hex(0x228B22FF));
+	_named_colors.insert("fuchsia", Color::hex(0xFF00FFFF));
+	_named_colors.insert("gainsboro", Color::hex(0xDCDCDCFF));
+	_named_colors.insert("ghostwhite", Color::hex(0xF8F8FFFF));
+	_named_colors.insert("gold", Color::hex(0xFFD700FF));
+	_named_colors.insert("goldenrod", Color::hex(0xDAA520FF));
+	_named_colors.insert("gray", Color::hex(0xBEBEBEFF));
+	_named_colors.insert("green", Color::hex(0x00FF00FF));
+	_named_colors.insert("greenyellow", Color::hex(0xADFF2FFF));
+	_named_colors.insert("honeydew", Color::hex(0xF0FFF0FF));
+	_named_colors.insert("hotpink", Color::hex(0xFF69B4FF));
+	_named_colors.insert("indianred", Color::hex(0xCD5C5CFF));
+	_named_colors.insert("indigo", Color::hex(0x4B0082FF));
+	_named_colors.insert("ivory", Color::hex(0xFFFFF0FF));
+	_named_colors.insert("khaki", Color::hex(0xF0E68CFF));
+	_named_colors.insert("lavender", Color::hex(0xE6E6FAFF));
+	_named_colors.insert("lavenderblush", Color::hex(0xFFF0F5FF));
+	_named_colors.insert("lawngreen", Color::hex(0x7CFC00FF));
+	_named_colors.insert("lemonchiffon", Color::hex(0xFFFACDFF));
+	_named_colors.insert("lightblue", Color::hex(0xADD8E6FF));
+	_named_colors.insert("lightcoral", Color::hex(0xF08080FF));
+	_named_colors.insert("lightcyan", Color::hex(0xE0FFFFFF));
+	_named_colors.insert("lightgoldenrod", Color::hex(0xFAFAD2FF));
+	_named_colors.insert("lightgray", Color::hex(0xD3D3D3FF));
+	_named_colors.insert("lightgreen", Color::hex(0x90EE90FF));
+	_named_colors.insert("lightpink", Color::hex(0xFFB6C1FF));
+	_named_colors.insert("lightsalmon", Color::hex(0xFFA07AFF));
+	_named_colors.insert("lightseagreen", Color::hex(0x20B2AAFF));
+	_named_colors.insert("lightskyblue", Color::hex(0x87CEFAFF));
+	_named_colors.insert("lightslategray", Color::hex(0x778899FF));
+	_named_colors.insert("lightsteelblue", Color::hex(0xB0C4DEFF));
+	_named_colors.insert("lightyellow", Color::hex(0xFFFFE0FF));
+	_named_colors.insert("lime", Color::hex(0x00FF00FF));
+	_named_colors.insert("limegreen", Color::hex(0x32CD32FF));
+	_named_colors.insert("linen", Color::hex(0xFAF0E6FF));
+	_named_colors.insert("magenta", Color::hex(0xFF00FFFF));
+	_named_colors.insert("maroon", Color::hex(0xB03060FF));
+	_named_colors.insert("mediumaquamarine", Color::hex(0x66CDAAFF));
+	_named_colors.insert("mediumblue", Color::hex(0x0000CDFF));
+	_named_colors.insert("mediumorchid", Color::hex(0xBA55D3FF));
+	_named_colors.insert("mediumpurple", Color::hex(0x9370DBFF));
+	_named_colors.insert("mediumseagreen", Color::hex(0x3CB371FF));
+	_named_colors.insert("mediumslateblue", Color::hex(0x7B68EEFF));
+	_named_colors.insert("mediumspringgreen", Color::hex(0x00FA9AFF));
+	_named_colors.insert("mediumturquoise", Color::hex(0x48D1CCFF));
+	_named_colors.insert("mediumvioletred", Color::hex(0xC71585FF));
+	_named_colors.insert("midnightblue", Color::hex(0x191970FF));
+	_named_colors.insert("mintcream", Color::hex(0xF5FFFAFF));
+	_named_colors.insert("mistyrose", Color::hex(0xFFE4E1FF));
+	_named_colors.insert("moccasin", Color::hex(0xFFE4B5FF));
+	_named_colors.insert("navajowhite", Color::hex(0xFFDEADFF));
+	_named_colors.insert("navyblue", Color::hex(0x000080FF));
+	_named_colors.insert("oldlace", Color::hex(0xFDF5E6FF));
+	_named_colors.insert("olive", Color::hex(0x808000FF));
+	_named_colors.insert("olivedrab", Color::hex(0x6B8E23FF));
+	_named_colors.insert("orange", Color::hex(0xFFA500FF));
+	_named_colors.insert("orangered", Color::hex(0xFF4500FF));
+	_named_colors.insert("orchid", Color::hex(0xDA70D6FF));
+	_named_colors.insert("palegoldenrod", Color::hex(0xEEE8AAFF));
+	_named_colors.insert("palegreen", Color::hex(0x98FB98FF));
+	_named_colors.insert("paleturquoise", Color::hex(0xAFEEEEFF));
+	_named_colors.insert("palevioletred", Color::hex(0xDB7093FF));
+	_named_colors.insert("papayawhip", Color::hex(0xFFEFD5FF));
+	_named_colors.insert("peachpuff", Color::hex(0xFFDAB9FF));
+	_named_colors.insert("peru", Color::hex(0xCD853FFF));
+	_named_colors.insert("pink", Color::hex(0xFFC0CBFF));
+	_named_colors.insert("plum", Color::hex(0xDDA0DDFF));
+	_named_colors.insert("powderblue", Color::hex(0xB0E0E6FF));
+	_named_colors.insert("purple", Color::hex(0xA020F0FF));
+	_named_colors.insert("rebeccapurple", Color::hex(0x663399FF));
+	_named_colors.insert("red", Color::hex(0xFF0000FF));
+	_named_colors.insert("rosybrown", Color::hex(0xBC8F8FFF));
+	_named_colors.insert("royalblue", Color::hex(0x4169E1FF));
+	_named_colors.insert("saddlebrown", Color::hex(0x8B4513FF));
+	_named_colors.insert("salmon", Color::hex(0xFA8072FF));
+	_named_colors.insert("sandybrown", Color::hex(0xF4A460FF));
+	_named_colors.insert("seagreen", Color::hex(0x2E8B57FF));
+	_named_colors.insert("seashell", Color::hex(0xFFF5EEFF));
+	_named_colors.insert("sienna", Color::hex(0xA0522DFF));
+	_named_colors.insert("silver", Color::hex(0xC0C0C0FF));
+	_named_colors.insert("skyblue", Color::hex(0x87CEEBFF));
+	_named_colors.insert("slateblue", Color::hex(0x6A5ACDFF));
+	_named_colors.insert("slategray", Color::hex(0x708090FF));
+	_named_colors.insert("snow", Color::hex(0xFFFAFAFF));
+	_named_colors.insert("springgreen", Color::hex(0x00FF7FFF));
+	_named_colors.insert("steelblue", Color::hex(0x4682B4FF));
+	_named_colors.insert("tan", Color::hex(0xD2B48CFF));
+	_named_colors.insert("teal", Color::hex(0x008080FF));
+	_named_colors.insert("thistle", Color::hex(0xD8BFD8FF));
+	_named_colors.insert("tomato", Color::hex(0xFF6347FF));
+	_named_colors.insert("transparent", Color::hex(0xFFFFFF00));
+	_named_colors.insert("turquoise", Color::hex(0x40E0D0FF));
+	_named_colors.insert("violet", Color::hex(0xEE82EEFF));
+	_named_colors.insert("webgray", Color::hex(0x808080FF));
+	_named_colors.insert("webgreen", Color::hex(0x008000FF));
+	_named_colors.insert("webmaroon", Color::hex(0x800000FF));
+	_named_colors.insert("webpurple", Color::hex(0x800080FF));
+	_named_colors.insert("wheat", Color::hex(0xF5DEB3FF));
+	_named_colors.insert("white", Color::hex(0xFFFFFFFF));
+	_named_colors.insert("whitesmoke", Color::hex(0xF5F5F5FF));
+	_named_colors.insert("yellow", Color::hex(0xFFFF00FF));
+	_named_colors.insert("yellowgreen", Color::hex(0x9ACD32FF));
 }
 }

+ 1 - 0
core/os/thread.cpp

@@ -28,6 +28,7 @@
 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 /*************************************************************************/
 /*************************************************************************/
 
 
+#include "platform_config.h"
 #ifndef PLATFORM_THREAD_OVERRIDE // See details in thread.h
 #ifndef PLATFORM_THREAD_OVERRIDE // See details in thread.h
 
 
 #include "thread.h"
 #include "thread.h"

+ 1 - 0
core/os/thread.h

@@ -28,6 +28,7 @@
 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 /*************************************************************************/
 /*************************************************************************/
 
 
+#include "platform_config.h"
 // Define PLATFORM_THREAD_OVERRIDE in your platform's `platform_config.h`
 // Define PLATFORM_THREAD_OVERRIDE in your platform's `platform_config.h`
 // to use a custom Thread implementation defined in `platform/[your_platform]/platform_thread.h`
 // to use a custom Thread implementation defined in `platform/[your_platform]/platform_thread.h`
 // Overriding the platform implementation is required in some proprietary platforms
 // Overriding the platform implementation is required in some proprietary platforms

+ 133 - 133
doc/classes/Color.xml

@@ -280,343 +280,343 @@
 		</member>
 		</member>
 	</members>
 	</members>
 	<constants>
 	<constants>
-		<constant name="aliceblue" value="Color( 0.94, 0.97, 1, 1 )">
+		<constant name="aliceblue" value="Color( 0.941176, 0.972549, 1, 1 )">
 			Alice blue color.
 			Alice blue color.
 		</constant>
 		</constant>
-		<constant name="antiquewhite" value="Color( 0.98, 0.92, 0.84, 1 )">
+		<constant name="antiquewhite" value="Color( 0.980392, 0.921569, 0.843137, 1 )">
 			Antique white color.
 			Antique white color.
 		</constant>
 		</constant>
 		<constant name="aqua" value="Color( 0, 1, 1, 1 )">
 		<constant name="aqua" value="Color( 0, 1, 1, 1 )">
 			Aqua color.
 			Aqua color.
 		</constant>
 		</constant>
-		<constant name="aquamarine" value="Color( 0.5, 1, 0.83, 1 )">
+		<constant name="aquamarine" value="Color( 0.498039, 1, 0.831373, 1 )">
 			Aquamarine color.
 			Aquamarine color.
 		</constant>
 		</constant>
-		<constant name="azure" value="Color( 0.94, 1, 1, 1 )">
+		<constant name="azure" value="Color( 0.941176, 1, 1, 1 )">
 			Azure color.
 			Azure color.
 		</constant>
 		</constant>
-		<constant name="beige" value="Color( 0.96, 0.96, 0.86, 1 )">
+		<constant name="beige" value="Color( 0.960784, 0.960784, 0.862745, 1 )">
 			Beige color.
 			Beige color.
 		</constant>
 		</constant>
-		<constant name="bisque" value="Color( 1, 0.89, 0.77, 1 )">
+		<constant name="bisque" value="Color( 1, 0.894118, 0.768627, 1 )">
 			Bisque color.
 			Bisque color.
 		</constant>
 		</constant>
 		<constant name="black" value="Color( 0, 0, 0, 1 )">
 		<constant name="black" value="Color( 0, 0, 0, 1 )">
 			Black color.
 			Black color.
 		</constant>
 		</constant>
-		<constant name="blanchedalmond" value="Color( 1, 0.92, 0.8, 1 )">
+		<constant name="blanchedalmond" value="Color( 1, 0.921569, 0.803922, 1 )">
 			Blanche almond color.
 			Blanche almond color.
 		</constant>
 		</constant>
 		<constant name="blue" value="Color( 0, 0, 1, 1 )">
 		<constant name="blue" value="Color( 0, 0, 1, 1 )">
 			Blue color.
 			Blue color.
 		</constant>
 		</constant>
-		<constant name="blueviolet" value="Color( 0.54, 0.17, 0.89, 1 )">
+		<constant name="blueviolet" value="Color( 0.541176, 0.168627, 0.886275, 1 )">
 			Blue violet color.
 			Blue violet color.
 		</constant>
 		</constant>
-		<constant name="brown" value="Color( 0.65, 0.16, 0.16, 1 )">
+		<constant name="brown" value="Color( 0.647059, 0.164706, 0.164706, 1 )">
 			Brown color.
 			Brown color.
 		</constant>
 		</constant>
-		<constant name="burlywood" value="Color( 0.87, 0.72, 0.53, 1 )">
+		<constant name="burlywood" value="Color( 0.870588, 0.721569, 0.529412, 1 )">
 			Burly wood color.
 			Burly wood color.
 		</constant>
 		</constant>
-		<constant name="cadetblue" value="Color( 0.37, 0.62, 0.63, 1 )">
+		<constant name="cadetblue" value="Color( 0.372549, 0.619608, 0.627451, 1 )">
 			Cadet blue color.
 			Cadet blue color.
 		</constant>
 		</constant>
-		<constant name="chartreuse" value="Color( 0.5, 1, 0, 1 )">
+		<constant name="chartreuse" value="Color( 0.498039, 1, 0, 1 )">
 			Chartreuse color.
 			Chartreuse color.
 		</constant>
 		</constant>
-		<constant name="chocolate" value="Color( 0.82, 0.41, 0.12, 1 )">
+		<constant name="chocolate" value="Color( 0.823529, 0.411765, 0.117647, 1 )">
 			Chocolate color.
 			Chocolate color.
 		</constant>
 		</constant>
-		<constant name="coral" value="Color( 1, 0.5, 0.31, 1 )">
+		<constant name="coral" value="Color( 1, 0.498039, 0.313726, 1 )">
 			Coral color.
 			Coral color.
 		</constant>
 		</constant>
-		<constant name="cornflower" value="Color( 0.39, 0.58, 0.93, 1 )">
+		<constant name="cornflower" value="Color( 0.392157, 0.584314, 0.929412, 1 )">
 			Cornflower color.
 			Cornflower color.
 		</constant>
 		</constant>
-		<constant name="cornsilk" value="Color( 1, 0.97, 0.86, 1 )">
+		<constant name="cornsilk" value="Color( 1, 0.972549, 0.862745, 1 )">
 			Corn silk color.
 			Corn silk color.
 		</constant>
 		</constant>
-		<constant name="crimson" value="Color( 0.86, 0.08, 0.24, 1 )">
+		<constant name="crimson" value="Color( 0.862745, 0.0784314, 0.235294, 1 )">
 			Crimson color.
 			Crimson color.
 		</constant>
 		</constant>
 		<constant name="cyan" value="Color( 0, 1, 1, 1 )">
 		<constant name="cyan" value="Color( 0, 1, 1, 1 )">
 			Cyan color.
 			Cyan color.
 		</constant>
 		</constant>
-		<constant name="darkblue" value="Color( 0, 0, 0.55, 1 )">
+		<constant name="darkblue" value="Color( 0, 0, 0.545098, 1 )">
 			Dark blue color.
 			Dark blue color.
 		</constant>
 		</constant>
-		<constant name="darkcyan" value="Color( 0, 0.55, 0.55, 1 )">
+		<constant name="darkcyan" value="Color( 0, 0.545098, 0.545098, 1 )">
 			Dark cyan color.
 			Dark cyan color.
 		</constant>
 		</constant>
-		<constant name="darkgoldenrod" value="Color( 0.72, 0.53, 0.04, 1 )">
+		<constant name="darkgoldenrod" value="Color( 0.721569, 0.52549, 0.0431373, 1 )">
 			Dark goldenrod color.
 			Dark goldenrod color.
 		</constant>
 		</constant>
-		<constant name="darkgray" value="Color( 0.66, 0.66, 0.66, 1 )">
+		<constant name="darkgray" value="Color( 0.662745, 0.662745, 0.662745, 1 )">
 			Dark gray color.
 			Dark gray color.
 		</constant>
 		</constant>
-		<constant name="darkgreen" value="Color( 0, 0.39, 0, 1 )">
+		<constant name="darkgreen" value="Color( 0, 0.392157, 0, 1 )">
 			Dark green color.
 			Dark green color.
 		</constant>
 		</constant>
-		<constant name="darkkhaki" value="Color( 0.74, 0.72, 0.42, 1 )">
+		<constant name="darkkhaki" value="Color( 0.741176, 0.717647, 0.419608, 1 )">
 			Dark khaki color.
 			Dark khaki color.
 		</constant>
 		</constant>
-		<constant name="darkmagenta" value="Color( 0.55, 0, 0.55, 1 )">
+		<constant name="darkmagenta" value="Color( 0.545098, 0, 0.545098, 1 )">
 			Dark magenta color.
 			Dark magenta color.
 		</constant>
 		</constant>
-		<constant name="darkolivegreen" value="Color( 0.33, 0.42, 0.18, 1 )">
+		<constant name="darkolivegreen" value="Color( 0.333333, 0.419608, 0.184314, 1 )">
 			Dark olive green color.
 			Dark olive green color.
 		</constant>
 		</constant>
-		<constant name="darkorange" value="Color( 1, 0.55, 0, 1 )">
+		<constant name="darkorange" value="Color( 1, 0.54902, 0, 1 )">
 			Dark orange color.
 			Dark orange color.
 		</constant>
 		</constant>
-		<constant name="darkorchid" value="Color( 0.6, 0.2, 0.8, 1 )">
+		<constant name="darkorchid" value="Color( 0.6, 0.196078, 0.8, 1 )">
 			Dark orchid color.
 			Dark orchid color.
 		</constant>
 		</constant>
-		<constant name="darkred" value="Color( 0.55, 0, 0, 1 )">
+		<constant name="darkred" value="Color( 0.545098, 0, 0, 1 )">
 			Dark red color.
 			Dark red color.
 		</constant>
 		</constant>
-		<constant name="darksalmon" value="Color( 0.91, 0.59, 0.48, 1 )">
+		<constant name="darksalmon" value="Color( 0.913725, 0.588235, 0.478431, 1 )">
 			Dark salmon color.
 			Dark salmon color.
 		</constant>
 		</constant>
-		<constant name="darkseagreen" value="Color( 0.56, 0.74, 0.56, 1 )">
+		<constant name="darkseagreen" value="Color( 0.560784, 0.737255, 0.560784, 1 )">
 			Dark sea green color.
 			Dark sea green color.
 		</constant>
 		</constant>
-		<constant name="darkslateblue" value="Color( 0.28, 0.24, 0.55, 1 )">
+		<constant name="darkslateblue" value="Color( 0.282353, 0.239216, 0.545098, 1 )">
 			Dark slate blue color.
 			Dark slate blue color.
 		</constant>
 		</constant>
-		<constant name="darkslategray" value="Color( 0.18, 0.31, 0.31, 1 )">
+		<constant name="darkslategray" value="Color( 0.184314, 0.309804, 0.309804, 1 )">
 			Dark slate gray color.
 			Dark slate gray color.
 		</constant>
 		</constant>
-		<constant name="darkturquoise" value="Color( 0, 0.81, 0.82, 1 )">
+		<constant name="darkturquoise" value="Color( 0, 0.807843, 0.819608, 1 )">
 			Dark turquoise color.
 			Dark turquoise color.
 		</constant>
 		</constant>
-		<constant name="darkviolet" value="Color( 0.58, 0, 0.83, 1 )">
+		<constant name="darkviolet" value="Color( 0.580392, 0, 0.827451, 1 )">
 			Dark violet color.
 			Dark violet color.
 		</constant>
 		</constant>
-		<constant name="deeppink" value="Color( 1, 0.08, 0.58, 1 )">
+		<constant name="deeppink" value="Color( 1, 0.0784314, 0.576471, 1 )">
 			Deep pink color.
 			Deep pink color.
 		</constant>
 		</constant>
-		<constant name="deepskyblue" value="Color( 0, 0.75, 1, 1 )">
+		<constant name="deepskyblue" value="Color( 0, 0.74902, 1, 1 )">
 			Deep sky blue color.
 			Deep sky blue color.
 		</constant>
 		</constant>
-		<constant name="dimgray" value="Color( 0.41, 0.41, 0.41, 1 )">
+		<constant name="dimgray" value="Color( 0.411765, 0.411765, 0.411765, 1 )">
 			Dim gray color.
 			Dim gray color.
 		</constant>
 		</constant>
-		<constant name="dodgerblue" value="Color( 0.12, 0.56, 1, 1 )">
+		<constant name="dodgerblue" value="Color( 0.117647, 0.564706, 1, 1 )">
 			Dodger blue color.
 			Dodger blue color.
 		</constant>
 		</constant>
-		<constant name="firebrick" value="Color( 0.7, 0.13, 0.13, 1 )">
+		<constant name="firebrick" value="Color( 0.698039, 0.133333, 0.133333, 1 )">
 			Firebrick color.
 			Firebrick color.
 		</constant>
 		</constant>
-		<constant name="floralwhite" value="Color( 1, 0.98, 0.94, 1 )">
+		<constant name="floralwhite" value="Color( 1, 0.980392, 0.941176, 1 )">
 			Floral white color.
 			Floral white color.
 		</constant>
 		</constant>
-		<constant name="forestgreen" value="Color( 0.13, 0.55, 0.13, 1 )">
+		<constant name="forestgreen" value="Color( 0.133333, 0.545098, 0.133333, 1 )">
 			Forest green color.
 			Forest green color.
 		</constant>
 		</constant>
 		<constant name="fuchsia" value="Color( 1, 0, 1, 1 )">
 		<constant name="fuchsia" value="Color( 1, 0, 1, 1 )">
 			Fuchsia color.
 			Fuchsia color.
 		</constant>
 		</constant>
-		<constant name="gainsboro" value="Color( 0.86, 0.86, 0.86, 1 )">
+		<constant name="gainsboro" value="Color( 0.862745, 0.862745, 0.862745, 1 )">
 			Gainsboro color.
 			Gainsboro color.
 		</constant>
 		</constant>
-		<constant name="ghostwhite" value="Color( 0.97, 0.97, 1, 1 )">
+		<constant name="ghostwhite" value="Color( 0.972549, 0.972549, 1, 1 )">
 			Ghost white color.
 			Ghost white color.
 		</constant>
 		</constant>
-		<constant name="gold" value="Color( 1, 0.84, 0, 1 )">
+		<constant name="gold" value="Color( 1, 0.843137, 0, 1 )">
 			Gold color.
 			Gold color.
 		</constant>
 		</constant>
-		<constant name="goldenrod" value="Color( 0.85, 0.65, 0.13, 1 )">
+		<constant name="goldenrod" value="Color( 0.854902, 0.647059, 0.12549, 1 )">
 			Goldenrod color.
 			Goldenrod color.
 		</constant>
 		</constant>
-		<constant name="gray" value="Color( 0.75, 0.75, 0.75, 1 )">
+		<constant name="gray" value="Color( 0.745098, 0.745098, 0.745098, 1 )">
 			Gray color.
 			Gray color.
 		</constant>
 		</constant>
 		<constant name="green" value="Color( 0, 1, 0, 1 )">
 		<constant name="green" value="Color( 0, 1, 0, 1 )">
 			Green color.
 			Green color.
 		</constant>
 		</constant>
-		<constant name="greenyellow" value="Color( 0.68, 1, 0.18, 1 )">
+		<constant name="greenyellow" value="Color( 0.678431, 1, 0.184314, 1 )">
 			Green yellow color.
 			Green yellow color.
 		</constant>
 		</constant>
-		<constant name="honeydew" value="Color( 0.94, 1, 0.94, 1 )">
+		<constant name="honeydew" value="Color( 0.941176, 1, 0.941176, 1 )">
 			Honeydew color.
 			Honeydew color.
 		</constant>
 		</constant>
-		<constant name="hotpink" value="Color( 1, 0.41, 0.71, 1 )">
+		<constant name="hotpink" value="Color( 1, 0.411765, 0.705882, 1 )">
 			Hot pink color.
 			Hot pink color.
 		</constant>
 		</constant>
-		<constant name="indianred" value="Color( 0.8, 0.36, 0.36, 1 )">
+		<constant name="indianred" value="Color( 0.803922, 0.360784, 0.360784, 1 )">
 			Indian red color.
 			Indian red color.
 		</constant>
 		</constant>
-		<constant name="indigo" value="Color( 0.29, 0, 0.51, 1 )">
+		<constant name="indigo" value="Color( 0.294118, 0, 0.509804, 1 )">
 			Indigo color.
 			Indigo color.
 		</constant>
 		</constant>
-		<constant name="ivory" value="Color( 1, 1, 0.94, 1 )">
+		<constant name="ivory" value="Color( 1, 1, 0.941176, 1 )">
 			Ivory color.
 			Ivory color.
 		</constant>
 		</constant>
-		<constant name="khaki" value="Color( 0.94, 0.9, 0.55, 1 )">
+		<constant name="khaki" value="Color( 0.941176, 0.901961, 0.54902, 1 )">
 			Khaki color.
 			Khaki color.
 		</constant>
 		</constant>
-		<constant name="lavender" value="Color( 0.9, 0.9, 0.98, 1 )">
+		<constant name="lavender" value="Color( 0.901961, 0.901961, 0.980392, 1 )">
 			Lavender color.
 			Lavender color.
 		</constant>
 		</constant>
-		<constant name="lavenderblush" value="Color( 1, 0.94, 0.96, 1 )">
+		<constant name="lavenderblush" value="Color( 1, 0.941176, 0.960784, 1 )">
 			Lavender blush color.
 			Lavender blush color.
 		</constant>
 		</constant>
-		<constant name="lawngreen" value="Color( 0.49, 0.99, 0, 1 )">
+		<constant name="lawngreen" value="Color( 0.486275, 0.988235, 0, 1 )">
 			Lawn green color.
 			Lawn green color.
 		</constant>
 		</constant>
-		<constant name="lemonchiffon" value="Color( 1, 0.98, 0.8, 1 )">
+		<constant name="lemonchiffon" value="Color( 1, 0.980392, 0.803922, 1 )">
 			Lemon chiffon color.
 			Lemon chiffon color.
 		</constant>
 		</constant>
-		<constant name="lightblue" value="Color( 0.68, 0.85, 0.9, 1 )">
+		<constant name="lightblue" value="Color( 0.678431, 0.847059, 0.901961, 1 )">
 			Light blue color.
 			Light blue color.
 		</constant>
 		</constant>
-		<constant name="lightcoral" value="Color( 0.94, 0.5, 0.5, 1 )">
+		<constant name="lightcoral" value="Color( 0.941176, 0.501961, 0.501961, 1 )">
 			Light coral color.
 			Light coral color.
 		</constant>
 		</constant>
-		<constant name="lightcyan" value="Color( 0.88, 1, 1, 1 )">
+		<constant name="lightcyan" value="Color( 0.878431, 1, 1, 1 )">
 			Light cyan color.
 			Light cyan color.
 		</constant>
 		</constant>
-		<constant name="lightgoldenrod" value="Color( 0.98, 0.98, 0.82, 1 )">
+		<constant name="lightgoldenrod" value="Color( 0.980392, 0.980392, 0.823529, 1 )">
 			Light goldenrod color.
 			Light goldenrod color.
 		</constant>
 		</constant>
-		<constant name="lightgray" value="Color( 0.83, 0.83, 0.83, 1 )">
+		<constant name="lightgray" value="Color( 0.827451, 0.827451, 0.827451, 1 )">
 			Light gray color.
 			Light gray color.
 		</constant>
 		</constant>
-		<constant name="lightgreen" value="Color( 0.56, 0.93, 0.56, 1 )">
+		<constant name="lightgreen" value="Color( 0.564706, 0.933333, 0.564706, 1 )">
 			Light green color.
 			Light green color.
 		</constant>
 		</constant>
-		<constant name="lightpink" value="Color( 1, 0.71, 0.76, 1 )">
+		<constant name="lightpink" value="Color( 1, 0.713726, 0.756863, 1 )">
 			Light pink color.
 			Light pink color.
 		</constant>
 		</constant>
-		<constant name="lightsalmon" value="Color( 1, 0.63, 0.48, 1 )">
+		<constant name="lightsalmon" value="Color( 1, 0.627451, 0.478431, 1 )">
 			Light salmon color.
 			Light salmon color.
 		</constant>
 		</constant>
-		<constant name="lightseagreen" value="Color( 0.13, 0.7, 0.67, 1 )">
+		<constant name="lightseagreen" value="Color( 0.12549, 0.698039, 0.666667, 1 )">
 			Light sea green color.
 			Light sea green color.
 		</constant>
 		</constant>
-		<constant name="lightskyblue" value="Color( 0.53, 0.81, 0.98, 1 )">
+		<constant name="lightskyblue" value="Color( 0.529412, 0.807843, 0.980392, 1 )">
 			Light sky blue color.
 			Light sky blue color.
 		</constant>
 		</constant>
-		<constant name="lightslategray" value="Color( 0.47, 0.53, 0.6, 1 )">
+		<constant name="lightslategray" value="Color( 0.466667, 0.533333, 0.6, 1 )">
 			Light slate gray color.
 			Light slate gray color.
 		</constant>
 		</constant>
-		<constant name="lightsteelblue" value="Color( 0.69, 0.77, 0.87, 1 )">
+		<constant name="lightsteelblue" value="Color( 0.690196, 0.768627, 0.870588, 1 )">
 			Light steel blue color.
 			Light steel blue color.
 		</constant>
 		</constant>
-		<constant name="lightyellow" value="Color( 1, 1, 0.88, 1 )">
+		<constant name="lightyellow" value="Color( 1, 1, 0.878431, 1 )">
 			Light yellow color.
 			Light yellow color.
 		</constant>
 		</constant>
 		<constant name="lime" value="Color( 0, 1, 0, 1 )">
 		<constant name="lime" value="Color( 0, 1, 0, 1 )">
 			Lime color.
 			Lime color.
 		</constant>
 		</constant>
-		<constant name="limegreen" value="Color( 0.2, 0.8, 0.2, 1 )">
+		<constant name="limegreen" value="Color( 0.196078, 0.803922, 0.196078, 1 )">
 			Lime green color.
 			Lime green color.
 		</constant>
 		</constant>
-		<constant name="linen" value="Color( 0.98, 0.94, 0.9, 1 )">
+		<constant name="linen" value="Color( 0.980392, 0.941176, 0.901961, 1 )">
 			Linen color.
 			Linen color.
 		</constant>
 		</constant>
 		<constant name="magenta" value="Color( 1, 0, 1, 1 )">
 		<constant name="magenta" value="Color( 1, 0, 1, 1 )">
 			Magenta color.
 			Magenta color.
 		</constant>
 		</constant>
-		<constant name="maroon" value="Color( 0.69, 0.19, 0.38, 1 )">
+		<constant name="maroon" value="Color( 0.690196, 0.188235, 0.376471, 1 )">
 			Maroon color.
 			Maroon color.
 		</constant>
 		</constant>
-		<constant name="mediumaquamarine" value="Color( 0.4, 0.8, 0.67, 1 )">
+		<constant name="mediumaquamarine" value="Color( 0.4, 0.803922, 0.666667, 1 )">
 			Medium aquamarine color.
 			Medium aquamarine color.
 		</constant>
 		</constant>
-		<constant name="mediumblue" value="Color( 0, 0, 0.8, 1 )">
+		<constant name="mediumblue" value="Color( 0, 0, 0.803922, 1 )">
 			Medium blue color.
 			Medium blue color.
 		</constant>
 		</constant>
-		<constant name="mediumorchid" value="Color( 0.73, 0.33, 0.83, 1 )">
+		<constant name="mediumorchid" value="Color( 0.729412, 0.333333, 0.827451, 1 )">
 			Medium orchid color.
 			Medium orchid color.
 		</constant>
 		</constant>
-		<constant name="mediumpurple" value="Color( 0.58, 0.44, 0.86, 1 )">
+		<constant name="mediumpurple" value="Color( 0.576471, 0.439216, 0.858824, 1 )">
 			Medium purple color.
 			Medium purple color.
 		</constant>
 		</constant>
-		<constant name="mediumseagreen" value="Color( 0.24, 0.7, 0.44, 1 )">
+		<constant name="mediumseagreen" value="Color( 0.235294, 0.701961, 0.443137, 1 )">
 			Medium sea green color.
 			Medium sea green color.
 		</constant>
 		</constant>
-		<constant name="mediumslateblue" value="Color( 0.48, 0.41, 0.93, 1 )">
+		<constant name="mediumslateblue" value="Color( 0.482353, 0.407843, 0.933333, 1 )">
 			Medium slate blue color.
 			Medium slate blue color.
 		</constant>
 		</constant>
-		<constant name="mediumspringgreen" value="Color( 0, 0.98, 0.6, 1 )">
+		<constant name="mediumspringgreen" value="Color( 0, 0.980392, 0.603922, 1 )">
 			Medium spring green color.
 			Medium spring green color.
 		</constant>
 		</constant>
-		<constant name="mediumturquoise" value="Color( 0.28, 0.82, 0.8, 1 )">
+		<constant name="mediumturquoise" value="Color( 0.282353, 0.819608, 0.8, 1 )">
 			Medium turquoise color.
 			Medium turquoise color.
 		</constant>
 		</constant>
-		<constant name="mediumvioletred" value="Color( 0.78, 0.08, 0.52, 1 )">
+		<constant name="mediumvioletred" value="Color( 0.780392, 0.0823529, 0.521569, 1 )">
 			Medium violet red color.
 			Medium violet red color.
 		</constant>
 		</constant>
-		<constant name="midnightblue" value="Color( 0.1, 0.1, 0.44, 1 )">
+		<constant name="midnightblue" value="Color( 0.0980392, 0.0980392, 0.439216, 1 )">
 			Midnight blue color.
 			Midnight blue color.
 		</constant>
 		</constant>
-		<constant name="mintcream" value="Color( 0.96, 1, 0.98, 1 )">
+		<constant name="mintcream" value="Color( 0.960784, 1, 0.980392, 1 )">
 			Mint cream color.
 			Mint cream color.
 		</constant>
 		</constant>
-		<constant name="mistyrose" value="Color( 1, 0.89, 0.88, 1 )">
+		<constant name="mistyrose" value="Color( 1, 0.894118, 0.882353, 1 )">
 			Misty rose color.
 			Misty rose color.
 		</constant>
 		</constant>
-		<constant name="moccasin" value="Color( 1, 0.89, 0.71, 1 )">
+		<constant name="moccasin" value="Color( 1, 0.894118, 0.709804, 1 )">
 			Moccasin color.
 			Moccasin color.
 		</constant>
 		</constant>
-		<constant name="navajowhite" value="Color( 1, 0.87, 0.68, 1 )">
+		<constant name="navajowhite" value="Color( 1, 0.870588, 0.678431, 1 )">
 			Navajo white color.
 			Navajo white color.
 		</constant>
 		</constant>
-		<constant name="navyblue" value="Color( 0, 0, 0.5, 1 )">
+		<constant name="navyblue" value="Color( 0, 0, 0.501961, 1 )">
 			Navy blue color.
 			Navy blue color.
 		</constant>
 		</constant>
-		<constant name="oldlace" value="Color( 0.99, 0.96, 0.9, 1 )">
+		<constant name="oldlace" value="Color( 0.992157, 0.960784, 0.901961, 1 )">
 			Old lace color.
 			Old lace color.
 		</constant>
 		</constant>
-		<constant name="olive" value="Color( 0.5, 0.5, 0, 1 )">
+		<constant name="olive" value="Color( 0.501961, 0.501961, 0, 1 )">
 			Olive color.
 			Olive color.
 		</constant>
 		</constant>
-		<constant name="olivedrab" value="Color( 0.42, 0.56, 0.14, 1 )">
+		<constant name="olivedrab" value="Color( 0.419608, 0.556863, 0.137255, 1 )">
 			Olive drab color.
 			Olive drab color.
 		</constant>
 		</constant>
-		<constant name="orange" value="Color( 1, 0.65, 0, 1 )">
+		<constant name="orange" value="Color( 1, 0.647059, 0, 1 )">
 			Orange color.
 			Orange color.
 		</constant>
 		</constant>
-		<constant name="orangered" value="Color( 1, 0.27, 0, 1 )">
+		<constant name="orangered" value="Color( 1, 0.270588, 0, 1 )">
 			Orange red color.
 			Orange red color.
 		</constant>
 		</constant>
-		<constant name="orchid" value="Color( 0.85, 0.44, 0.84, 1 )">
+		<constant name="orchid" value="Color( 0.854902, 0.439216, 0.839216, 1 )">
 			Orchid color.
 			Orchid color.
 		</constant>
 		</constant>
-		<constant name="palegoldenrod" value="Color( 0.93, 0.91, 0.67, 1 )">
+		<constant name="palegoldenrod" value="Color( 0.933333, 0.909804, 0.666667, 1 )">
 			Pale goldenrod color.
 			Pale goldenrod color.
 		</constant>
 		</constant>
-		<constant name="palegreen" value="Color( 0.6, 0.98, 0.6, 1 )">
+		<constant name="palegreen" value="Color( 0.596078, 0.984314, 0.596078, 1 )">
 			Pale green color.
 			Pale green color.
 		</constant>
 		</constant>
-		<constant name="paleturquoise" value="Color( 0.69, 0.93, 0.93, 1 )">
+		<constant name="paleturquoise" value="Color( 0.686275, 0.933333, 0.933333, 1 )">
 			Pale turquoise color.
 			Pale turquoise color.
 		</constant>
 		</constant>
-		<constant name="palevioletred" value="Color( 0.86, 0.44, 0.58, 1 )">
+		<constant name="palevioletred" value="Color( 0.858824, 0.439216, 0.576471, 1 )">
 			Pale violet red color.
 			Pale violet red color.
 		</constant>
 		</constant>
-		<constant name="papayawhip" value="Color( 1, 0.94, 0.84, 1 )">
+		<constant name="papayawhip" value="Color( 1, 0.937255, 0.835294, 1 )">
 			Papaya whip color.
 			Papaya whip color.
 		</constant>
 		</constant>
-		<constant name="peachpuff" value="Color( 1, 0.85, 0.73, 1 )">
+		<constant name="peachpuff" value="Color( 1, 0.854902, 0.72549, 1 )">
 			Peach puff color.
 			Peach puff color.
 		</constant>
 		</constant>
-		<constant name="peru" value="Color( 0.8, 0.52, 0.25, 1 )">
+		<constant name="peru" value="Color( 0.803922, 0.521569, 0.247059, 1 )">
 			Peru color.
 			Peru color.
 		</constant>
 		</constant>
-		<constant name="pink" value="Color( 1, 0.75, 0.8, 1 )">
+		<constant name="pink" value="Color( 1, 0.752941, 0.796078, 1 )">
 			Pink color.
 			Pink color.
 		</constant>
 		</constant>
-		<constant name="plum" value="Color( 0.87, 0.63, 0.87, 1 )">
+		<constant name="plum" value="Color( 0.866667, 0.627451, 0.866667, 1 )">
 			Plum color.
 			Plum color.
 		</constant>
 		</constant>
-		<constant name="powderblue" value="Color( 0.69, 0.88, 0.9, 1 )">
+		<constant name="powderblue" value="Color( 0.690196, 0.878431, 0.901961, 1 )">
 			Powder blue color.
 			Powder blue color.
 		</constant>
 		</constant>
-		<constant name="purple" value="Color( 0.63, 0.13, 0.94, 1 )">
+		<constant name="purple" value="Color( 0.627451, 0.12549, 0.941176, 1 )">
 			Purple color.
 			Purple color.
 		</constant>
 		</constant>
 		<constant name="rebeccapurple" value="Color( 0.4, 0.2, 0.6, 1 )">
 		<constant name="rebeccapurple" value="Color( 0.4, 0.2, 0.6, 1 )">
@@ -625,97 +625,97 @@
 		<constant name="red" value="Color( 1, 0, 0, 1 )">
 		<constant name="red" value="Color( 1, 0, 0, 1 )">
 			Red color.
 			Red color.
 		</constant>
 		</constant>
-		<constant name="rosybrown" value="Color( 0.74, 0.56, 0.56, 1 )">
+		<constant name="rosybrown" value="Color( 0.737255, 0.560784, 0.560784, 1 )">
 			Rosy brown color.
 			Rosy brown color.
 		</constant>
 		</constant>
-		<constant name="royalblue" value="Color( 0.25, 0.41, 0.88, 1 )">
+		<constant name="royalblue" value="Color( 0.254902, 0.411765, 0.882353, 1 )">
 			Royal blue color.
 			Royal blue color.
 		</constant>
 		</constant>
-		<constant name="saddlebrown" value="Color( 0.55, 0.27, 0.07, 1 )">
+		<constant name="saddlebrown" value="Color( 0.545098, 0.270588, 0.0745098, 1 )">
 			Saddle brown color.
 			Saddle brown color.
 		</constant>
 		</constant>
-		<constant name="salmon" value="Color( 0.98, 0.5, 0.45, 1 )">
+		<constant name="salmon" value="Color( 0.980392, 0.501961, 0.447059, 1 )">
 			Salmon color.
 			Salmon color.
 		</constant>
 		</constant>
-		<constant name="sandybrown" value="Color( 0.96, 0.64, 0.38, 1 )">
+		<constant name="sandybrown" value="Color( 0.956863, 0.643137, 0.376471, 1 )">
 			Sandy brown color.
 			Sandy brown color.
 		</constant>
 		</constant>
-		<constant name="seagreen" value="Color( 0.18, 0.55, 0.34, 1 )">
+		<constant name="seagreen" value="Color( 0.180392, 0.545098, 0.341176, 1 )">
 			Sea green color.
 			Sea green color.
 		</constant>
 		</constant>
-		<constant name="seashell" value="Color( 1, 0.96, 0.93, 1 )">
+		<constant name="seashell" value="Color( 1, 0.960784, 0.933333, 1 )">
 			Seashell color.
 			Seashell color.
 		</constant>
 		</constant>
-		<constant name="sienna" value="Color( 0.63, 0.32, 0.18, 1 )">
+		<constant name="sienna" value="Color( 0.627451, 0.321569, 0.176471, 1 )">
 			Sienna color.
 			Sienna color.
 		</constant>
 		</constant>
-		<constant name="silver" value="Color( 0.75, 0.75, 0.75, 1 )">
+		<constant name="silver" value="Color( 0.752941, 0.752941, 0.752941, 1 )">
 			Silver color.
 			Silver color.
 		</constant>
 		</constant>
-		<constant name="skyblue" value="Color( 0.53, 0.81, 0.92, 1 )">
+		<constant name="skyblue" value="Color( 0.529412, 0.807843, 0.921569, 1 )">
 			Sky blue color.
 			Sky blue color.
 		</constant>
 		</constant>
-		<constant name="slateblue" value="Color( 0.42, 0.35, 0.8, 1 )">
+		<constant name="slateblue" value="Color( 0.415686, 0.352941, 0.803922, 1 )">
 			Slate blue color.
 			Slate blue color.
 		</constant>
 		</constant>
-		<constant name="slategray" value="Color( 0.44, 0.5, 0.56, 1 )">
+		<constant name="slategray" value="Color( 0.439216, 0.501961, 0.564706, 1 )">
 			Slate gray color.
 			Slate gray color.
 		</constant>
 		</constant>
-		<constant name="snow" value="Color( 1, 0.98, 0.98, 1 )">
+		<constant name="snow" value="Color( 1, 0.980392, 0.980392, 1 )">
 			Snow color.
 			Snow color.
 		</constant>
 		</constant>
-		<constant name="springgreen" value="Color( 0, 1, 0.5, 1 )">
+		<constant name="springgreen" value="Color( 0, 1, 0.498039, 1 )">
 			Spring green color.
 			Spring green color.
 		</constant>
 		</constant>
-		<constant name="steelblue" value="Color( 0.27, 0.51, 0.71, 1 )">
+		<constant name="steelblue" value="Color( 0.27451, 0.509804, 0.705882, 1 )">
 			Steel blue color.
 			Steel blue color.
 		</constant>
 		</constant>
-		<constant name="tan" value="Color( 0.82, 0.71, 0.55, 1 )">
+		<constant name="tan" value="Color( 0.823529, 0.705882, 0.54902, 1 )">
 			Tan color.
 			Tan color.
 		</constant>
 		</constant>
-		<constant name="teal" value="Color( 0, 0.5, 0.5, 1 )">
+		<constant name="teal" value="Color( 0, 0.501961, 0.501961, 1 )">
 			Teal color.
 			Teal color.
 		</constant>
 		</constant>
-		<constant name="thistle" value="Color( 0.85, 0.75, 0.85, 1 )">
+		<constant name="thistle" value="Color( 0.847059, 0.74902, 0.847059, 1 )">
 			Thistle color.
 			Thistle color.
 		</constant>
 		</constant>
-		<constant name="tomato" value="Color( 1, 0.39, 0.28, 1 )">
+		<constant name="tomato" value="Color( 1, 0.388235, 0.278431, 1 )">
 			Tomato color.
 			Tomato color.
 		</constant>
 		</constant>
 		<constant name="transparent" value="Color( 1, 1, 1, 0 )">
 		<constant name="transparent" value="Color( 1, 1, 1, 0 )">
 			Transparent color (white with no alpha).
 			Transparent color (white with no alpha).
 		</constant>
 		</constant>
-		<constant name="turquoise" value="Color( 0.25, 0.88, 0.82, 1 )">
+		<constant name="turquoise" value="Color( 0.25098, 0.878431, 0.815686, 1 )">
 			Turquoise color.
 			Turquoise color.
 		</constant>
 		</constant>
-		<constant name="violet" value="Color( 0.93, 0.51, 0.93, 1 )">
+		<constant name="violet" value="Color( 0.933333, 0.509804, 0.933333, 1 )">
 			Violet color.
 			Violet color.
 		</constant>
 		</constant>
-		<constant name="webgray" value="Color( 0.5, 0.5, 0.5, 1 )">
+		<constant name="webgray" value="Color( 0.501961, 0.501961, 0.501961, 1 )">
 			Web gray color.
 			Web gray color.
 		</constant>
 		</constant>
-		<constant name="webgreen" value="Color( 0, 0.5, 0, 1 )">
+		<constant name="webgreen" value="Color( 0, 0.501961, 0, 1 )">
 			Web green color.
 			Web green color.
 		</constant>
 		</constant>
-		<constant name="webmaroon" value="Color( 0.5, 0, 0, 1 )">
+		<constant name="webmaroon" value="Color( 0.501961, 0, 0, 1 )">
 			Web maroon color.
 			Web maroon color.
 		</constant>
 		</constant>
-		<constant name="webpurple" value="Color( 0.5, 0, 0.5, 1 )">
+		<constant name="webpurple" value="Color( 0.501961, 0, 0.501961, 1 )">
 			Web purple color.
 			Web purple color.
 		</constant>
 		</constant>
-		<constant name="wheat" value="Color( 0.96, 0.87, 0.7, 1 )">
+		<constant name="wheat" value="Color( 0.960784, 0.870588, 0.701961, 1 )">
 			Wheat color.
 			Wheat color.
 		</constant>
 		</constant>
 		<constant name="white" value="Color( 1, 1, 1, 1 )">
 		<constant name="white" value="Color( 1, 1, 1, 1 )">
 			White color.
 			White color.
 		</constant>
 		</constant>
-		<constant name="whitesmoke" value="Color( 0.96, 0.96, 0.96, 1 )">
+		<constant name="whitesmoke" value="Color( 0.960784, 0.960784, 0.960784, 1 )">
 			White smoke color.
 			White smoke color.
 		</constant>
 		</constant>
 		<constant name="yellow" value="Color( 1, 1, 0, 1 )">
 		<constant name="yellow" value="Color( 1, 1, 0, 1 )">
 			Yellow color.
 			Yellow color.
 		</constant>
 		</constant>
-		<constant name="yellowgreen" value="Color( 0.6, 0.8, 0.2, 1 )">
+		<constant name="yellowgreen" value="Color( 0.603922, 0.803922, 0.196078, 1 )">
 			Yellow green color.
 			Yellow green color.
 		</constant>
 		</constant>
 	</constants>
 	</constants>

+ 15 - 0
doc/classes/OptionButton.xml

@@ -80,6 +80,13 @@
 				Returns the text of the item at index [code]idx[/code].
 				Returns the text of the item at index [code]idx[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="get_item_tooltip" qualifiers="const">
+			<return type="String" />
+			<argument index="0" name="idx" type="int" />
+			<description>
+				Returns the tooltip of the item at index [code]idx[/code].
+			</description>
+		</method>
 		<method name="get_popup" qualifiers="const">
 		<method name="get_popup" qualifiers="const">
 			<return type="PopupMenu" />
 			<return type="PopupMenu" />
 			<description>
 			<description>
@@ -161,6 +168,14 @@
 				Sets the text of the item at index [code]idx[/code].
 				Sets the text of the item at index [code]idx[/code].
 			</description>
 			</description>
 		</method>
 		</method>
+		<method name="set_item_tooltip">
+			<return type="void" />
+			<argument index="0" name="idx" type="int" />
+			<argument index="1" name="tooltip" type="String" />
+			<description>
+				Sets the tooltip of the item at index [code]idx[/code].
+			</description>
+		</method>
 	</methods>
 	</methods>
 	<members>
 	<members>
 		<member name="action_mode" type="int" setter="set_action_mode" getter="get_action_mode" overrides="BaseButton" enum="BaseButton.ActionMode" default="0" />
 		<member name="action_mode" type="int" setter="set_action_mode" getter="get_action_mode" overrides="BaseButton" enum="BaseButton.ActionMode" default="0" />

+ 4 - 3
doc/classes/Range.xml

@@ -13,13 +13,13 @@
 			<return type="void" />
 			<return type="void" />
 			<argument index="0" name="with" type="Node" />
 			<argument index="0" name="with" type="Node" />
 			<description>
 			<description>
-				Binds two ranges together along with any ranges previously grouped with either of them. When any of range's member variables change, it will share the new value with all other ranges in its group.
+				Binds two [Range]s together along with any ranges previously grouped with either of them. When any of range's member variables change, it will share the new value with all other ranges in its group.
 			</description>
 			</description>
 		</method>
 		</method>
 		<method name="unshare">
 		<method name="unshare">
 			<return type="void" />
 			<return type="void" />
 			<description>
 			<description>
-				Stops range from sharing its member variables with any other.
+				Stops the [Range] from sharing its member variables with any other.
 			</description>
 			</description>
 		</method>
 		</method>
 	</methods>
 	</methods>
@@ -64,7 +64,8 @@
 		<signal name="value_changed">
 		<signal name="value_changed">
 			<argument index="0" name="value" type="float" />
 			<argument index="0" name="value" type="float" />
 			<description>
 			<description>
-				Emitted when [member value] changes.
+				Emitted when [member value] changes. When used on a [Slider], this is called continuously while dragging (potentially every frame). If you are performing an expensive operation in a function connected to [signal value_changed], consider using a [i]debouncing[/i] [Timer] to call the function less often.
+				[b]Note:[/b] Unlike signals such as [signal LineEdit.text_changed], [signal value_changed] is also emitted when [code]value[/code] is set directly via code.
 			</description>
 			</description>
 		</signal>
 		</signal>
 	</signals>
 	</signals>

+ 6 - 3
editor/editor_profiler.cpp

@@ -425,9 +425,12 @@ void EditorProfiler::_clear_pressed() {
 }
 }
 
 
 void EditorProfiler::_notification(int p_what) {
 void EditorProfiler::_notification(int p_what) {
-	if (p_what == NOTIFICATION_ENTER_TREE) {
-		activate->set_icon(get_icon("Play", "EditorIcons"));
-		clear_button->set_icon(get_icon("Clear", "EditorIcons"));
+	switch (p_what) {
+		case NOTIFICATION_ENTER_TREE:
+		case NOTIFICATION_THEME_CHANGED: {
+			activate->set_icon(get_icon("Play", "EditorIcons"));
+			clear_button->set_icon(get_icon("Clear", "EditorIcons"));
+		} break;
 	}
 	}
 }
 }
 
 

+ 5 - 9
editor/plugins/resource_preloader_editor_plugin.cpp

@@ -39,15 +39,11 @@ void ResourcePreloaderEditor::_gui_input(Ref<InputEvent> p_event) {
 }
 }
 
 
 void ResourcePreloaderEditor::_notification(int p_what) {
 void ResourcePreloaderEditor::_notification(int p_what) {
-	if (p_what == NOTIFICATION_ENTER_TREE) {
-		load->set_icon(get_icon("Folder", "EditorIcons"));
-	}
-
-	if (p_what == NOTIFICATION_READY) {
-		//NodePath("/root")->connect("node_removed", this,"_node_removed",Vector<Variant>(),true);
-	}
-
-	if (p_what == NOTIFICATION_DRAW) {
+	switch (p_what) {
+		case NOTIFICATION_ENTER_TREE:
+		case NOTIFICATION_THEME_CHANGED: {
+			load->set_icon(get_icon("Folder", "EditorIcons"));
+		} break;
 	}
 	}
 }
 }
 
 

+ 11 - 3
editor/plugins/shader_editor_plugin.cpp

@@ -349,8 +349,16 @@ void ShaderEditor::_menu_option(int p_option) {
 }
 }
 
 
 void ShaderEditor::_notification(int p_what) {
 void ShaderEditor::_notification(int p_what) {
-	if (p_what == MainLoop::NOTIFICATION_WM_FOCUS_IN) {
-		_check_for_external_edit();
+	switch (p_what) {
+		case NOTIFICATION_ENTER_TREE:
+		case NOTIFICATION_THEME_CHANGED: {
+			PopupMenu *popup = help_menu->get_popup();
+			popup->set_item_icon(popup->get_item_index(HELP_DOCS), get_icon("Instance", "EditorIcons"));
+		} break;
+
+		case MainLoop::NOTIFICATION_WM_FOCUS_IN: {
+			_check_for_external_edit();
+		} break;
 	}
 	}
 }
 }
 
 
@@ -664,7 +672,7 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) {
 	help_menu = memnew(MenuButton);
 	help_menu = memnew(MenuButton);
 	help_menu->set_text(TTR("Help"));
 	help_menu->set_text(TTR("Help"));
 	help_menu->set_switch_on_hover(true);
 	help_menu->set_switch_on_hover(true);
-	help_menu->get_popup()->add_icon_item(p_node->get_gui_base()->get_icon("Instance", "EditorIcons"), TTR("Online Docs"), HELP_DOCS);
+	help_menu->get_popup()->add_item(TTR("Online Docs"), HELP_DOCS);
 	help_menu->get_popup()->connect("id_pressed", this, "_menu_option");
 	help_menu->get_popup()->connect("id_pressed", this, "_menu_option");
 
 
 	add_child(main_container);
 	add_child(main_container);

+ 12 - 3
platform/android/java/app/config.gradle

@@ -4,7 +4,7 @@ ext.versions = [
     minSdk             : 19, // Also update 'platform/android/java/lib/AndroidManifest.xml#minSdkVersion' & 'platform/android/export/export_plugin.cpp#DEFAULT_MIN_SDK_VERSION'
     minSdk             : 19, // Also update 'platform/android/java/lib/AndroidManifest.xml#minSdkVersion' & 'platform/android/export/export_plugin.cpp#DEFAULT_MIN_SDK_VERSION'
     targetSdk          : 30, // Also update 'platform/android/java/lib/AndroidManifest.xml#targetSdkVersion' & 'platform/android/export/export_plugin.cpp#DEFAULT_TARGET_SDK_VERSION'
     targetSdk          : 30, // Also update 'platform/android/java/lib/AndroidManifest.xml#targetSdkVersion' & 'platform/android/export/export_plugin.cpp#DEFAULT_TARGET_SDK_VERSION'
     buildTools         : '30.0.3',
     buildTools         : '30.0.3',
-    kotlinVersion      : '1.5.10',
+    kotlinVersion      : '1.6.10',
     fragmentVersion    : '1.3.6',
     fragmentVersion    : '1.3.6',
     javaVersion        : 11,
     javaVersion        : 11,
     ndkVersion         : '21.4.7075529' // Also update 'platform/android/detect.py#get_project_ndk_version()' when this is updated.
     ndkVersion         : '21.4.7075529' // Also update 'platform/android/detect.py#get_project_ndk_version()' when this is updated.
@@ -86,13 +86,12 @@ ext.getGodotEditorVersion = { ->
     return editorVersion
     return editorVersion
 }
 }
 
 
-ext.getGodotLibraryVersion = { ->
+ext.generateGodotLibraryVersion = { List<String> requiredKeys ->
     // Attempt to read the version from the `version.py` file.
     // Attempt to read the version from the `version.py` file.
     String libraryVersion = ""
     String libraryVersion = ""
 
 
     File versionFile = new File("../../../version.py")
     File versionFile = new File("../../../version.py")
     if (versionFile.isFile()) {
     if (versionFile.isFile()) {
-        List<String> requiredKeys = ["major", "minor", "patch", "status", "module_config"]
         def map = [:]
         def map = [:]
 
 
         List<String> lines = versionFile.readLines()
         List<String> lines = versionFile.readLines()
@@ -121,6 +120,16 @@ ext.getGodotLibraryVersion = { ->
     return libraryVersion
     return libraryVersion
 }
 }
 
 
+ext.getGodotLibraryVersion = { ->
+    List<String> requiredKeys = ["major", "minor", "patch", "status", "module_config"]
+    return generateGodotLibraryVersion(requiredKeys)
+}
+
+ext.getGodotPublishVersion = { ->
+    List<String> requiredKeys = ["major", "minor", "patch", "status"]
+    return generateGodotLibraryVersion(requiredKeys)
+}
+
 final String VALUE_SEPARATOR_REGEX = "\\|"
 final String VALUE_SEPARATOR_REGEX = "\\|"
 
 
 // get the list of ABIs the project should be exported to
 // get the list of ABIs the project should be exported to

+ 4 - 0
platform/android/java/build.gradle

@@ -1,4 +1,6 @@
+apply plugin: 'io.github.gradle-nexus.publish-plugin'
 apply from: 'app/config.gradle'
 apply from: 'app/config.gradle'
+apply from: 'scripts/publish-root.gradle'
 
 
 buildscript {
 buildscript {
     apply from: 'app/config.gradle'
     apply from: 'app/config.gradle'
@@ -6,10 +8,12 @@ buildscript {
     repositories {
     repositories {
         google()
         google()
         mavenCentral()
         mavenCentral()
+        maven { url "https://plugins.gradle.org/m2/" }
     }
     }
     dependencies {
     dependencies {
         classpath libraries.androidGradlePlugin
         classpath libraries.androidGradlePlugin
         classpath libraries.kotlinGradlePlugin
         classpath libraries.kotlinGradlePlugin
+        classpath 'io.github.gradle-nexus:publish-plugin:1.1.0'
     }
     }
 }
 }
 
 

+ 17 - 0
platform/android/java/lib/build.gradle

@@ -1,6 +1,13 @@
 apply plugin: 'com.android.library'
 apply plugin: 'com.android.library'
 apply plugin: 'kotlin-android'
 apply plugin: 'kotlin-android'
 
 
+ext {
+    PUBLISH_VERSION = getGodotPublishVersion()
+    PUBLISH_ARTIFACT_ID = 'godot'
+}
+
+apply from: "../scripts/publish-module.gradle"
+
 dependencies {
 dependencies {
     implementation libraries.kotlinStdLib
     implementation libraries.kotlinStdLib
     implementation libraries.androidxFragment
     implementation libraries.androidxFragment
@@ -21,6 +28,8 @@ android {
         manifestPlaceholders = [godotLibraryVersion: getGodotLibraryVersion()]
         manifestPlaceholders = [godotLibraryVersion: getGodotLibraryVersion()]
     }
     }
 
 
+    namespace = "org.godotengine.godot"
+
     compileOptions {
     compileOptions {
         sourceCompatibility versions.javaVersion
         sourceCompatibility versions.javaVersion
         targetCompatibility versions.javaVersion
         targetCompatibility versions.javaVersion
@@ -111,4 +120,12 @@ android {
         // Schedule the tasks so the generated libs are present before the aar file is packaged.
         // Schedule the tasks so the generated libs are present before the aar file is packaged.
         tasks["merge${buildType}JniLibFolders"].dependsOn taskName
         tasks["merge${buildType}JniLibFolders"].dependsOn taskName
     }
     }
+
+    // TODO: Enable when issues with AGP 7.1+ are resolved (https://github.com/GodotVR/godot_openxr/issues/187).
+//    publishing {
+//        singleVariant("release") {
+//            withSourcesJar()
+//            withJavadocJar()
+//        }
+//    }
 }
 }

+ 74 - 0
platform/android/java/scripts/publish-module.gradle

@@ -0,0 +1,74 @@
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
+
+group = ossrhGroupId
+version = PUBLISH_VERSION
+
+afterEvaluate {
+    publishing {
+        publications {
+            release(MavenPublication) {
+                // The coordinates of the library, being set from variables that
+                // we'll set up later
+                groupId ossrhGroupId
+                artifactId PUBLISH_ARTIFACT_ID
+                version PUBLISH_VERSION
+
+                // Two artifacts, the `aar` (or `jar`) and the sources
+                if (project.plugins.findPlugin("com.android.library")) {
+                    from components.release
+                } else {
+                    from components.java
+                }
+
+                // Mostly self-explanatory metadata
+                pom {
+                    name = PUBLISH_ARTIFACT_ID
+                    description = 'Godot Engine Android Library'
+                    url = 'https://godotengine.org/'
+                    licenses {
+                        license {
+                            name = 'MIT License'
+                            url = 'https://github.com/godotengine/godot/blob/master/LICENSE.txt'
+                        }
+                    }
+                    developers {
+                        developer {
+                            id = 'm4gr3d'
+                            name = 'Fredia Huya-Kouadio'
+                            email = '[email protected]'
+                        }
+                        developer {
+                            id = 'reduz'
+                            name = 'Juan Linietsky'
+                            email = '[email protected]'
+                        }
+                        developer {
+                            id = 'akien-mga'
+                            name = 'Rémi Verschelde'
+                            email = '[email protected]'
+                        }
+                        // Add all other devs here...
+                    }
+
+                    // Version control info - if you're using GitHub, follow the
+                    // format as seen here
+                    scm {
+                        connection = 'scm:git:github.com/godotengine/godot.git'
+                        developerConnection = 'scm:git:ssh://github.com/godotengine/godot.git'
+                        url = 'https://github.com/godotengine/godot/tree/master'
+                    }
+                }
+            }
+        }
+    }
+}
+
+signing {
+    useInMemoryPgpKeys(
+        rootProject.ext["signing.keyId"],
+        rootProject.ext["signing.key"],
+        rootProject.ext["signing.password"],
+    )
+    sign publishing.publications
+}

+ 39 - 0
platform/android/java/scripts/publish-root.gradle

@@ -0,0 +1,39 @@
+// Create variables with empty default values
+ext["signing.keyId"] = ''
+ext["signing.password"] = ''
+ext["signing.key"] = ''
+ext["ossrhGroupId"] = ''
+ext["ossrhUsername"] = ''
+ext["ossrhPassword"] = ''
+ext["sonatypeStagingProfileId"] = ''
+
+File secretPropsFile = project.rootProject.file('local.properties')
+if (secretPropsFile.exists()) {
+    // Read local.properties file first if it exists
+    Properties p = new Properties()
+    new FileInputStream(secretPropsFile).withCloseable { is -> p.load(is) }
+    p.each { name, value -> ext[name] = value }
+} else {
+    // Use system environment variables
+    ext["ossrhGroupId"] = System.getenv('OSSRH_GROUP_ID')
+    ext["ossrhUsername"] = System.getenv('OSSRH_USERNAME')
+    ext["ossrhPassword"] = System.getenv('OSSRH_PASSWORD')
+    ext["sonatypeStagingProfileId"] = System.getenv('SONATYPE_STAGING_PROFILE_ID')
+    ext["signing.keyId"] = System.getenv('SIGNING_KEY_ID')
+    ext["signing.password"] = System.getenv('SIGNING_PASSWORD')
+    ext["signing.key"] = System.getenv('SIGNING_KEY')
+}
+
+// Set up Sonatype repository
+nexusPublishing {
+    repositories {
+        sonatype {
+            stagingProfileId = sonatypeStagingProfileId
+            username = ossrhUsername
+            password = ossrhPassword
+            nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
+            snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
+        }
+    }
+}
+

+ 13 - 3
platform/windows/os_windows.cpp

@@ -2400,12 +2400,19 @@ OS::Date OS_Windows::get_date(bool utc) const {
 	else
 	else
 		GetLocalTime(&systemtime);
 		GetLocalTime(&systemtime);
 
 
+	// Get DST information from Windows, but only if utc is false.
+	TIME_ZONE_INFORMATION info;
+	bool daylight = false;
+	if (!utc && GetTimeZoneInformation(&info) == TIME_ZONE_ID_DAYLIGHT) {
+		daylight = true;
+	}
+
 	Date date;
 	Date date;
 	date.day = systemtime.wDay;
 	date.day = systemtime.wDay;
 	date.month = Month(systemtime.wMonth);
 	date.month = Month(systemtime.wMonth);
 	date.weekday = Weekday(systemtime.wDayOfWeek);
 	date.weekday = Weekday(systemtime.wDayOfWeek);
 	date.year = systemtime.wYear;
 	date.year = systemtime.wYear;
-	date.dst = false;
+	date.dst = daylight;
 	return date;
 	return date;
 }
 }
 OS::Time OS_Windows::get_time(bool utc) const {
 OS::Time OS_Windows::get_time(bool utc) const {
@@ -2428,16 +2435,19 @@ OS::TimeZoneInfo OS_Windows::get_time_zone_info() const {
 	if (GetTimeZoneInformation(&info) == TIME_ZONE_ID_DAYLIGHT)
 	if (GetTimeZoneInformation(&info) == TIME_ZONE_ID_DAYLIGHT)
 		daylight = true;
 		daylight = true;
 
 
+	// Daylight Bias needs to be added to the bias if DST is in effect, or else it will not properly update.
 	TimeZoneInfo ret;
 	TimeZoneInfo ret;
 	if (daylight) {
 	if (daylight) {
 		ret.name = info.DaylightName;
 		ret.name = info.DaylightName;
+		ret.bias = info.Bias + info.DaylightBias;
 	} else {
 	} else {
 		ret.name = info.StandardName;
 		ret.name = info.StandardName;
+		ret.bias = info.Bias + info.StandardBias;
 	}
 	}
 
 
 	// Bias value returned by GetTimeZoneInformation is inverted of what we expect
 	// Bias value returned by GetTimeZoneInformation is inverted of what we expect
-	// For example on GMT-3 GetTimeZoneInformation return a Bias of 180, so invert the value to get -180
-	ret.bias = -info.Bias;
+	// For example, on GMT-3 GetTimeZoneInformation return a Bias of 180, so invert the value to get -180
+	ret.bias = -ret.bias;
 	return ret;
 	return ret;
 }
 }
 
 

+ 7 - 2
scene/gui/flow_container.cpp

@@ -41,6 +41,11 @@ struct _LineData {
 };
 };
 
 
 void FlowContainer::_resort() {
 void FlowContainer::_resort() {
+	// Avoid resorting if invisible.
+	if (!is_visible_in_tree()) {
+		return;
+	}
+
 	int separation_horizontal = get_constant("hseparation");
 	int separation_horizontal = get_constant("hseparation");
 	int separation_vertical = get_constant("vseparation");
 	int separation_vertical = get_constant("vseparation");
 
 
@@ -58,7 +63,7 @@ void FlowContainer::_resort() {
 	// First pass for line wrapping and minimum size calculation.
 	// First pass for line wrapping and minimum size calculation.
 	for (int i = 0; i < get_child_count(); i++) {
 	for (int i = 0; i < get_child_count(); i++) {
 		Control *child = Object::cast_to<Control>(get_child(i));
 		Control *child = Object::cast_to<Control>(get_child(i));
-		if (!child || !child->is_visible_in_tree()) {
+		if (!child || !child->is_visible()) {
 			continue;
 			continue;
 		}
 		}
 		if (child->is_set_as_toplevel()) {
 		if (child->is_set_as_toplevel()) {
@@ -128,7 +133,7 @@ void FlowContainer::_resort() {
 
 
 	for (int i = 0; i < get_child_count(); i++) {
 	for (int i = 0; i < get_child_count(); i++) {
 		Control *child = Object::cast_to<Control>(get_child(i));
 		Control *child = Object::cast_to<Control>(get_child(i));
-		if (!child || !child->is_visible_in_tree()) {
+		if (!child || !child->is_visible()) {
 			continue;
 			continue;
 		}
 		}
 		if (child->is_set_as_toplevel()) {
 		if (child->is_set_as_toplevel()) {

+ 10 - 0
scene/gui/option_button.cpp

@@ -156,6 +156,10 @@ void OptionButton::set_item_metadata(int p_idx, const Variant &p_metadata) {
 	popup->set_item_metadata(p_idx, p_metadata);
 	popup->set_item_metadata(p_idx, p_metadata);
 }
 }
 
 
+void OptionButton::set_item_tooltip(int p_idx, const String &p_tooltip) {
+	popup->set_item_tooltip(p_idx, p_tooltip);
+}
+
 void OptionButton::set_item_disabled(int p_idx, bool p_disabled) {
 void OptionButton::set_item_disabled(int p_idx, bool p_disabled) {
 	popup->set_item_disabled(p_idx, p_disabled);
 	popup->set_item_disabled(p_idx, p_disabled);
 }
 }
@@ -180,6 +184,10 @@ Variant OptionButton::get_item_metadata(int p_idx) const {
 	return popup->get_item_metadata(p_idx);
 	return popup->get_item_metadata(p_idx);
 }
 }
 
 
+String OptionButton::get_item_tooltip(int p_idx) const {
+	return popup->get_item_tooltip(p_idx);
+}
+
 bool OptionButton::is_item_disabled(int p_idx) const {
 bool OptionButton::is_item_disabled(int p_idx) const {
 	return popup->is_item_disabled(p_idx);
 	return popup->is_item_disabled(p_idx);
 }
 }
@@ -305,11 +313,13 @@ void OptionButton::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("set_item_disabled", "idx", "disabled"), &OptionButton::set_item_disabled);
 	ClassDB::bind_method(D_METHOD("set_item_disabled", "idx", "disabled"), &OptionButton::set_item_disabled);
 	ClassDB::bind_method(D_METHOD("set_item_id", "idx", "id"), &OptionButton::set_item_id);
 	ClassDB::bind_method(D_METHOD("set_item_id", "idx", "id"), &OptionButton::set_item_id);
 	ClassDB::bind_method(D_METHOD("set_item_metadata", "idx", "metadata"), &OptionButton::set_item_metadata);
 	ClassDB::bind_method(D_METHOD("set_item_metadata", "idx", "metadata"), &OptionButton::set_item_metadata);
+	ClassDB::bind_method(D_METHOD("set_item_tooltip", "idx", "tooltip"), &OptionButton::set_item_tooltip);
 	ClassDB::bind_method(D_METHOD("get_item_text", "idx"), &OptionButton::get_item_text);
 	ClassDB::bind_method(D_METHOD("get_item_text", "idx"), &OptionButton::get_item_text);
 	ClassDB::bind_method(D_METHOD("get_item_icon", "idx"), &OptionButton::get_item_icon);
 	ClassDB::bind_method(D_METHOD("get_item_icon", "idx"), &OptionButton::get_item_icon);
 	ClassDB::bind_method(D_METHOD("get_item_id", "idx"), &OptionButton::get_item_id);
 	ClassDB::bind_method(D_METHOD("get_item_id", "idx"), &OptionButton::get_item_id);
 	ClassDB::bind_method(D_METHOD("get_item_index", "id"), &OptionButton::get_item_index);
 	ClassDB::bind_method(D_METHOD("get_item_index", "id"), &OptionButton::get_item_index);
 	ClassDB::bind_method(D_METHOD("get_item_metadata", "idx"), &OptionButton::get_item_metadata);
 	ClassDB::bind_method(D_METHOD("get_item_metadata", "idx"), &OptionButton::get_item_metadata);
+	ClassDB::bind_method(D_METHOD("get_item_tooltip", "idx"), &OptionButton::get_item_tooltip);
 	ClassDB::bind_method(D_METHOD("is_item_disabled", "idx"), &OptionButton::is_item_disabled);
 	ClassDB::bind_method(D_METHOD("is_item_disabled", "idx"), &OptionButton::is_item_disabled);
 	ClassDB::bind_method(D_METHOD("get_item_count"), &OptionButton::get_item_count);
 	ClassDB::bind_method(D_METHOD("get_item_count"), &OptionButton::get_item_count);
 	ClassDB::bind_method(D_METHOD("add_separator"), &OptionButton::add_separator);
 	ClassDB::bind_method(D_METHOD("add_separator"), &OptionButton::add_separator);

+ 2 - 0
scene/gui/option_button.h

@@ -64,6 +64,7 @@ public:
 	void set_item_id(int p_idx, int p_id);
 	void set_item_id(int p_idx, int p_id);
 	void set_item_metadata(int p_idx, const Variant &p_metadata);
 	void set_item_metadata(int p_idx, const Variant &p_metadata);
 	void set_item_disabled(int p_idx, bool p_disabled);
 	void set_item_disabled(int p_idx, bool p_disabled);
+	void set_item_tooltip(int p_idx, const String &p_tooltip);
 
 
 	String get_item_text(int p_idx) const;
 	String get_item_text(int p_idx) const;
 	Ref<Texture> get_item_icon(int p_idx) const;
 	Ref<Texture> get_item_icon(int p_idx) const;
@@ -71,6 +72,7 @@ public:
 	int get_item_index(int p_id) const;
 	int get_item_index(int p_id) const;
 	Variant get_item_metadata(int p_idx) const;
 	Variant get_item_metadata(int p_idx) const;
 	bool is_item_disabled(int p_idx) const;
 	bool is_item_disabled(int p_idx) const;
+	String get_item_tooltip(int p_idx) const;
 
 
 	int get_item_count() const;
 	int get_item_count() const;