summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
authorTomer Shalev <shalev.tomer@gmail.com>2009-10-05 21:13:55 +0000
committerTomer Shalev <shalev.tomer@gmail.com>2009-10-05 21:13:55 +0000
commitb0a99383211c4d6aaa8558978dc6d617b018a9c7 (patch)
treefa92234c262cd8431c4e2e76511a8fb946273d18 /apps/gui
parent5abd9686f47c4e890677b4c9cb0d8f750642b5da (diff)
downloadrockbox-b0a99383211c4d6aaa8558978dc6d617b018a9c7.tar.gz
rockbox-b0a99383211c4d6aaa8558978dc6d617b018a9c7.zip
Add rtl flagging to viewport_set_defaults(), and ensure that
viewportmanager_theme_changed() is called during font loading git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22971 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui')
-rw-r--r--apps/gui/bitmap/list.c16
-rw-r--r--apps/gui/viewport.c5
2 files changed, 8 insertions, 13 deletions
diff --git a/apps/gui/bitmap/list.c b/apps/gui/bitmap/list.c
index 953ce1b1d7..5183880aa8 100644
--- a/apps/gui/bitmap/list.c
+++ b/apps/gui/bitmap/list.c
@@ -40,13 +40,9 @@
40#include "sound.h" 40#include "sound.h"
41#include "misc.h" 41#include "misc.h"
42#include "viewport.h" 42#include "viewport.h"
43#include "language.h"
44 43
45#define ICON_PADDING 1 44#define ICON_PADDING 1
46 45#define IS_RTL(vp) (((vp)->flags & VP_IS_RTL) != 0)
47#define UPDATE_RTL(vp) \
48 (vp)->flags &= ~VP_IS_RTL; \
49 (vp)->flags |= lang_is_rtl() ? VP_IS_RTL : 0;
50 46
51/* these are static to make scrolling work */ 47/* these are static to make scrolling work */
52static struct viewport list_text[NB_SCREENS], title_text[NB_SCREENS]; 48static struct viewport list_text[NB_SCREENS], title_text[NB_SCREENS];
@@ -80,16 +76,14 @@ static bool draw_title(struct screen *display, struct gui_synclist *list)
80 if (!list_display_title(list, screen)) 76 if (!list_display_title(list, screen))
81 return false; 77 return false;
82 *title_text_vp = *(list->parent[screen]); 78 *title_text_vp = *(list->parent[screen]);
83 UPDATE_RTL(title_text_vp);
84 title_text_vp->height = font_get(title_text_vp->font)->height; 79 title_text_vp->height = font_get(title_text_vp->font)->height;
85 80
86 if (list->title_icon != Icon_NOICON && global_settings.show_icons) 81 if (list->title_icon != Icon_NOICON && global_settings.show_icons)
87 { 82 {
88 struct viewport title_icon = *title_text_vp; 83 struct viewport title_icon = *title_text_vp;
89 84
90 UPDATE_RTL(&title_icon);
91 title_icon.width = get_icon_width(screen) + ICON_PADDING * 2; 85 title_icon.width = get_icon_width(screen) + ICON_PADDING * 2;
92 if (lang_is_rtl()) 86 if (IS_RTL(&title_icon))
93 { 87 {
94 title_icon.x = title_text_vp->width - ICON_PADDING - 88 title_icon.x = title_text_vp->width - ICON_PADDING -
95 get_icon_width(screen); 89 get_icon_width(screen);
@@ -129,7 +123,7 @@ void list_draw(struct screen *display, struct gui_synclist *list)
129#ifdef HAVE_LCD_COLOR 123#ifdef HAVE_LCD_COLOR
130 unsigned char cur_line = 0; 124 unsigned char cur_line = 0;
131#endif 125#endif
132 int item_offset, is_rtl = lang_is_rtl(); 126 int item_offset;
133 bool show_title; 127 bool show_title;
134 struct viewport *list_text_vp = &list_text[screen]; 128 struct viewport *list_text_vp = &list_text[screen];
135 129
@@ -138,7 +132,6 @@ void list_draw(struct screen *display, struct gui_synclist *list)
138 display->clear_viewport(); 132 display->clear_viewport();
139 display->scroll_stop(list_text_vp); 133 display->scroll_stop(list_text_vp);
140 *list_text_vp = *parent; 134 *list_text_vp = *parent;
141 UPDATE_RTL(list_text_vp);
142 if ((show_title = draw_title(display, list))) 135 if ((show_title = draw_title(display, list)))
143 { 136 {
144 list_text_vp->y += line_height; 137 list_text_vp->y += line_height;
@@ -179,7 +172,6 @@ void list_draw(struct screen *display, struct gui_synclist *list)
179 172
180 /* setup icon placement */ 173 /* setup icon placement */
181 list_icons = *list_text_vp; 174 list_icons = *list_text_vp;
182 UPDATE_RTL(&list_icons);
183 int icon_count = global_settings.show_icons && 175 int icon_count = global_settings.show_icons &&
184 (list->callback_get_item_icon != NULL) ? 1 : 0; 176 (list->callback_get_item_icon != NULL) ? 1 : 0;
185 if (show_cursor) 177 if (show_cursor)
@@ -188,7 +180,7 @@ void list_draw(struct screen *display, struct gui_synclist *list)
188 { 180 {
189 list_icons.width = icon_width * icon_count; 181 list_icons.width = icon_width * icon_count;
190 list_text_vp->width -= list_icons.width + ICON_PADDING; 182 list_text_vp->width -= list_icons.width + ICON_PADDING;
191 if (is_rtl) 183 if (IS_RTL(&list_icons))
192 list_icons.x += list_text_vp->width; 184 list_icons.x += list_text_vp->width;
193 else 185 else
194 list_text_vp->x += list_icons.width + ICON_PADDING; 186 list_text_vp->x += list_icons.width + ICON_PADDING;
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c
index ff3a110936..bfdd1ce04a 100644
--- a/apps/gui/viewport.c
+++ b/apps/gui/viewport.c
@@ -55,7 +55,7 @@
55#include "system.h" 55#include "system.h"
56#include "statusbar.h" 56#include "statusbar.h"
57#include "appevents.h" 57#include "appevents.h"
58 58#include "language.h"
59 59
60static int statusbar_enabled = 0; 60static int statusbar_enabled = 0;
61 61
@@ -147,6 +147,9 @@ void viewport_set_defaults(struct viewport *vp, enum screen_type screen)
147 else 147 else
148#endif 148#endif
149 viewport_set_fullscreen(vp, screen); 149 viewport_set_fullscreen(vp, screen);
150
151 vp->flags &= ~VP_IS_RTL;
152 vp->flags |= lang_is_rtl() ? VP_IS_RTL : 0;
150} 153}
151 154
152void viewportmanager_init(void) 155void viewportmanager_init(void)