changeset 8524:253eb32e344c

[gaim-migrate @ 9263] add some sanity to overly large request dialogs committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Tue, 30 Mar 2004 04:49:53 +0000
parents 013d256e8ded
children d8dfab355d2c
files src/gtkrequest.c
diffstat 1 files changed, 40 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/gtkrequest.c	Tue Mar 30 03:11:01 2004 +0000
+++ b/src/gtkrequest.c	Tue Mar 30 04:49:53 2004 +0000
@@ -966,6 +966,7 @@
 	GaimGtkRequestData *data;
 	GtkWidget *win;
 	GtkWidget *vbox;
+	GtkWidget *vbox2;
 	GtkWidget *hbox;
 	GtkWidget *bbox;
 	GtkWidget *frame;
@@ -973,11 +974,13 @@
 	GtkWidget *table;
 	GtkWidget *button;
 	GtkWidget *img;
+	GtkWidget *sw;
 	GtkSizeGroup *sg;
 	GList *gl, *fl;
 	GaimRequestFieldGroup *group;
 	GaimRequestField *field;
 	char *label_text;
+	int total_fields = 0;
 
 	data            = g_new0(GaimGtkRequestData, 1);
 	data->type      = GAIM_REQUEST_FIELDS;
@@ -1023,17 +1026,9 @@
 
 	sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
-	if (primary != NULL || secondary != NULL)
-	{
+	if(primary) {
 		label_text = g_strdup_printf(
-			(primary
-			 ? "<span weight=\"bold\" size=\"larger\">"
-			   "%s</span>%s%s"
-			 : "%s%s%s"),
-			(primary ? primary : ""),
-			((primary && secondary) ? "\n\n" : ""),
-			(secondary ? secondary : ""));
-
+				"<span weight=\"bold\" size=\"larger\">%s</span>", primary);
 		label = gtk_label_new(NULL);
 
 		gtk_label_set_markup(GTK_LABEL(label), label_text);
@@ -1041,8 +1036,38 @@
 		gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
 		gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
 		gtk_widget_show(label);
+		g_free(label_text);
+	}
 
-		g_free(label_text);
+	for (gl = gaim_request_fields_get_groups(fields); gl != NULL;
+			gl = gl->next)
+		total_fields += g_list_length(gaim_request_field_group_get_fields(gl->data));
+
+	if(total_fields > 9) {
+		sw = gtk_scrolled_window_new(NULL, NULL);
+		gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+				GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+		gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
+				GTK_SHADOW_NONE);
+		gtk_widget_set_size_request(sw, -1, 200);
+		gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
+		gtk_widget_show(sw);
+
+		vbox2 = gtk_vbox_new(FALSE, 12);
+		gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), vbox2);
+		gtk_widget_show(vbox2);
+	} else {
+		vbox2 = vbox;
+	}
+
+	if (secondary) {
+		label = gtk_label_new(NULL);
+
+		gtk_label_set_markup(GTK_LABEL(label), secondary);
+		gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+		gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
+		gtk_box_pack_start(GTK_BOX(vbox2), label, TRUE, TRUE, 0);
+		gtk_widget_show(label);
 	}
 
 	for (gl = gaim_request_fields_get_groups(fields);
@@ -1061,20 +1086,21 @@
 
 		if (gaim_request_field_group_get_title(group) != NULL)
 		{
-			frame = gaim_gtk_make_frame(vbox,
+			frame = gaim_gtk_make_frame(vbox2,
 				gaim_request_field_group_get_title(group));
 		}
 		else
-			frame = vbox;
+			frame = vbox2;
 
 		field_count = g_list_length(field_list);
-
+/*
 		if (field_count > 9)
 		{
 			rows = field_count / 2;
 			cols++;
 		}
 		else
+		*/
 			rows = field_count;
 
 		col_num = 0;