changeset 15792:9de8f4e810cb

This takes way too much memory, especially with ncursesw. I hadn't noticed, because apparently I was using ncurses.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Thu, 15 Mar 2007 01:52:21 +0000
parents 465a58f2c711
children 15ed2cc560ce
files console/libgnt/gntwidget.c
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/console/libgnt/gntwidget.c	Wed Mar 14 07:56:48 2007 +0000
+++ b/console/libgnt/gntwidget.c	Thu Mar 15 01:52:21 2007 +0000
@@ -357,7 +357,7 @@
 			g_signal_emit(widget, signals[SIG_SIZE_CHANGED], 0, oldw, oldh);
 		}
 #else
-		widget->window = newpad(150, 350);  /* XXX: */
+		widget->window = newpad(widget->priv.height + 20, widget->priv.width + 20);  /* XXX: */
 #endif
 		init_widget(widget);
 	}
@@ -520,6 +520,10 @@
 
 		widget->priv.width = width;
 		widget->priv.height = height;
+		if (width >= getmaxx(widget->window) || height >= getmaxy(widget->window)) {
+			delwin(widget->window);
+			widget->window = newpad(height + 20, width + 20);
+		}
 
 		g_signal_emit(widget, signals[SIG_SIZE_CHANGED], 0, oldw, oldh);
 
@@ -581,7 +585,8 @@
 
 	if (!g_object_get_data(G_OBJECT(widget), "gnt:queue_update"))
 		return FALSE;
-	gnt_screen_update(widget);
+	if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_MAPPED))
+		gnt_screen_update(widget);
 	g_object_set_data(G_OBJECT(widget), "gnt:queue_update", NULL);
 	return FALSE;
 }