#include <log/log.h>
#include <fold/fold.h>
#include <util/util.h>
+#include <i18n/i18n.h>
#include "nc-cui.h"
#include "nc-textscreen.h"
void text_screen_draw(struct text_screen *screen)
{
- int max_y, i;
+ int max_y, max_x, i;
max_y = getmaxy(screen->scr.sub_ncw);
+ max_x = getmaxx(screen->scr.sub_ncw) - 1;
max_y = min(max_y, screen->scroll_y + screen->n_lines);
for (i = screen->scroll_y; i < max_y; i++)
- mvwaddstr(screen->scr.sub_ncw, i, 1, screen->lines[i]);
+ mvwaddnstr(screen->scr.sub_ncw, i, 1, screen->lines[i], max_x);
wrefresh(screen->scr.sub_ncw);
}
static void text_screen_scroll(struct text_screen *screen, int key)
{
int win_lines = getmaxy(screen->scr.sub_ncw);
+ int win_cols = getmaxx(screen->scr.sub_ncw) - 1;
int delta;
if (key == KEY_UP)
wscrl(screen->scr.sub_ncw, delta);
if (delta > 0) {
- mvwaddstr(screen->scr.sub_ncw, win_lines - 1, 1,
- screen->lines[screen->scroll_y+win_lines-1]);
+ mvwaddnstr(screen->scr.sub_ncw, win_lines - 1, 1,
+ screen->lines[screen->scroll_y+win_lines-1],
+ win_cols);
} else if (delta < 0) {
- mvwaddstr(screen->scr.sub_ncw, 0, 1,
- screen->lines[screen->scroll_y]);
+ mvwaddnstr(screen->scr.sub_ncw, 0, 1,
+ screen->lines[screen->scroll_y], win_cols);
}
wrefresh(screen->scr.sub_ncw);
void text_screen_set_text(struct text_screen *screen, const char *text)
{
- fold_text(text, getmaxx(screen->scr.sub_ncw), text_screen_fold_cb,
+ fold_text(text, getmaxx(screen->scr.sub_ncw) - 1, text_screen_fold_cb,
screen);
}
}
void text_screen_set_help(struct text_screen *screen, const char *title,
- const char *text)
+ const struct help_text *text)
{
screen->help_title = title;
screen->help_text = text;
- screen->scr.frame.help = "x=exit, h=help";
+ screen->scr.frame.help = _("x=exit, h=help");
}
static int text_screen_post(struct nc_scr *scr)
{
+ struct text_screen *screen = text_screen_from_scr(scr);
+
+ if (screen->need_update) {
+ text_screen_draw(screen);
+ screen->need_update = false;
+ }
+
nc_scr_frame_draw(scr);
redrawwin(scr->main_ncw);
wrefresh(scr->main_ncw);
screen->cui = cui;
screen->on_exit = on_exit;
+ screen->need_update = false;
screen->scr.frame.ltitle = talloc_strdup(screen, title);
screen->scr.frame.rtitle = NULL;
- screen->scr.frame.help = "x=exit";
+ screen->scr.frame.help = _("x=exit");
scrollok(screen->scr.sub_ncw, true);
}