# HG changeset patch # User Sadrul Habib Chowdhury # Date 1173923541 0 # Node ID 9de8f4e810cb16c69dc6aaf26d0270064fc36249 # Parent 465a58f2c711ab7068f0908dca86c303577f1fc8 This takes way too much memory, especially with ncursesw. I hadn't noticed, because apparently I was using ncurses. diff -r 465a58f2c711 -r 9de8f4e810cb console/libgnt/gntwidget.c --- 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; }