summaryrefslogtreecommitdiff
path: root/apps/gui/viewport.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/viewport.c')
-rw-r--r--apps/gui/viewport.c35
1 files changed, 23 insertions, 12 deletions
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c
index 24ba652498..3854430521 100644
--- a/apps/gui/viewport.c
+++ b/apps/gui/viewport.c
@@ -35,7 +35,7 @@
35#include "screen_access.h" 35#include "screen_access.h"
36#include "appevents.h" 36#include "appevents.h"
37 37
38static bool statusbar_enabled = true; 38static char statusbar_enabled = VP_ALLSCREENS;
39 39
40int viewport_get_nb_lines(struct viewport *vp) 40int viewport_get_nb_lines(struct viewport *vp)
41{ 41{
@@ -47,13 +47,19 @@ int viewport_get_nb_lines(struct viewport *vp)
47#endif 47#endif
48} 48}
49 49
50static bool showing_bars(enum screen_type screen)
51{
52 if (statusbar_enabled&(1<<screen))
53 return global_settings.statusbar || (statusbar_enabled&(1<<(screen+4)));
54 return false;
55}
50 56
51void viewport_set_defaults(struct viewport *vp, enum screen_type screen) 57void viewport_set_defaults(struct viewport *vp, enum screen_type screen)
52{ 58{
53 vp->x = 0; 59 vp->x = 0;
54 vp->width = screens[screen].lcdwidth; 60 vp->width = screens[screen].lcdwidth;
55 61
56 vp->y = statusbar_enabled?gui_statusbar_height():0; 62 vp->y = showing_bars(screen)?gui_statusbar_height():0;
57 vp->height = screens[screen].lcdheight - vp->y; 63 vp->height = screens[screen].lcdheight - vp->y;
58#ifdef HAVE_LCD_BITMAP 64#ifdef HAVE_LCD_BITMAP
59 vp->drawmode = DRMODE_SOLID; 65 vp->drawmode = DRMODE_SOLID;
@@ -87,17 +93,18 @@ void viewport_set_defaults(struct viewport *vp, enum screen_type screen)
87} 93}
88 94
89/* returns true if it was enabled BEFORE this call */ 95/* returns true if it was enabled BEFORE this call */
90bool viewportmanager_set_statusbar(bool enabled) 96char viewportmanager_set_statusbar(char enabled)
91{ 97{
92 bool old = statusbar_enabled; 98 char old = statusbar_enabled;
93 if (enabled 99 if (enabled)
94#ifdef HAVE_LCD_BITMAP
95 && global_settings.statusbar
96#endif
97 )
98 { 100 {
101 int i;
102 FOR_NB_SCREENS(i)
103 {
104 if (showing_bars(i))
105 gui_statusbar_draw(&statusbars.statusbars[i], true);
106 }
99 add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_draw_statusbars); 107 add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_draw_statusbars);
100 gui_syncstatusbar_draw(&statusbars, true);
101 } 108 }
102 else 109 else
103 { 110 {
@@ -110,8 +117,12 @@ bool viewportmanager_set_statusbar(bool enabled)
110void viewportmanager_draw_statusbars(void* data) 117void viewportmanager_draw_statusbars(void* data)
111{ 118{
112 (void)data; 119 (void)data;
113 if (statusbar_enabled) 120 int i;
114 gui_syncstatusbar_draw(&statusbars, false); 121 FOR_NB_SCREENS(i)
122 {
123 if (showing_bars(i))
124 gui_statusbar_draw(&statusbars.statusbars[i], false);
125 }
115} 126}
116 127
117void viewportmanager_statusbar_changed(void* data) 128void viewportmanager_statusbar_changed(void* data)