summaryrefslogtreecommitdiff
path: root/src/ui/widget.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/widget.c')
-rw-r--r--src/ui/widget.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/ui/widget.c b/src/ui/widget.c
index 128aa39c..0e020080 100644
--- a/src/ui/widget.c
+++ b/src/ui/widget.c
@@ -629,7 +629,9 @@ iBool processEvent_Widget(iWidget *d, const SDL_Event *ev) {
629} 629}
630 630
631void drawBackground_Widget(const iWidget *d) { 631void drawBackground_Widget(const iWidget *d) {
632 if (d->flags & hidden_WidgetFlag) return; 632 if (d->flags & (hidden_WidgetFlag | noBackground_WidgetFlag)) {
633 return;
634 }
633 if (flags_Widget(d) & borderTop_WidgetFlag) { 635 if (flags_Widget(d) & borderTop_WidgetFlag) {
634 const iRect rect = bounds_Widget(d); 636 const iRect rect = bounds_Widget(d);
635 iPaint p; 637 iPaint p;
@@ -637,10 +639,36 @@ void drawBackground_Widget(const iWidget *d) {
637 drawHLine_Paint(&p, topLeft_Rect(rect), width_Rect(rect), uiBackgroundFramelessHover_ColorId); 639 drawHLine_Paint(&p, topLeft_Rect(rect), width_Rect(rect), uiBackgroundFramelessHover_ColorId);
638 } 640 }
639 if (d->bgColor >= 0 || d->frameColor >= 0) { 641 if (d->bgColor >= 0 || d->frameColor >= 0) {
640 const iRect rect = bounds_Widget(d); 642 iRect rect = bounds_Widget(d);
641 iPaint p; 643 iPaint p;
642 init_Paint(&p); 644 init_Paint(&p);
643 if (d->bgColor >= 0) { 645 if (d->bgColor >= 0) {
646#if defined (iPlatformAppleMobile)
647 if (d->flags & (drawBackgroundToHorizontalSafeArea_WidgetFlag |
648 drawBackgroundToVerticalSafeArea_WidgetFlag)) {
649 const iInt2 rootSize = rootSize_Window(get_Window());
650 const iInt2 center = divi_I2(rootSize, 2);
651 int top = 0, right = 0, bottom = 0, left = 0;
652 if (d->flags & drawBackgroundToHorizontalSafeArea_WidgetFlag) {
653 const iBool isWide = width_Rect(rect) > rootSize.x * 9 / 10;
654 if (isWide || mid_Rect(rect).x < center.x) {
655 left = -left_Rect(rect);
656 }
657 if (isWide || mid_Rect(rect).x > center.x) {
658 right = rootSize.x - right_Rect(rect);
659 }
660 }
661 if (d->flags & drawBackgroundToVerticalSafeArea_WidgetFlag) {
662 if (top_Rect(rect) > center.y) {
663 bottom = rootSize.y - bottom_Rect(rect);
664 }
665 if (bottom_Rect(rect) < center.y) {
666 top = -top_Rect(rect);
667 }
668 }
669 adjustEdges_Rect(&rect, top, right, bottom, left);
670 }
671#endif
644 fillRect_Paint(&p, rect, d->bgColor); 672 fillRect_Paint(&p, rect, d->bgColor);
645 } 673 }
646 if (d->frameColor >= 0 && ~d->flags & frameless_WidgetFlag) { 674 if (d->frameColor >= 0 && ~d->flags & frameless_WidgetFlag) {