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.c34
1 files changed, 29 insertions, 5 deletions
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c
index 22d3eb3eb8..67f63e349b 100644
--- a/apps/gui/viewport.c
+++ b/apps/gui/viewport.c
@@ -49,30 +49,47 @@ int viewport_get_nb_lines(struct viewport *vp)
49 49
50static bool showing_bars(enum screen_type screen) 50static bool showing_bars(enum screen_type screen)
51{ 51{
52 bool ignore = statusbar_enabled & VP_SB_IGNORE_SETTING(screen);
52 if (statusbar_enabled & VP_SB_ONSCREEN(screen)) 53 if (statusbar_enabled & VP_SB_ONSCREEN(screen))
54 {
53#ifdef HAVE_LCD_BITMAP 55#ifdef HAVE_LCD_BITMAP
54 return global_settings.statusbar || 56#ifdef HAVE_REMOTE_LCD
55 (statusbar_enabled & VP_SB_IGNORE_SETTING(screen)); 57 if (screen == SCREEN_REMOTE)
58 return global_settings.remote_statusbar || ignore;
59#endif
60 return global_settings.statusbar || ignore;
56#else 61#else
57 return true; 62 return true;
58#endif 63#endif
64 }
59 return false; 65 return false;
60} 66}
61 67
62void viewport_set_defaults(struct viewport *vp, enum screen_type screen) 68void viewport_set_defaults(struct viewport *vp, enum screen_type screen)
63{ 69{
70 bool bar_at_top = true;
64 vp->x = 0; 71 vp->x = 0;
65 vp->width = screens[screen].lcdwidth; 72 vp->width = screens[screen].lcdwidth;
66 73
67#ifdef HAVE_LCD_BITMAP 74#ifdef HAVE_LCD_BITMAP
68 vp->drawmode = DRMODE_SOLID; 75 vp->drawmode = DRMODE_SOLID;
69 vp->font = FONT_UI; /* default to UI to discourage SYSFONT use */ 76 vp->font = FONT_UI; /* default to UI to discourage SYSFONT use */
70 77#ifdef HAVE_REMOTE_LCD
71 vp->y = showing_bars(screen)?STATUSBAR_HEIGHT:0; 78 if (screen == SCREEN_REMOTE)
79 bar_at_top = global_settings.remote_statusbar != STATUSBAR_BOTTOM;
80 else
81#endif
82 bar_at_top = global_settings.statusbar != STATUSBAR_BOTTOM;
83
84 vp->height = screens[screen].lcdheight;
85 if (bar_at_top && showing_bars(screen))
86 vp->y = STATUSBAR_HEIGHT;
87 else
88 vp->y = 0;
72#else 89#else
73 vp->y = 0; 90 vp->y = 0;
74#endif 91#endif
75 vp->height = screens[screen].lcdheight - vp->y; 92 vp->height = screens[screen].lcdheight - (showing_bars(screen)?STATUSBAR_HEIGHT:0);
76 93
77#ifdef HAVE_REMOTE_LCD 94#ifdef HAVE_REMOTE_LCD
78 /* We only need this test if there is a remote LCD */ 95 /* We only need this test if there is a remote LCD */
@@ -136,5 +153,12 @@ void viewportmanager_draw_statusbars(void* data)
136void viewportmanager_statusbar_changed(void* data) 153void viewportmanager_statusbar_changed(void* data)
137{ 154{
138 (void)data; 155 (void)data;
156 statusbar_enabled = 0;
157 if (global_settings.statusbar != STATUSBAR_OFF)
158 statusbar_enabled = VP_SB_ONSCREEN(SCREEN_MAIN);
159#ifdef HAVE_REMOTE_LCD
160 if (global_settings.remote_statusbar != STATUSBAR_OFF)
161 statusbar_enabled |= VP_SB_ONSCREEN(SCREEN_REMOTE);
162#endif
139 viewportmanager_set_statusbar(statusbar_enabled); 163 viewportmanager_set_statusbar(statusbar_enabled);
140} 164}