aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2022-06-07 11:06:15 +0200
committerlonkaars <loek@pipeframe.xyz>2022-06-07 11:06:15 +0200
commit8c8322a7a0c251d595a0df054324f82d41966e0a (patch)
tree4cb89c448e7a870acbc12205ed72b7ef4023709c
parentb81f15e6542d124ef22347e1b793894494695b3d (diff)
fix tab bar flashing
-rw-r--r--client/setup.c6
-rw-r--r--client/ui.c28
-rw-r--r--client/ui.h4
3 files changed, 23 insertions, 15 deletions
diff --git a/client/setup.c b/client/setup.c
index e51965f..8b5d07a 100644
--- a/client/setup.c
+++ b/client/setup.c
@@ -43,8 +43,10 @@ void w2_client_setup(int argc, char **argv) {
g_w2_ui_width = getmaxx(g_w2_ui_win);
g_w2_ui_height = getmaxy(g_w2_ui_win);
- g_w2_ui_pad_tabbar = newpad(1, g_w2_ui_width);
- g_w2_ui_pad_body = newpad(g_w2_ui_height - 5, g_w2_ui_width);
+ g_w2_ui_pad_tabbar = newpad(1, g_w2_ui_width);
+ g_w2_ui_pad_body = newpad(g_w2_ui_height - 5, g_w2_ui_width);
+ g_w2_ui_pad_statusbar = newpad(2, g_w2_ui_width);
+ g_w2_ui_pad_seperator = newpad(1, g_w2_ui_width);
scrollok(g_w2_ui_pad_body, true);
// check endianness
diff --git a/client/ui.c b/client/ui.c
index 9e6837a..c45259e 100644
--- a/client/ui.c
+++ b/client/ui.c
@@ -12,6 +12,8 @@
WINDOW *g_w2_ui_win;
WINDOW *g_w2_ui_pad_tabbar;
+WINDOW *g_w2_ui_pad_statusbar;
+WINDOW *g_w2_ui_pad_seperator;
WINDOW *g_w2_ui_pad_body;
int g_w2_ui_pad_body_scroll = 0;
unsigned int g_w2_ui_width = 0;
@@ -37,7 +39,6 @@ void w2_ui_switch_tab(w2_e_ui_tabs next_tab) {
void w2_ui_key_handler() {
int ch;
void (*current_mode_key_handler)() = g_w2_keyhndl_ptrs[g_w2_ui_current_tab];
- return;
while ((ch = getch()) != -1) {
if (ch == '\t')
w2_ui_switch_tab(g_w2_ui_current_tab + 1);
@@ -56,12 +57,16 @@ void w2_ui_main() {
void w2_ui_paint() {
w2_ui_paint_statusbar();
+ w2_ui_paint_tabbar();
+ w2_ui_paint_seperator();
if (w2_timer_end(W2_TIMER_UPDATE) >= (1000 / W2_UI_UPDATE_FPS)) {
(*g_w2_tab_ptrs[g_w2_ui_current_tab])(g_w2_ui_last_tab != g_w2_ui_current_tab);
g_w2_ui_last_tab = g_w2_ui_current_tab;
w2_timer_start(W2_TIMER_UPDATE);
}
+ prefresh(g_w2_ui_pad_statusbar, 0, 0, 0, 0, 1, g_w2_ui_width - 1);
prefresh(g_w2_ui_pad_tabbar, 0, 0, 2, 0, 2, g_w2_ui_width - 1);
+ prefresh(g_w2_ui_pad_seperator, 0, 0, 3, 0, 3, g_w2_ui_width - 1);
prefresh(g_w2_ui_pad_body, W2_MAX(0, g_w2_ui_pad_body_scroll), 0,
4 - W2_MIN(0, g_w2_ui_pad_body_scroll), 0, g_w2_ui_height - 2, g_w2_ui_width - 1);
}
@@ -69,30 +74,27 @@ void w2_ui_paint() {
void w2_ui_paint_statusbar() {
char temp[g_w2_ui_width];
- for (unsigned int i = 0; i < g_w2_ui_width; i++) temp[i] = ' ';
- mvaddnstr(0, 0, temp, g_w2_ui_width);
- mvaddnstr(1, 0, temp, g_w2_ui_width);
- mvaddnstr(2, 0, temp, g_w2_ui_width);
-
g_w2_state.connected ? sprintf(temp, W2_UI_CONN_STAT_CONNECTED ", %ims %s", g_w2_state.ping,
W2_UI_CONN_STAT_PING)
: sprintf(temp, W2_UI_CONN_STAT_DISCONNECTED);
- mvaddstr(0, 0, temp);
+ w2_wmvaddstr(g_w2_ui_pad_statusbar, 0, 0, temp);
sprintf(temp, "(%s)", g_w2_state.info.build_str);
- mvaddstr(0, g_w2_ui_width / 2 - strlen(temp) / 2, temp);
+ w2_wmvaddstr(g_w2_ui_pad_statusbar, 0, g_w2_ui_width / 2 - strlen(temp) / 2, temp);
sprintf(temp, "%s %i%%", W2_UI_BATT_STAT_BATTERY, g_w2_state.battery_level);
- mvaddstr(0, g_w2_ui_width - strlen(temp), temp);
+ w2_wmvaddstr(g_w2_ui_pad_statusbar, 0, g_w2_ui_width - strlen(temp), temp);
sprintf(temp, "[%s]", g_w2_mode_strings[g_w2_state.mode]);
- mvaddstr(1, 0, temp);
+ w2_wmvaddstr(g_w2_ui_pad_statusbar, 1, 0, temp);
sprintf(temp, "%i %s, %i %s", 0, W2_UI_EXPT_STAT_WARNINGS, 0, W2_UI_EXPT_STAT_ERRORS);
- mvaddstr(1, g_w2_ui_width - strlen(temp), temp);
+ w2_wmvaddstr(g_w2_ui_pad_statusbar, 1, g_w2_ui_width - strlen(temp), temp);
+}
- w2_ui_paint_tabbar();
+void w2_ui_paint_seperator() {
+ char temp[g_w2_ui_width];
for (unsigned int i = 0; i < g_w2_ui_width; i++) temp[i] = '-';
- mvaddnstr(3, 0, temp, g_w2_ui_width);
+ w2_wmvaddnstr(g_w2_ui_pad_seperator, 0, 0, temp, g_w2_ui_width);
}
diff --git a/client/ui.h b/client/ui.h
index eb09739..a003cfc 100644
--- a/client/ui.h
+++ b/client/ui.h
@@ -14,6 +14,8 @@ typedef enum {
extern WINDOW *g_w2_ui_win;
extern WINDOW *g_w2_ui_pad_tabbar;
+extern WINDOW *g_w2_ui_pad_statusbar;
+extern WINDOW *g_w2_ui_pad_seperator;
extern WINDOW *g_w2_ui_pad_body;
extern int g_w2_ui_pad_body_scroll;
extern unsigned int g_w2_ui_width;
@@ -37,6 +39,8 @@ void w2_ui_main();
void w2_ui_paint_statusbar();
/** draw tab bar */
void w2_ui_paint_tabbar();
+/** draw seperator under tab bar */
+void w2_ui_paint_seperator();
void w2_ui_tabbar_init();