Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Dec 2011 09:01:52 +0000 (UTC)
From:      Max Khon <fjoe@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r228175 - head/usr.sbin/sade
Message-ID:  <201112010901.pB191qCW036572@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: fjoe
Date: Thu Dec  1 09:01:51 2011
New Revision: 228175
URL: http://svn.freebsd.org/changeset/base/228175

Log:
  Fix dialog autosizing: dlg_count_columns() does not handle NL characters.

Modified:
  head/usr.sbin/sade/misc.c

Modified: head/usr.sbin/sade/misc.c
==============================================================================
--- head/usr.sbin/sade/misc.c	Thu Dec  1 07:41:30 2011	(r228174)
+++ head/usr.sbin/sade/misc.c	Thu Dec  1 09:01:51 2011	(r228175)
@@ -233,6 +233,23 @@ xdialog_count_rows(const char *p)
 	return rows ? rows : 1;
 }
 
+static int
+xdialog_count_columns(const char *p)
+{
+	int len;
+	int max_len = 0;
+	const char *q;
+
+	for (; (q = strchr(p, '\n')) != NULL; p = q + 1) {
+		len = q - p;
+		max_len = MAX(max_len, len);
+	}
+
+	len = strlen(p);
+	max_len = MAX(max_len, len);
+	return max_len;
+}
+
 int
 xdialog_menu(const char *title, const char *cprompt, int height, int width,
 	     int menu_height, int item_no, dialogMenuItem *ditems)
@@ -270,7 +287,7 @@ xdialog_menu(const char *title, const ch
 				tag_x = MAX(tag_x, l + k + 2);
 			}
 		}
-		width = MAX(dlg_count_columns(cprompt), title != NULL ? dlg_count_columns(title) : 0);
+		width = MAX(xdialog_count_columns(cprompt), title != NULL ? xdialog_count_columns(title) : 0);
 		width = MAX(width, tag_x + 4) + 4;
 	}
 	width = MAX(width, 24);
@@ -345,7 +362,7 @@ xdialog_radiolist(const char *title, con
 				check_x = MAX(check_x, l + k + 6);
 			}
 		}
-		width = MAX(dlg_count_columns(cprompt), title != NULL ? dlg_count_columns(title) : 0);
+		width = MAX(xdialog_count_columns(cprompt), title != NULL ? xdialog_count_columns(title) : 0);
 		width = MAX(width, check_x + 4) + 4;
 	}
 	width = MAX(width, 24);
@@ -397,8 +414,8 @@ xdialog_msgbox(const char *title, const 
 
 	/* calculate width */
 	if (width < 0) {
-		width = title != NULL ? dlg_count_columns(title) : 0;
-		width = MAX(width, dlg_count_columns(cprompt)) + 4;
+		width = title != NULL ? xdialog_count_columns(title) : 0;
+		width = MAX(width, xdialog_count_columns(cprompt)) + 4;
 	}
 	if (pauseopt)
 		width = MAX(width, 10);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201112010901.pB191qCW036572>