diff console/libgnt/gntbox.c @ 13878:0d0ab1e39d0a

[gaim-migrate @ 16355] Change the behaviour of the widgets about how they update themselves. This makes things a little better, and hopefully easier to build more stuff on top of this. committer: Tailor Script <tailor@pidgin.im>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Tue, 27 Jun 2006 02:33:55 +0000
parents 5642f4658b59
children 5c750626eaa5
line wrap: on
line diff
--- a/console/libgnt/gntbox.c	Mon Jun 26 19:54:53 2006 +0000
+++ b/console/libgnt/gntbox.c	Tue Jun 27 02:33:55 2006 +0000
@@ -12,14 +12,10 @@
 gnt_box_draw(GntWidget *widget)
 {
 	GntBox *box = GNT_BOX(widget);
-	GList *iter;
 
-	for (iter = box->list; iter; iter = iter->next)
-	{
-		GntWidget *w = GNT_WIDGET(iter->data);
-		gnt_widget_draw(w);
-		overwrite(w->window, widget->window);
-	}
+	g_list_foreach(box->list, (GFunc)gnt_widget_draw, NULL);
+
+	gnt_box_sync_children(box);
 
 	if (box->title)
 	{
@@ -40,9 +36,6 @@
 		mvwprintw(widget->window, 0, pos, title);
 		g_free(title);
 	}
-	wrefresh(widget->window);
-
-	gnt_screen_occupy(widget);
 	
 	DEBUG;
 }
@@ -376,3 +369,16 @@
 		GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_BORDER | GNT_WIDGET_NO_SHADOW);
 }
 
+void gnt_box_sync_children(GntBox *box)
+{
+	GList *iter;
+	GntWidget *widget = GNT_WIDGET(box);
+
+	for (iter = box->list; iter; iter = iter->next)
+	{
+		GntWidget *w = GNT_WIDGET(iter->data);
+		copywin(w->window, widget->window, 0, 0, w->priv.y - widget->priv.y, w->priv.x - widget->priv.x,
+					w->priv.height, w->priv.width, FALSE);
+	}
+}
+