From 0f960600c43500523301397fdbd605e2c9cec5ce Mon Sep 17 00:00:00 2001 From: tomers Date: Mon, 5 Oct 2009 23:41:59 +0000 Subject: [PATCH] Fine tuning of gui elements positioning in RTL mode git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22976 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/bitmap/list.c | 13 ++++++++----- apps/gui/icon.c | 5 ++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/gui/bitmap/list.c b/apps/gui/bitmap/list.c index c94b6037a..f0eb2ec16 100644 --- a/apps/gui/bitmap/list.c +++ b/apps/gui/bitmap/list.c @@ -85,8 +85,7 @@ static bool draw_title(struct screen *display, struct gui_synclist *list) title_icon.width = get_icon_width(screen) + ICON_PADDING * 2; if (IS_RTL(&title_icon)) { - title_icon.x = title_text_vp->width - ICON_PADDING - - get_icon_width(screen); + title_icon.x = title_text_vp->width - title_icon.width; } else { @@ -156,18 +155,22 @@ void list_draw(struct screen *display, struct gui_synclist *list) else vp.x += list_text_vp->width; display->set_viewport(&vp); - gui_scrollbar_draw(display, 0, 0, SCROLLBAR_WIDTH-1, vp.height, + gui_scrollbar_draw(display, IS_RTL(&vp) ? 1 : 0, 0, SCROLLBAR_WIDTH-1, vp.height, list->nb_items, list_start_item, list_start_item + end-start, VERTICAL); } else if (show_title) { /* shift everything a bit in relation to the title... */ - if (scrollbar_in_left) + if (!IS_RTL(list_text_vp) && scrollbar_in_left) { list_text_vp->width -= SCROLLBAR_WIDTH; list_text_vp->x += SCROLLBAR_WIDTH; } + else if (IS_RTL(list_text_vp) && !scrollbar_in_left) + { + list_text_vp->width -= SCROLLBAR_WIDTH; + } } /* setup icon placement */ @@ -181,7 +184,7 @@ void list_draw(struct screen *display, struct gui_synclist *list) list_icons.width = icon_width * icon_count; list_text_vp->width -= list_icons.width + ICON_PADDING; if (IS_RTL(&list_icons)) - list_icons.x += list_text_vp->width; + list_icons.x += list_text_vp->width + ICON_PADDING; else list_text_vp->x += list_icons.width + ICON_PADDING; } diff --git a/apps/gui/icon.c b/apps/gui/icon.c index e57ad29f6..73c0fb598 100644 --- a/apps/gui/icon.c +++ b/apps/gui/icon.c @@ -125,12 +125,15 @@ void screen_put_iconxy(struct screen * display, const int screen = display->screen_type; const int width = ICON_WIDTH(screen); const int height = ICON_HEIGHT(screen); + const int is_rtl = lang_is_rtl(); int stride; const struct bitmap *iconset; screen_bitmap_part_func *draw_func = NULL; if (icon == Icon_NOICON) { + if (is_rtl) + xpos = display->getwidth() - xpos - width; screen_clear_area(display, xpos, ypos, width, height); return; } @@ -164,7 +167,7 @@ void screen_put_iconxy(struct screen * display, if (xpos == 0) xpos++; - if (lang_is_rtl()) + if (is_rtl) xpos = display->getwidth() - xpos - width; #if (LCD_DEPTH == 16) || defined(LCD_REMOTE_DEPTH) && (LCD_REMOTE_DEPTH == 16) -- 2.11.4.GIT