diff options
author | Timo Sirainen <cras@irssi.org> | 2001-06-01 21:49:07 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2001-06-01 21:49:07 +0000 |
commit | 05777636a78af7214b33027cdfa6f08b045e6fe7 (patch) | |
tree | 447188485ac78470d0270639a10a155fc5e4af94 | |
parent | 6f5c1117debce23e12fdba370f0356bebf61d355 (diff) | |
download | irssi-05777636a78af7214b33027cdfa6f08b045e6fe7.zip |
Replaced all direct curses calls with screen_xx() wrappers. This should
enable us to optionally use termcap directly.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1535 dbcabf3a-b0e7-0310-adc4-f8d773084564
-rw-r--r-- | src/fe-text/gui-entry.c | 30 | ||||
-rw-r--r-- | src/fe-text/gui-printtext.c | 8 | ||||
-rw-r--r-- | src/fe-text/gui-readline.c | 9 | ||||
-rw-r--r-- | src/fe-text/gui-windows.c | 2 | ||||
-rw-r--r-- | src/fe-text/irssi.c | 4 | ||||
-rw-r--r-- | src/fe-text/mainwindows.c | 61 | ||||
-rw-r--r-- | src/fe-text/mainwindows.h | 7 | ||||
-rw-r--r-- | src/fe-text/screen.c | 140 | ||||
-rw-r--r-- | src/fe-text/screen.h | 48 | ||||
-rw-r--r-- | src/fe-text/statusbar-items.c | 2 | ||||
-rw-r--r-- | src/fe-text/statusbar.c | 21 | ||||
-rw-r--r-- | src/fe-text/textbuffer-view.c | 33 | ||||
-rw-r--r-- | src/fe-text/textbuffer-view.h | 5 |
13 files changed, 238 insertions, 132 deletions
diff --git a/src/fe-text/gui-entry.c b/src/fe-text/gui-entry.c index 835b3b3d..10d13ffb 100644 --- a/src/fe-text/gui-entry.c +++ b/src/fe-text/gui-entry.c @@ -31,16 +31,16 @@ static char *prompt; static void entry_screenpos(void) { - if (pos-scrstart < COLS-2-promptlen && pos-scrstart > 0) { + if (pos-scrstart < screen_width-2-promptlen && pos-scrstart > 0) { scrpos = pos-scrstart; return; } - if (pos < COLS-1-promptlen) { + if (pos < screen_width-1-promptlen) { scrstart = 0; scrpos = pos; } else { - scrpos = (COLS-promptlen)*2/3; + scrpos = (screen_width-promptlen)*2/3; scrstart = pos-scrpos; } } @@ -50,26 +50,26 @@ static void entry_update(void) char *p; int n, len; - len = entry->len-scrstart > COLS-1-promptlen ? - COLS-1-promptlen : entry->len-scrstart; + len = entry->len-scrstart > screen_width-1-promptlen ? + screen_width-1-promptlen : entry->len-scrstart; - set_color(stdscr, 0); - move(LINES-1, promptlen); + screen_set_color(screen_root, 0); + screen_move(screen_root, promptlen, screen_height-1); for (p = entry->str+scrstart, n = 0; n < len; n++, p++) { if (prompt_hidden) - addch(' '); + screen_addch(screen_root, ' '); else if ((unsigned char) *p >= 32) - addch((unsigned char) *p); + screen_addch(screen_root, (unsigned char) *p); else { - set_color(stdscr, ATTR_REVERSE); - addch(*p+'A'-1); - set_color(stdscr, 0); + screen_set_color(screen_root, ATTR_REVERSE); + screen_addch(screen_root, *p+'A'-1); + screen_set_color(screen_root, 0); } } - clrtoeol(); + screen_clrtoeol(screen_root); - move_cursor(LINES-1, scrpos+promptlen); + screen_move_cursor(scrpos+promptlen, screen_height-1); screen_refresh(NULL); } @@ -84,7 +84,7 @@ void gui_entry_set_prompt(const char *str) } if (prompt != NULL) - gui_printtext(0, LINES-1, prompt); + gui_printtext(0, screen_height-1, prompt); entry_screenpos(); entry_update(); diff --git a/src/fe-text/gui-printtext.c b/src/fe-text/gui-printtext.c index 5faae0fa..dab185da 100644 --- a/src/fe-text/gui-printtext.c +++ b/src/fe-text/gui-printtext.c @@ -165,9 +165,9 @@ static void sig_gui_print_text(WINDOW_REC *window, void *fgcolor, if (window == NULL) { g_return_if_fail(next_xpos != -1); - wmove(stdscr, next_ypos, next_xpos); - set_color(stdscr, fg | (bg << 4)); - addstr(str); + screen_move(screen_root, next_xpos, next_ypos); + screen_set_color(screen_root, fg | (bg << 4)); + screen_addstr(screen_root, str); next_xpos += strlen(str); return; } @@ -258,7 +258,6 @@ void gui_printtext_init(void) signal_add("print text finished", (SIGNAL_FUNC) sig_printtext_finished); signal_add("print format", (SIGNAL_FUNC) sig_print_format); signal_add("setup changed", (SIGNAL_FUNC) read_settings); - signal_add("beep", (SIGNAL_FUNC) beep); read_settings(); } @@ -271,5 +270,4 @@ void gui_printtext_deinit(void) signal_remove("print text finished", (SIGNAL_FUNC) sig_printtext_finished); signal_remove("print format", (SIGNAL_FUNC) sig_print_format); signal_remove("setup changed", (SIGNAL_FUNC) read_settings); - signal_remove("beep", (SIGNAL_FUNC) beep); } diff --git a/src/fe-text/gui-readline.c b/src/fe-text/gui-readline.c index bc3429d8..c28daed1 100644 --- a/src/fe-text/gui-readline.c +++ b/src/fe-text/gui-readline.c @@ -313,12 +313,9 @@ void readline(void) int key; for (;;) { - key = getch(); - if (key == ERR -#ifdef KEY_RESIZE - || key == KEY_RESIZE -#endif - ) break; + key = screen_getch(); + if (key == -1) + break; handle_key(key); } diff --git a/src/fe-text/gui-windows.c b/src/fe-text/gui-windows.c index 707d16e0..999095c8 100644 --- a/src/fe-text/gui-windows.c +++ b/src/fe-text/gui-windows.c @@ -254,7 +254,7 @@ static void signal_window_changed(WINDOW_REC *window) active_mainwin->active = window; textbuffer_view_set_window(WINDOW_GUI(window)->view, - parent->curses_win); + parent->screen_win); window_update_prompt(); } diff --git a/src/fe-text/irssi.c b/src/fe-text/irssi.c index 55b576fb..bd1fcdc8 100644 --- a/src/fe-text/irssi.c +++ b/src/fe-text/irssi.c @@ -89,8 +89,8 @@ static void sig_exit(void) /* redraw irssi's screen.. */ void irssi_redraw(void) { - clear(); - refresh(); + screen_clear(); + screen_refresh(NULL); /* windows */ mainwindows_redraw(); diff --git a/src/fe-text/mainwindows.c b/src/fe-text/mainwindows.c index 72977598..63820894 100644 --- a/src/fe-text/mainwindows.c +++ b/src/fe-text/mainwindows.c @@ -37,7 +37,11 @@ GSList *mainwindows; MAIN_WINDOW_REC *active_mainwin; static int reserved_up, reserved_down; -static int screen_width, screen_height; +static int old_screen_width, old_screen_height; + +#define mainwindow_create_screen(window) \ + screen_window_create(0, (window)->first_line, \ + (window)->width, (window)->height) static MAIN_WINDOW_REC *find_window_with_room(void) { @@ -59,15 +63,6 @@ static MAIN_WINDOW_REC *find_window_with_room(void) return biggest_rec; } -#ifdef USE_CURSES_WINDOWS -static void create_curses_window(MAIN_WINDOW_REC *window) -{ - window->curses_win = newwin(window->height, window->width, - window->first_line, 0); - idlok(window->curses_win, 1); -} -#endif - static void mainwindow_resize(MAIN_WINDOW_REC *window, int xdiff, int ydiff) { GSList *tmp; @@ -77,18 +72,8 @@ static void mainwindow_resize(MAIN_WINDOW_REC *window, int xdiff, int ydiff) window->width += xdiff; window->height = window->last_line-window->first_line+1; -#ifdef USE_CURSES_WINDOWS -#ifdef HAVE_CURSES_WRESIZE - wresize(window->curses_win, window->height, window->width); - mvwin(window->curses_win, window->first_line, 0); -#else - delwin(window->curses_win); - create_curses_window(window); - - textbuffer_view_set_window(WINDOW_GUI(window->active)->view, - window->curses_win); -#endif -#endif + screen_window_move(window->screen_win, 0, window->first_line, + window->width, window->height); for (tmp = windows; tmp != NULL; tmp = tmp->next) { WINDOW_REC *rec = tmp->data; @@ -99,7 +84,7 @@ static void mainwindow_resize(MAIN_WINDOW_REC *window, int xdiff, int ydiff) } textbuffer_view_set_window(WINDOW_GUI(window->active)->view, - window->curses_win); + window->screen_win); signal_emit("mainwindow resized", 1, window); } @@ -110,11 +95,9 @@ void mainwindows_recreate(void) for (tmp = mainwindows; tmp != NULL; tmp = tmp->next) { MAIN_WINDOW_REC *rec = tmp->data; -#ifdef USE_CURSES_WINDOWS - create_curses_window(rec); -#endif + rec->screen_win = mainwindow_create_screen(rec); textbuffer_view_set_window(WINDOW_GUI(rec->active)->view, - rec->curses_win); + rec->screen_win); } } @@ -151,10 +134,8 @@ MAIN_WINDOW_REC *mainwindow_create(void) mainwindow_resize(parent, 0, -space-1); } -#ifdef USE_CURSES_WINDOWS - rec->curses_win = newwin(rec->height, rec->width, rec->first_line, 0); - refresh(); -#endif + rec->screen_win = mainwindow_create_screen(rec); + screen_refresh(NULL); mainwindows = g_slist_append(mainwindows, rec); signal_emit("mainwindow created", 1, rec); @@ -240,9 +221,7 @@ void mainwindow_destroy(MAIN_WINDOW_REC *window) mainwindows = g_slist_remove(mainwindows, window); signal_emit("mainwindow destroyed", 1, window); -#ifdef USE_CURSES_WINDOWS - delwin(window->curses_win); -#endif + screen_window_destroy(window->screen_win); if (!quitting && mainwindows != NULL) { gui_windows_remove_parent(window); @@ -419,10 +398,10 @@ void mainwindows_resize(int width, int height) { int xdiff, ydiff; - xdiff = width-screen_width; - ydiff = height-screen_height; - screen_width = width; - screen_height = height; + xdiff = width-old_screen_width; + ydiff = height-old_screen_height; + old_screen_width = width; + old_screen_height = height; screen_refresh_freeze(); if (ydiff < 0) @@ -431,9 +410,9 @@ void mainwindows_resize(int width, int height) mainwindows_resize_bigger(xdiff, ydiff); else if (xdiff != 0) mainwindows_resize_horiz(xdiff); + screen_refresh_thaw(); irssi_redraw(); - screen_refresh_thaw(); } int mainwindows_reserve_lines(int count, int up) @@ -871,8 +850,8 @@ static void cmd_window_stick(const char *data) void mainwindows_init(void) { - screen_width = COLS; - screen_height = LINES; + old_screen_width = screen_width; + old_screen_height = screen_height; mainwindows = NULL; active_mainwin = NULL; diff --git a/src/fe-text/mainwindows.h b/src/fe-text/mainwindows.h index 491449c6..f58b7d1e 100644 --- a/src/fe-text/mainwindows.h +++ b/src/fe-text/mainwindows.h @@ -10,11 +10,8 @@ typedef struct { WINDOW_REC *active; GSList *sticky_windows; /* list of windows allowed to show only in this mainwindow */ -#ifdef USE_CURSES_WINDOWS - WINDOW *curses_win; -#else -#error disable-curses-windows is currently broken /* FIXME */ -#endif + SCREEN_WINDOW *screen_win; + int first_line, last_line, width, height; int statusbar_lines; void *statusbar; diff --git a/src/fe-text/screen.c b/src/fe-text/screen.c index ea4a9add..87233aad 100644 --- a/src/fe-text/screen.c +++ b/src/fe-text/screen.c @@ -32,12 +32,25 @@ #endif #include <signal.h> +#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +# include <ncurses.h> +#else +# include <curses.h> +#endif + #ifndef COLOR_PAIRS #define COLOR_PAIRS 64 #endif #define MIN_SCREEN_WIDTH 20 +struct _SCREEN_WINDOW { + WINDOW *win; +}; + +SCREEN_WINDOW *screen_root; +int screen_width, screen_height; + static int scrx, scry; static int use_colors; static int freeze_refresh; @@ -66,6 +79,9 @@ static void sig_winch(int p) /* Resize curses terminal */ resizeterm(ws.ws_row, ws.ws_col); + + screen_width = COLS; + screen_height = LINES; #else deinit_screen_int(); init_screen_int(); @@ -141,36 +157,103 @@ static int init_curses(void) static int init_screen_int(void) { + int ret; + + ret = init_curses(); + if (!ret) return 0; + use_colors = settings_get_bool("colors"); scrx = scry = 0; freeze_refresh = 0; - return init_curses(); + screen_root = g_new0(SCREEN_WINDOW, 1); + screen_root->win = stdscr; + + screen_width = COLS; + screen_height = LINES; + return ret; } static void deinit_screen_int(void) { endwin(); + g_free_and_null(screen_root); } /* Initialize screen, detect screen length */ int init_screen(void) { settings_add_bool("lookandfeel", "colors", TRUE); + + signal_add("beep", (SIGNAL_FUNC) beep); signal_add("setup changed", (SIGNAL_FUNC) read_settings); - return init_screen_int(); + return init_screen_int(); } /* Deinitialize screen */ void deinit_screen(void) { - deinit_screen_int(); + deinit_screen_int(); + + signal_remove("beep", (SIGNAL_FUNC) beep); signal_remove("setup changed", (SIGNAL_FUNC) read_settings); } -void set_color(WINDOW *window, int col) +int screen_has_colors(void) +{ + return has_colors(); +} + +void screen_clear(void) +{ + clear(); +} + +SCREEN_WINDOW *screen_window_create(int x, int y, int width, int height) +{ + SCREEN_WINDOW *scrwin; + + scrwin = g_new0(SCREEN_WINDOW, 1); + scrwin->win = newwin(height, width, y, x); + idlok(scrwin->win, 1); + + return scrwin; +} + +void screen_window_destroy(SCREEN_WINDOW *window) +{ + delwin(window->win); + g_free(window); +} + +void screen_window_clear(SCREEN_WINDOW *window) +{ + werase(window->win); +} + +void screen_window_move(SCREEN_WINDOW *window, int x, int y, + int width, int height) +{ +#ifdef HAVE_CURSES_WRESIZE + wresize(window->win, height, width); + mvwin(window->win, y, x); +#else + delwin(window->win); + window->win = newwin(height, width, y, x); + idlok(window->win, 1); +#endif +} + +void screen_window_scroll(SCREEN_WINDOW *window, int count) +{ + scrollok(window->win, TRUE); + wscrl(window->win, count); + scrollok(window->win, FALSE); +} + +void screen_set_color(SCREEN_WINDOW *window, int col) { int attr; @@ -189,10 +272,10 @@ void set_color(WINDOW *window, int col) if (col & ATTR_UNDERLINE) attr |= A_UNDERLINE; if (col & ATTR_REVERSE) attr |= A_REVERSE; - wattrset(window, attr); + wattrset(window->win, attr); } -void set_bg(WINDOW *window, int col) +void screen_set_bg(SCREEN_WINDOW *window, int col) { int attr; @@ -207,10 +290,30 @@ void set_bg(WINDOW *window, int col) if (col & 0x08) attr |= A_BOLD; if (col & 0x80) attr |= A_BLINK; - wbkgdset(window, ' ' | attr); + wbkgdset(window->win, ' ' | attr); +} + +void screen_move(SCREEN_WINDOW *window, int x, int y) +{ + wmove(window->win, y, x); +} + +void screen_addch(SCREEN_WINDOW *window, int chr) +{ + waddch(window->win, chr); +} + +void screen_addstr(SCREEN_WINDOW *window, char *str) +{ + waddstr(window->win, str); } -void move_cursor(int y, int x) +void screen_clrtoeol(SCREEN_WINDOW *window) +{ + wclrtoeol(window->win); +} + +void screen_move_cursor(int x, int y) { scry = y; scrx = x; @@ -229,13 +332,30 @@ void screen_refresh_thaw(void) } } -void screen_refresh(WINDOW *window) +void screen_refresh(SCREEN_WINDOW *window) { if (window != NULL) - wnoutrefresh(window); + wnoutrefresh(window->win); + if (freeze_refresh == 0) { move(scry, scrx); wnoutrefresh(stdscr); doupdate(); } } + +int screen_getch(void) +{ + int key; + + key = getch(); + if (key == ERR) + return -1; + +#ifdef KEY_RESIZE + if (key == KEY_RESIZE) + return -1; +#endif + + return key; +} diff --git a/src/fe-text/screen.h b/src/fe-text/screen.h index 7fbada39..b00c7330 100644 --- a/src/fe-text/screen.h +++ b/src/fe-text/screen.h @@ -1,16 +1,7 @@ #ifndef __SCREEN_H #define __SCREEN_H -#if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) -# include <ncurses.h> -#else -# include <curses.h> -#endif - -/* Some curseses include term.h, which #defines some things breaking irssi */ -#undef lines -#undef key_backspace -#undef tab +typedef struct _SCREEN_WINDOW SCREEN_WINDOW; #define ATTR_UNDERLINE 0x100 #define ATTR_COLOR8 0x200 @@ -25,22 +16,43 @@ */ #ifdef WANT_BIG5 /* XXX I didn't check the encoding range of big5+. This is standard big5. */ -#define is_big5_los(lo) (((char)0x40<=lo)&&(lo<=(char)0x7E)) /* standard */ -#define is_big5_lox(lo) (((char)0x80<=lo)&&(lo<=(char)0xFE)) /* extended */ -#define is_big5_hi(hi) (((char)0x81<=hi)&&(hi<=(char)0xFE)) -#define is_big5(hi,lo) is_big5_hi(hi) && (is_big5_los(lo) || is_big5_lox(lo)) +# define is_big5_los(lo) (((char)0x40<=lo)&&(lo<=(char)0x7E)) /* standard */ +# define is_big5_lox(lo) (((char)0x80<=lo)&&(lo<=(char)0xFE)) /* extended */ +# define is_big5_hi(hi) (((char)0x81<=hi)&&(hi<=(char)0xFE)) +# define is_big5(hi,lo) is_big5_hi(hi) && (is_big5_los(lo) || is_big5_lox(lo)) #endif +extern SCREEN_WINDOW *screen_root; +extern int screen_width, screen_height; + int init_screen(void); /* Initialize screen, detect screen length */ void deinit_screen(void); /* Deinitialize screen */ -void set_color(WINDOW *window, int col); -void set_bg(WINDOW *window, int col); +int screen_has_colors(void); +void screen_clear(void); + +SCREEN_WINDOW *screen_window_create(int x, int y, int width, int height); +void screen_window_destroy(SCREEN_WINDOW *window); -void move_cursor(int y, int x); +void screen_window_clear(SCREEN_WINDOW *window); +void screen_window_move(SCREEN_WINDOW *window, int x, int y, + int width, int height); +void screen_window_scroll(SCREEN_WINDOW *window, int count); + +void screen_set_color(SCREEN_WINDOW *window, int col); +void screen_set_bg(SCREEN_WINDOW *window, int col); + +void screen_move(SCREEN_WINDOW *window, int x, int y); +void screen_addch(SCREEN_WINDOW *window, int chr); +void screen_addstr(SCREEN_WINDOW *window, char *str); +void screen_clrtoeol(SCREEN_WINDOW *window); + +void screen_move_cursor(int x, int y); void screen_refresh_freeze(void); void screen_refresh_thaw(void); -void screen_refresh(WINDOW *window); +void screen_refresh(SCREEN_WINDOW *window); + +int screen_getch(void); #endif diff --git a/src/fe-text/statusbar-items.c b/src/fe-text/statusbar-items.c index 137e7417..c3b69725 100644 --- a/src/fe-text/statusbar-items.c +++ b/src/fe-text/statusbar-items.c @@ -632,7 +632,7 @@ static void sig_main_statusbar_changed(WINDOW_REC *window) static void read_settings(void) { - use_colors = settings_get_bool("colors") && has_colors(); + use_colors = settings_get_bool("colors") && screen_has_colors(); if (settings_get_bool("topicbar")) topicbar_create(); else diff --git a/src/fe-text/statusbar.c b/src/fe-text/statusbar.c index 8e99c4fe..b3b7cd60 100644 --- a/src/fe-text/statusbar.c +++ b/src/fe-text/statusbar.c @@ -141,7 +141,7 @@ static void statusbar_redraw_line(STATUSBAR_REC *bar) if (bar->window != NULL) active_win = bar->window->active; - statusbar_get_sizes(bar, COLS-2); + statusbar_get_sizes(bar, screen_width-2); xpos = 1; for (tmp = bar->items; tmp != NULL; tmp = tmp->next) { @@ -154,7 +154,7 @@ static void statusbar_redraw_line(STATUSBAR_REC *bar) } } - rxpos = COLS-1; + rxpos = screen_width-1; for (tmp = bar->items; tmp != NULL; tmp = tmp->next) { SBAR_ITEM_REC *rec = tmp->data; @@ -196,9 +196,10 @@ void statusbar_redraw(STATUSBAR_REC *bar) return; } - set_bg(stdscr, backs[bar->color] << 4); - move(bar->ypos, 0); clrtoeol(); - set_bg(stdscr, 0); + screen_set_bg(screen_root, backs[bar->color] << 4); + screen_move(screen_root, 0, bar->ypos); + screen_clrtoeol(screen_root); + screen_set_bg(screen_root, 0); statusbar_redraw_line(bar); @@ -247,7 +248,8 @@ STATUSBAR_REC *statusbar_create(int pos, int ypos) rec->line = pos == STATUSBAR_POS_MIDDLE ? ypos : mainwindows_reserve_lines(1, pos == STATUSBAR_POS_UP); rec->ypos = pos == STATUSBAR_POS_MIDDLE ? ypos : - pos == STATUSBAR_POS_UP ? rec->line : LINES-1-rec->line; + pos == STATUSBAR_POS_UP ? rec->line : + screen_height-1-rec->line; /* get background color from sb_background abstract */ str = theme_format_expand(current_theme, "{sb_background}"); @@ -268,9 +270,10 @@ STATUSBAR_REC *statusbar_create(int pos, int ypos) rec->line -= sbar_lowest; } - set_bg(stdscr, backs[rec->color] << 4); - move(rec->ypos, 0); clrtoeol(); - set_bg(stdscr, 0); + screen_set_bg(screen_root, backs[rec->color] << 4); + screen_move(screen_root, 0, rec->ypos); + screen_clrtoeol(screen_root); + screen_set_bg(screen_root, 0); return rec; } diff --git a/src/fe-text/textbuffer-view.c b/src/fe-text/textbuffer-view.c index 8ce08304..dc7030ed 100644 --- a/src/fe-text/textbuffer-view.c +++ b/src/fe-text/textbuffer-view.c @@ -254,12 +254,12 @@ static int view_line_draw(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line, color = cache->lines[subline-1].color; } - set_color(view->window, 0); - wmove(view->window, ypos, 0); - wclrtoeol(view->window); + screen_set_color(view->window, 0); + screen_move(view->window, 0, ypos); + screen_clrtoeol(view->window); - wmove(view->window, ypos, xpos); - set_color(view->window, color); + screen_move(view->window, xpos, ypos); + screen_set_color(view->window, color); /* get the beginning of the next subline */ text_newline = subline == cache->count-1 ? NULL : @@ -298,18 +298,18 @@ static int view_line_draw(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line, color |= 0x80; break; } - set_color(view->window, color); + screen_set_color(view->window, color); text++; continue; } if ((*text & 127) >= 32) - waddch(view->window, *text); + screen_addch(view->window, *text); else { /* low-ascii */ - set_color(view->window, ATTR_REVERSE); - waddch(view->window, (*text & 127)+'A'-1); - set_color(view->window, color); + screen_set_color(view->window, ATTR_REVERSE); + screen_addch(view->window, (*text & 127)+'A'-1); + screen_set_color(view->window, color); } text++; } @@ -475,8 +475,8 @@ static void view_draw(TEXT_BUFFER_VIEW_REC *view, GList *line, /* clear the rest of the view */ while (lines > 0) { - wmove(view->window, ypos, 0); - wclrtoeol(view->window); + screen_move(view->window, ypos, 0); + screen_clrtoeol(view->window); ypos++; lines--; } } @@ -562,9 +562,7 @@ static int view_scroll(TEXT_BUFFER_VIEW_REC *view, GList **lines, int *subline, whole view */ textbuffer_view_redraw(view); } else { - scrollok(view->window, TRUE); - wscrl(view->window, realcount); - scrollok(view->window, FALSE); + screen_window_scroll(view->window, realcount); if (draw_nonclean) { if (realcount < 0) @@ -1054,7 +1052,8 @@ LINE_REC *textbuffer_view_get_bookmark(TEXT_BUFFER_VIEW_REC *view, /* Specify window where the changes in view should be drawn, NULL disables it. */ -void textbuffer_view_set_window(TEXT_BUFFER_VIEW_REC *view, WINDOW *window) +void textbuffer_view_set_window(TEXT_BUFFER_VIEW_REC *view, + SCREEN_WINDOW *window) { g_return_if_fail(view != NULL); @@ -1071,7 +1070,7 @@ void textbuffer_view_redraw(TEXT_BUFFER_VIEW_REC *view) g_return_if_fail(view != NULL); if (view->window != NULL) { - werase(view->window); + screen_window_clear(view->window); view_draw_top(view, view->height); screen_refresh(view->window); } diff --git a/src/fe-text/textbuffer-view.h b/src/fe-text/textbuffer-view.h index 21ed28cf..54e05686 100644 --- a/src/fe-text/textbuffer-view.h +++ b/src/fe-text/textbuffer-view.h @@ -41,7 +41,7 @@ typedef struct { TEXT_BUFFER_REC *buffer; GSList *siblings; /* other views that use the same buffer */ - WINDOW *window; + SCREEN_WINDOW *window; int width, height; int default_indent; @@ -121,7 +121,8 @@ LINE_REC *textbuffer_view_get_bookmark(TEXT_BUFFER_VIEW_REC *view, /* Specify window where the changes in view should be drawn, NULL disables it. */ -void textbuffer_view_set_window(TEXT_BUFFER_VIEW_REC *view, WINDOW *window); +void textbuffer_view_set_window(TEXT_BUFFER_VIEW_REC *view, + SCREEN_WINDOW *window); /* Redraw the view */ void textbuffer_view_redraw(TEXT_BUFFER_VIEW_REC *view); |