Limit = alignment to 1/3 of screen in option list
* Add scr_gettextwidth()
* Use it to limit alignment of equal sign in option list
to one third of available message width
--- a/mcabber/mcabber/commands.c Sat Mar 13 16:19:46 2010 +0200
+++ b/mcabber/mcabber/commands.c Sat Mar 13 18:12:47 2010 +0200
@@ -2103,14 +2103,20 @@
settings_foreach(SETTINGS_TYPE_OPTION, list_option_cb, &list);
if (list) {
gsize max = 0;
+ gsize maxmax = scr_gettextwidth() / 3;
GSList *lel;
gchar *format;
// Find out maximum key length
for (lel = list; lel; lel = lel->next) {
const gchar *key = lel->data;
gsize len = strlen(key);
- if (len > max)
+ if (len > max) {
max = len;
+ if (max > maxmax) {
+ max = maxmax;
+ break;
+ }
+ }
}
// Print out list of options
format = g_strdup_printf("%%-%us = [%%s]", max);
--- a/mcabber/mcabber/screen.c Sat Mar 13 16:19:46 2010 +0200
+++ b/mcabber/mcabber/screen.c Sat Mar 13 18:12:47 2010 +0200
@@ -846,6 +846,11 @@
return timepreflengths[(n < 3 ? n : 0)];
}
+guint scr_gettextwidth(void)
+{
+ return maxX - Roster_Width - scr_getprefixwidth();
+}
+
// scr_print_logwindow(string)
// Display the string in the log window.
// Note: The string must be in the user's locale!
--- a/mcabber/mcabber/screen.h Sat Mar 13 16:19:46 2010 +0200
+++ b/mcabber/mcabber/screen.h Sat Mar 13 18:12:47 2010 +0200
@@ -118,6 +118,7 @@
const char *scr_get_multimode_subj(void);
guint scr_getprefixwidth(void);
+guint scr_gettextwidth(void);
void scr_line_prefix(hbb_line *line, char *prefix, guint preflen);
void scr_Beep(void);