summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/quickscreen.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index ef1111f..f19f2a1 100644
--- a/apps/gui/quickscreen.c
+++ b/apps/gui/quickscreen.c
@@ -107,14 +107,16 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs,
vp_icons[screen].height =
vps[screen][QUICKSCREEN_BOTTOM].y - vp_icons[screen].y;
- if (left_width + right_width > display->lcdwidth - CENTER_ICONAREA_WIDTH)
+ if ((left_width + right_width > parent->width - CENTER_ICONAREA_WIDTH) ||
+ (MAX(left_width, right_width)*2 > parent->width - CENTER_ICONAREA_WIDTH))
{
/* scrolling needed */
- int width = (parent->width - CENTER_ICONAREA_WIDTH)/2;
+ int center = (parent->width - CENTER_ICONAREA_WIDTH)/2;
+ int width = MIN(center, MIN(left_width, right_width));
vps[screen][QUICKSCREEN_LEFT].width = width;
vps[screen][QUICKSCREEN_RIGHT].width = width;
vps[screen][QUICKSCREEN_RIGHT].x = parent->x+parent->width - width;
- vp_icons[screen].x = parent->x + width;
+ vp_icons[screen].x = parent->x + center;
vp_icons[screen].width = CENTER_ICONAREA_WIDTH;
}
else
@@ -144,7 +146,7 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs,
vps[screen][QUICKSCREEN_BOTTOM].x += pad;
vps[screen][QUICKSCREEN_BOTTOM].width -= pad;
}
- vp_icons[screen].width = vps[screen][QUICKSCREEN_RIGHT].x - width;
+ vp_icons[screen].width = vps[screen][QUICKSCREEN_RIGHT].x - (vps[screen][QUICKSCREEN_LEFT].x+width);
}
}