diff console/libgnt/gntwidget.c @ 14010:7573bd40a190

[gaim-migrate @ 16602] Allow plugins to be loaded and unloaded. Remember the window positions and sizes. All turning on/off shadow from ~/.gntrc (off by default). committer: Tailor Script <tailor@pidgin.im>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Mon, 31 Jul 2006 23:19:12 +0000
parents c9509bd42d7a
children 735c4e927eb8
line wrap: on
line diff
--- a/console/libgnt/gntwidget.c	Sat Jul 29 20:22:39 2006 +0000
+++ b/console/libgnt/gntwidget.c	Mon Jul 31 23:19:12 2006 +0000
@@ -1,6 +1,7 @@
 /* Stuff brutally ripped from Gflib */
 
 #include "gntwidget.h"
+#include "gntstyle.h"
 #include "gntmarshal.h"
 #include "gnt.h"
 
@@ -290,7 +291,7 @@
 	{
 		gboolean shadow = TRUE;
 
-		if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_SHADOW))
+		if (!gnt_widget_has_shadow(widget))
 			shadow = FALSE;
 
 		widget->window = newwin(widget->priv.height + shadow, widget->priv.width + shadow,
@@ -325,7 +326,7 @@
 	wbkgdset(widget->window, '\0' | COLOR_PAIR(GNT_COLOR_NORMAL));
 #if 1
 	/* XXX: I have no clue why, but this seems to be necessary. */
-	if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_SHADOW))
+	if (gnt_widget_has_shadow(widget))
 		mvwvline(widget->window, 1, widget->priv.width, ' ', widget->priv.height);
 #endif
 	gnt_screen_release(widget);
@@ -361,7 +362,7 @@
 gnt_widget_get_size(GntWidget *wid, int *width, int *height)
 {
 	gboolean shadow = TRUE;
-	if (GNT_WIDGET_IS_FLAG_SET(wid, GNT_WIDGET_NO_SHADOW))
+	if (!gnt_widget_has_shadow(wid))
 		shadow = FALSE;
 
 	if (width)
@@ -376,7 +377,7 @@
 {
 	gboolean shadow = TRUE;
 
-	if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_SHADOW))
+	if (!gnt_widget_has_shadow(widget))
 		shadow = FALSE;
 
 	wbkgd(widget->window, COLOR_PAIR(GNT_COLOR_NORMAL));
@@ -384,9 +385,16 @@
 
 	if (!(GNT_WIDGET_FLAGS(widget) & GNT_WIDGET_NO_BORDER))
 	{
-		WINDOW *tmp = derwin(widget->window, widget->priv.height, widget->priv.width, 0, 0);
-		box(tmp, 0, 0);
-		delwin(tmp);
+		/* - This is ugly. */
+		/* - What's your point? */
+		mvwvline(widget->window, 0, 0, ACS_VLINE, widget->priv.height);
+		mvwvline(widget->window, 0, widget->priv.width - 1, ACS_VLINE, widget->priv.height);
+		mvwhline(widget->window, widget->priv.height - 1, 0, ACS_HLINE, widget->priv.width);
+		mvwhline(widget->window, 0, 0, ACS_HLINE, widget->priv.width);
+		mvwaddch(widget->window, 0, 0, ACS_ULCORNER);
+		mvwaddch(widget->window, 0, widget->priv.width - 1, ACS_URCORNER);
+		mvwaddch(widget->window, widget->priv.height - 1, 0, ACS_LLCORNER);
+		mvwaddch(widget->window, widget->priv.height - 1, widget->priv.width - 1, ACS_LRCORNER);
 	}
 
 	if (shadow)
@@ -402,7 +410,7 @@
 {
 	gboolean ret = TRUE;
 
-	if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_SHADOW))
+	if (gnt_widget_has_shadow(widget))
 	{
 		width--;
 		height--;
@@ -418,7 +426,7 @@
 		gboolean shadow = TRUE;
 		int oldw, oldh;
 
-		if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_SHADOW))
+		if (!gnt_widget_has_shadow(widget))
 			shadow = FALSE;
 
 		oldw = widget->priv.width;
@@ -518,3 +526,9 @@
 		GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_INVISIBLE);
 }
 
+gboolean gnt_widget_has_shadow(GntWidget *widget)
+{
+	return (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_SHADOW) &&
+			gnt_style_get_bool(GNT_STYLE_SHADOW, FALSE));
+}
+