From 42f7ded762267cf4a94e1aef2368b21864969b2d Mon Sep 17 00:00:00 2001 From: sabetts Date: Sun, 19 Aug 2001 01:39:00 +0000 Subject: help screen fixup --- ChangeLog | 3 +++ src/actions.c | 76 +++++++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 61 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6d56aaf..0b1b1c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2001-08-18 Shawn + * src/actions.c (cmd_bind): Gobble whitespace between keystroke and command. + (cmd_help): keystrokes and commands no longer overlap. + * src/events.c (configure_request): grant Iconized and Withdrawn windows any geometry they like. diff --git a/src/actions.c b/src/actions.c index 043efac..89bb18f 100644 --- a/src/actions.c +++ b/src/actions.c @@ -306,6 +306,12 @@ cmd_bind (int interactive, void *data) sscanf (data, "%s", keydesc); cmd = data + strlen (keydesc); + /* Gobble remaining whitespace before command starts */ + while (*cmd == ' ') + { + cmd++; + } + if (!keydesc) message (" bind: at least one argument required "); else @@ -1062,10 +1068,11 @@ cmd_help (int interactive, void *data) XEvent ev; Window fwin; /* Window currently in focus */ int revert; - int i; + int i, old_i; int x = 10; int y = 0; int max_width = 0; + int drawing_keys = 1; /* 1 if we are drawing keys 0 if we are drawing commands */ char *keysym_name; XMapRaised (dpy, s->help_window); @@ -1092,33 +1099,66 @@ cmd_help (int interactive, void *data) y += FONT_HEIGHT (s->font) * 2; - for (i=0; ihelp_window, s->normal_gc, - x, y + s->font->max_bounds.ascent, - keysym_name, strlen (keysym_name)); + XDrawString (dpy, s->help_window, s->normal_gc, + x, y + s->font->max_bounds.ascent, + keysym_name, strlen (keysym_name)); - if (XTextWidth (s->font, key_actions[i].data, strlen (key_actions[i].data)) - + XTextWidth (s->font, keysym_name, strlen (keysym_name)) > max_width) - { - max_width = XTextWidth (s->font, key_actions[i].data, strlen (key_actions[i].data)) - + XTextWidth (s->font, keysym_name, strlen (keysym_name)); - } + if (XTextWidth (s->font, keysym_name, strlen (keysym_name)) > max_width) + { + max_width = XTextWidth (s->font, keysym_name, strlen (keysym_name)); + } - XDrawString (dpy, s->help_window, s->normal_gc, - x + 90, y + s->font->max_bounds.ascent, - key_actions[i].data, strlen (key_actions[i].data)); + free (keysym_name); + } + else + { + XDrawString (dpy, s->help_window, s->normal_gc, + x, y + s->font->max_bounds.ascent, + key_actions[i].data, strlen (key_actions[i].data)); - free (keysym_name); + if (XTextWidth (s->font, key_actions[i].data, strlen (key_actions[i].data)) > max_width) + { + max_width = XTextWidth (s->font, key_actions[i].data, strlen (key_actions[i].data)); + } + } y += FONT_HEIGHT (s->font); if (y > s->root_attr.height) { - x += max_width + 10 + 90; - y = FONT_HEIGHT (s->font) * 4; + if (drawing_keys) + { + x += max_width + 10; + drawing_keys = 0; + i = old_i; + } + else + { + x += max_width + 20; + drawing_keys = 1; + old_i = i; + } + max_width = 0; + y = FONT_HEIGHT (s->font) * 4; + } + else + { + i++; + if (i >= key_actions_last && drawing_keys) + { + x += max_width + 10; + drawing_keys = 0; + y = FONT_HEIGHT (s->font) * 4; + i = old_i; + max_width = 0; + } } } -- cgit v1.2.3