\r
// PATCH\r
video::ITexture* texture = ButtonImages[(u32)imageState].Texture;\r
+ video::SColor image_colors[] = { BgColor, BgColor, BgColor, BgColor };\r
if (BgMiddle.getArea() == 0) {\r
driver->draw2DImage(texture,\r
ScaleImage? AbsoluteRect : core::rect<s32>(pos, sourceRect.getSize()),\r
sourceRect, &AbsoluteClippingRect,\r
- 0, UseAlphaChannel);\r
+ image_colors, UseAlphaChannel);\r
} else {\r
core::rect<s32> middle = BgMiddle;\r
// `-x` is interpreted as `w - x`\r
middle.LowerRightCorner.Y += texture->getOriginalSize().Height;\r
draw2DImage9Slice(driver, texture,\r
ScaleImage ? AbsoluteRect : core::rect<s32>(pos, sourceRect.getSize()),\r
- middle, &AbsoluteClippingRect);\r
+ middle, &AbsoluteClippingRect, image_colors);\r
}\r
// END PATCH\r
}\r
return OverrideColor;\r
}\r
\r
+#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8\r
+video::SColor GUIButton::getActiveColor() const\r
+{\r
+ return video::SColor(0,0,0,0); // unused?\r
+}\r
+#endif\r
+\r
void GUIButton::enableOverrideColor(bool enable)\r
{\r
OverrideColorEnabled = enable;\r
\r
void GUIButton::setColor(video::SColor color)\r
{\r
+ BgColor = color;\r
+\r
float d = 0.65f;\r
for (size_t i = 0; i < 4; i++) {\r
video::SColor base = Environment->getSkin()->getColor((gui::EGUI_DEFAULT_COLOR)i);\r
bool pressed = (style.getState() & StyleSpec::STATE_PRESSED) != 0;\r
\r
if (style.isNotDefault(StyleSpec::BGCOLOR)) {\r
-\r
setColor(style.getColor(StyleSpec::BGCOLOR));\r
\r
// If we have a propagated hover/press color, we need to automatically\r
// lighten/darken it\r
if (!Styles[style.getState()].isNotDefault(StyleSpec::BGCOLOR)) {\r
- for (size_t i = 0; i < 4; i++) {\r
if (pressed) {\r
- Colors[i] = multiplyColorValue(Colors[i], COLOR_PRESSED_MOD);\r
+ BgColor = multiplyColorValue(BgColor, COLOR_PRESSED_MOD);\r
+\r
+ for (size_t i = 0; i < 4; i++)\r
+ Colors[i] = multiplyColorValue(Colors[i], COLOR_PRESSED_MOD);\r
} else if (hovered) {\r
- Colors[i] = multiplyColorValue(Colors[i], COLOR_HOVERED_MOD);\r
+ BgColor = multiplyColorValue(BgColor, COLOR_HOVERED_MOD);\r
+\r
+ for (size_t i = 0; i < 4; i++)\r
+ Colors[i] = multiplyColorValue(Colors[i], COLOR_HOVERED_MOD);\r
}\r
- }\r
}\r
\r
} else {\r
+ BgColor = video::SColor(255, 255, 255, 255);\r
for (size_t i = 0; i < 4; i++) {\r
video::SColor base =\r
Environment->getSkin()->getColor((gui::EGUI_DEFAULT_COLOR)i);\r