GUI: RTL: Internal flipping for DropDownButton
This commit is contained in:
parent
37c5013ef4
commit
a587624cb3
4 changed files with 138 additions and 10 deletions
|
@ -137,6 +137,12 @@ static const DrawDataInfo kDrawDataDefaults[] = {
|
|||
{kDDDropDownButtonPressedLeft, "dropdown_button_pressed_left", kDrawLayerForeground, kDDDropDownButtonIdle},
|
||||
{kDDDropDownButtonPressedRight, "dropdown_button_pressed_right", kDrawLayerForeground, kDDDropDownButtonIdle},
|
||||
|
||||
{kDDDropDownButtonIdleRTL, "dropdown_button_idle_rtl", kDrawLayerBackground, kDDNone},
|
||||
{kDDDropDownButtonHoverLeftRTL, "dropdown_button_hover_left_rtl", kDrawLayerForeground, kDDDropDownButtonIdleRTL},
|
||||
{kDDDropDownButtonHoverRightRTL, "dropdown_button_hover_right_rtl", kDrawLayerForeground, kDDDropDownButtonIdleRTL},
|
||||
{kDDDropDownButtonPressedLeftRTL, "dropdown_button_pressed_left_rtl", kDrawLayerForeground, kDDDropDownButtonIdleRTL},
|
||||
{kDDDropDownButtonPressedRightRTL, "dropdown_button_pressed_right_rtl", kDrawLayerForeground, kDDDropDownButtonIdleRTL},
|
||||
|
||||
{kDDSliderFull, "slider_full", kDrawLayerForeground, kDDNone},
|
||||
{kDDSliderHover, "slider_hover", kDrawLayerForeground, kDDNone},
|
||||
{kDDSliderDisabled, "slider_disabled", kDrawLayerForeground, kDDNone},
|
||||
|
@ -953,23 +959,24 @@ void ThemeEngine::drawButton(const Common::Rect &r, const Common::String &str, W
|
|||
}
|
||||
|
||||
void ThemeEngine::drawDropDownButton(const Common::Rect &r, uint32 dropdownWidth, const Common::String &str,
|
||||
ThemeEngine::WidgetStateInfo buttonState, bool inButton, bool inDropdown) {
|
||||
ThemeEngine::WidgetStateInfo buttonState, bool inButton, bool inDropdown, bool rtl) {
|
||||
if (!ready())
|
||||
return;
|
||||
|
||||
DrawData dd;
|
||||
|
||||
if (buttonState == kStateHighlight && inButton)
|
||||
dd = kDDDropDownButtonHoverLeft;
|
||||
dd = rtl ? kDDDropDownButtonHoverLeftRTL : kDDDropDownButtonHoverLeft;
|
||||
else if (buttonState == kStateHighlight && inDropdown)
|
||||
dd = kDDDropDownButtonHoverRight;
|
||||
dd = rtl ? kDDDropDownButtonHoverRightRTL : kDDDropDownButtonHoverRight;
|
||||
else if (buttonState == kStateDisabled)
|
||||
dd = kDDDropDownButtonDisabled;
|
||||
else if (buttonState == kStatePressed && inButton)
|
||||
dd = kDDDropDownButtonPressedLeft;
|
||||
dd = rtl ? kDDDropDownButtonPressedLeftRTL : kDDDropDownButtonPressedLeft;
|
||||
else if (buttonState == kStatePressed && inDropdown)
|
||||
dd = kDDDropDownButtonPressedRight;
|
||||
dd = rtl ? kDDDropDownButtonPressedRightRTL : kDDDropDownButtonPressedRight;
|
||||
else
|
||||
dd = kDDDropDownButtonIdle;
|
||||
dd = rtl ? kDDDropDownButtonIdleRTL : kDDDropDownButtonIdle;
|
||||
|
||||
drawDD(dd, r);
|
||||
|
||||
|
|
|
@ -87,6 +87,12 @@ enum DrawData {
|
|||
kDDDropDownButtonPressedLeft,
|
||||
kDDDropDownButtonPressedRight,
|
||||
|
||||
kDDDropDownButtonIdleRTL,
|
||||
kDDDropDownButtonHoverLeftRTL,
|
||||
kDDDropDownButtonHoverRightRTL,
|
||||
kDDDropDownButtonPressedLeftRTL,
|
||||
kDDDropDownButtonPressedRightRTL,
|
||||
|
||||
kDDSliderFull,
|
||||
kDDSliderHover,
|
||||
kDDSliderDisabled,
|
||||
|
@ -409,7 +415,7 @@ public:
|
|||
uint16 hints = 0);
|
||||
|
||||
void drawDropDownButton(const Common::Rect &r, uint32 dropdownWidth, const Common::String &str,
|
||||
WidgetStateInfo buttonState, bool inButton, bool inDropdown);
|
||||
WidgetStateInfo buttonState, bool inButton, bool inDropdown, bool rtl = false);
|
||||
|
||||
void drawSurface(const Common::Point &p, const Graphics::Surface &surface, bool themeTrans = false);
|
||||
|
||||
|
|
|
@ -880,6 +880,30 @@
|
|||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_idle_rtl' cache = 'false' resolution = 'y>399'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
vertical_align = 'center'
|
||||
horizontal_align = 'center'
|
||||
/>
|
||||
<drawstep func = 'roundedsq'
|
||||
radius = '5'
|
||||
fill = 'foreground'
|
||||
shadow = '2'
|
||||
fg_color = 'button_idle'
|
||||
clip = '0,0,0,0'
|
||||
/>
|
||||
<drawstep func = 'triangle'
|
||||
fg_color = 'white'
|
||||
fill = 'foreground'
|
||||
width = '8'
|
||||
height = '6'
|
||||
xpos = 'left'
|
||||
ypos = 'center'
|
||||
padding = '2,0,2,0'
|
||||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_idle' cache = 'false' resolution = 'y<400'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
|
@ -927,6 +951,29 @@
|
|||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_hover_left_rtl' cache = 'false' resolution = 'y>399'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
vertical_align = 'center'
|
||||
horizontal_align = 'center'
|
||||
/>
|
||||
<drawstep func = 'roundedsq'
|
||||
radius = '5'
|
||||
fill = 'foreground'
|
||||
fg_color = 'button_hover'
|
||||
clip = '13,0,0,0'
|
||||
/>
|
||||
<drawstep func = 'triangle'
|
||||
fg_color = 'white'
|
||||
fill = 'foreground'
|
||||
width = '8'
|
||||
height = '6'
|
||||
xpos = 'left'
|
||||
ypos = 'center'
|
||||
padding = '2,0,2,0'
|
||||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_hover_left' cache = 'false' resolution = 'y<400'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
|
@ -974,6 +1021,29 @@
|
|||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_hover_right_rtl' cache = 'false' resolution = 'y>399'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
vertical_align = 'center'
|
||||
horizontal_align = 'center'
|
||||
/>
|
||||
<drawstep func = 'roundedsq'
|
||||
radius = '5'
|
||||
fill = 'foreground'
|
||||
fg_color = 'button_hover'
|
||||
clip = '0,0,13,0'
|
||||
/>
|
||||
<drawstep func = 'triangle'
|
||||
fg_color = 'white'
|
||||
fill = 'foreground'
|
||||
width = '8'
|
||||
height = '6'
|
||||
xpos = 'left'
|
||||
ypos = 'center'
|
||||
padding = '2,0,2,0'
|
||||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_hover_right' cache = 'false' resolution = 'y<400'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
|
@ -1066,6 +1136,29 @@
|
|||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_pressed_left_rtl' cache = 'false' resolution = 'y>399'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
vertical_align = 'center'
|
||||
horizontal_align = 'center'
|
||||
/>
|
||||
<drawstep func = 'roundedsq'
|
||||
radius = '5'
|
||||
fill = 'foreground'
|
||||
fg_color = 'button_pressed'
|
||||
clip = '0,0,-13,0'
|
||||
/>
|
||||
<drawstep func = 'triangle'
|
||||
fg_color = 'white'
|
||||
fill = 'foreground'
|
||||
width = '8'
|
||||
height = '6'
|
||||
xpos = 'left'
|
||||
ypos = 'center'
|
||||
padding = '2,0,2,0'
|
||||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_pressed_left' cache = 'false' resolution = 'y<400'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
|
@ -1113,6 +1206,29 @@
|
|||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_pressed_right_rtl' cache = 'false' resolution = 'y>399'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
vertical_align = 'center'
|
||||
horizontal_align = 'center'
|
||||
/>
|
||||
<drawstep func = 'roundedsq'
|
||||
radius = '5'
|
||||
fill = 'foreground'
|
||||
fg_color = 'button_pressed'
|
||||
clip = '0,0,13,0'
|
||||
/>
|
||||
<drawstep func = 'triangle'
|
||||
fg_color = 'white'
|
||||
fill = 'foreground'
|
||||
width = '8'
|
||||
height = '6'
|
||||
xpos = 'left'
|
||||
ypos = 'center'
|
||||
padding = '2,0,2,0'
|
||||
orientation = 'bottom'
|
||||
/>
|
||||
</drawdata>
|
||||
<drawdata id = 'dropdown_button_pressed_right' cache = 'false' resolution = 'y<400'>
|
||||
<text font = 'text_button'
|
||||
text_color = 'color_button'
|
||||
|
|
|
@ -118,8 +118,7 @@ void Widget::draw() {
|
|||
if (g_gui.useRTL()) {
|
||||
_x = g_system->getOverlayWidth() - _x - _w;
|
||||
|
||||
// if (g_gui.isWindowOverlayed()) {
|
||||
// Can i use something better below?
|
||||
// Can i use something better below instead of hardcoding the values?
|
||||
|
||||
if (this->_name.contains("GameOptions") || this->_name.contains("GlobalOptions")){
|
||||
_x = _x + g_gui.getOverlayOffset();
|
||||
|
@ -533,7 +532,7 @@ void DropdownButtonWidget::drawWidget() { // These are okay, no need to flip a
|
|||
g_gui.theme()->drawButton(Common::Rect(_x, _y, _x + _w, _y + _h), _label, _state);
|
||||
} else {
|
||||
g_gui.theme()->drawDropDownButton(Common::Rect(_x, _y, _x + _w, _y + _h), _dropdownWidth, _label,
|
||||
_state, _inButton, _inDropdown);
|
||||
_state, _inButton, _inDropdown, (g_gui.useRTL() && _useRTL));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue