diff options
Diffstat (limited to 'apps/gui/viewport.c')
-rw-r--r-- | apps/gui/viewport.c | 35 |
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 | ||
38 | static bool statusbar_enabled = true; | 38 | static char statusbar_enabled = VP_ALLSCREENS; |
39 | 39 | ||
40 | int viewport_get_nb_lines(struct viewport *vp) | 40 | int 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 | ||
50 | static 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 | ||
51 | void viewport_set_defaults(struct viewport *vp, enum screen_type screen) | 57 | void 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 */ |
90 | bool viewportmanager_set_statusbar(bool enabled) | 96 | char 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) | |||
110 | void viewportmanager_draw_statusbars(void* data) | 117 | void 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 | ||
117 | void viewportmanager_statusbar_changed(void* data) | 128 | void viewportmanager_statusbar_changed(void* data) |