From 5d5b9cbc28772ba80b9e12957d80ab1308af71b7 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 14 Apr 2001 22:40:45 +0000 Subject: [PATCH] bugfixes for multiple windows support :) git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1443 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- src/fe-text/textbuffer-view.c | 42 ++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/fe-text/textbuffer-view.c b/src/fe-text/textbuffer-view.c index c1d83ac6..9c626313 100644 --- a/src/fe-text/textbuffer-view.c +++ b/src/fe-text/textbuffer-view.c @@ -464,10 +464,10 @@ static void view_draw(TEXT_BUFFER_VIEW_REC *view, GList *line, } /* clear the rest of the view */ - while (ypos < lines) { + while (lines > 0) { wmove(view->window, ypos, 0); wclrtoeol(view->window); - ypos++; + ypos++; lines--; } } @@ -543,7 +543,7 @@ static int view_scroll(TEXT_BUFFER_VIEW_REC *view, GList **lines, int *subline, } } - if (scroll_visible && realcount != 0) { + if (scroll_visible && realcount != 0 && view->window != NULL) { if (realcount <= -view->height || realcount >= view->height) { /* scrolled more than screenful, redraw the whole view */ @@ -650,7 +650,8 @@ void textbuffer_view_scroll(TEXT_BUFFER_VIEW_REC *view, int lines) view->ypos += lines < 0 ? count : -count; view->bottom = view_is_bottom(view); - screen_refresh(view->window); + if (view->window != NULL) + screen_refresh(view->window); } /* Scroll to specified line */ @@ -757,16 +758,21 @@ static void view_insert_line(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line) view->ypos -= linecount; } - ypos = view->ypos+1 - view->cache->last_linecount; - if (ypos >= 0) - subline = 0; - else { - subline = -ypos; - ypos = 0; + if (view->window != NULL) { + ypos = view->ypos+1 - view->cache->last_linecount; + if (ypos >= 0) + subline = 0; + else { + subline = -ypos; + ypos = 0; + } + view_line_draw(view, line, subline, ypos, + view->height - ypos); } - view_line_draw(view, line, subline, ypos, view->height-ypos); } - screen_refresh(view->window); + + if (view->window != NULL) + screen_refresh(view->window); } /* Update some line in the buffer which has been modified using @@ -913,7 +919,8 @@ static void view_remove_line(TEXT_BUFFER_VIEW_REC *view, LINE_REC *line, } view->bottom = view_is_bottom(view); - screen_refresh(view->window); + if (view->window != NULL) + screen_refresh(view->window); } /* Remove one line from buffer. */ @@ -1011,11 +1018,10 @@ void textbuffer_view_set_window(TEXT_BUFFER_VIEW_REC *view, WINDOW *window) /* Redraw a view to window */ void textbuffer_view_redraw(TEXT_BUFFER_VIEW_REC *view) { - if (view->window == NULL) - return; - - view_draw_top(view, view->height); - screen_refresh(view->window); + if (view->window != NULL) { + view_draw_top(view, view->height); + screen_refresh(view->window); + } } static int line_cache_check_remove(void *key, LINE_CACHE_REC *cache,