summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--src/actions.c76
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 <sabetts@hotdog>
+ * 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; i<key_actions_last; i++)
+ i = 0;
+ while (i<key_actions_last || drawing_keys)
{
- keysym_name = keysym_to_string (key_actions[i].key, key_actions[i].state);
+ if (drawing_keys)
+ {
+ keysym_name = keysym_to_string (key_actions[i].key, key_actions[i].state);
- XDrawString (dpy, s->help_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;
+ }
}
}