diff console/libgnt/wms/s.c @ 14335:b1b76fb9c739

[gaim-migrate @ 17031] Add a sample window-manager. This one removes the border and shadows from the buddylist, shows the conversation windows at the right-end of the screen, and puts all the rest of the dialogs in the middle of the screen. I was not planning on committing this just yet, but I accidentally included the change in configure.ac, and I don't want to get yelled at ;) committer: Tailor Script <tailor@pidgin.im>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Fri, 25 Aug 2006 18:21:22 +0000
parents
children 0387a167f342
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/console/libgnt/wms/s.c	Fri Aug 25 18:21:22 2006 +0000
@@ -0,0 +1,56 @@
+#include "gntbox.h"
+#include "gntwm.h"
+
+#include <string.h>
+
+static PANEL *
+s_new_window(GntWidget *win)
+{
+	int x, y, w, h;
+	int maxx, maxy;
+	const char *name;
+
+	getmaxyx(stdscr, maxy, maxx);
+
+	gnt_widget_get_position(win, &x, &y);
+	gnt_widget_get_size(win, &w, &h);
+
+	name = gnt_widget_get_name(win);
+
+	if (name && strcmp(name, "buddylist") == 0) {
+		/* The buddylist doesn't have no border nor nothing! */
+		x = 0;
+		y = 0;
+		h = maxy - 1;
+
+		gnt_box_set_toplevel(GNT_BOX(win), FALSE);
+		GNT_WIDGET_SET_FLAGS(win, GNT_WIDGET_CAN_TAKE_FOCUS);
+		gnt_box_readjust(GNT_BOX(win));
+
+		gnt_widget_set_position(win, x, y);
+		mvwin(win->window, y, x);
+
+		gnt_widget_set_size(win, w, h);
+	} else if (name && strcmp(name, "conversation-window") == 0) {
+		/* Put the conversation windows to the far-right */
+		x = maxx - w;
+		y = 0;
+		gnt_widget_set_position(win, x, y);
+		mvwin(win->window, y, x);
+	} else if (!GNT_WIDGET_IS_FLAG_SET(win, GNT_WIDGET_TRANSIENT)) {
+		/* In the middle of the screen */
+		x = (maxx - w) / 2;
+		y = (maxy - h) / 2;
+
+		gnt_widget_set_position(win, x, y);
+		mvwin(win->window, y, x);
+	}
+
+	return new_panel(win->window);
+}
+
+void gntwm_init(GntWM *wm)
+{
+	wm->new_window = s_new_window;
+}
+