summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS5
-rw-r--r--ChangeLog13
-rw-r--r--src/actions.c24
-rw-r--r--src/bar.c18
-rw-r--r--src/events.c3
-rw-r--r--src/input.c12
-rw-r--r--src/manage.c3
7 files changed, 74 insertions, 4 deletions
diff --git a/AUTHORS b/AUTHORS
index 1e0f5d0..df447fb 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,11 +1,11 @@
-Shawn Betts (sabetts@users.sourceforge.net)
+Shawn Betts (sabetts at vcn bc ca)
Shawn is the original author and current maintainer for
ratpoison. Sickened by the rat and the trend in window managers, he
sat down one evening and pulled an all-nighter writing the first
version of ratpoison.
-Ryan Yeske (rcyeske@vcn.bc.ca)
+Ryan Yeske (rcyeske at vcn bc ca)
Ryan doesn't commit much code these days, but that's not because he
doesn't want to, its just that he forgot his cvs ssh password.
@@ -39,3 +39,4 @@ Antti Nykänen <aon at iki dot fi>
rubikitch <rubikitch at ruby-lang org>
Florian E.J. Fruth <fejf at rommel stw uni-erlangen de>
Tim Cooijmans <tim at aapopfiets nl>
+Andreas Seltenreich <uwi7 at rz uni-karlsruhe de>
diff --git a/ChangeLog b/ChangeLog
index 5f8d9bb..e0dcbc1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-12-13 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
+
+ * src/bar.c (show_bar, prepare_bar): Switch to default colormap.
+ (hide_bar): Possibly restore colormap.
+
+ * src/input.c (get_more_input): Temporarily install default
+ colormap.
+
+ * src/actions.c (cmd_help, cmd_license): Likewise.
+
+ * src/events.c (colormap_notify): Postpone installing colormap
+ when bar is raised.
+
2006-11-23 Shawn Betts <sabetts@vcn.bc.ca>
* src/events.c (execute_remote_command): return a cmdred instead
diff --git a/src/actions.c b/src/actions.c
index 969fa95..70136d8 100644
--- a/src/actions.c
+++ b/src/actions.c
@@ -3135,6 +3135,11 @@ cmd_license (int interactive, struct cmdarg **args)
"[Press any key to end.] ",
NULL};
+ /* Switch to the default colormap. */
+ if (current_window())
+ XUninstallColormap (dpy, current_window()->colormap);
+ XInstallColormap (dpy, s->def_cmap);
+
XMapRaised (dpy, s->help_window);
XGrabKeyboard (dpy, s->help_window, False, GrabModeSync, GrabModeAsync, CurrentTime);
@@ -3171,6 +3176,13 @@ cmd_license (int interactive, struct cmdarg **args)
XUngrabKeyboard (dpy, CurrentTime);
XUnmapWindow (dpy, s->help_window);
+ /* Possibly restore colormap. */
+ if (current_window())
+ {
+ XUninstallColormap (dpy, s->def_cmap);
+ XInstallColormap (dpy, current_window()->colormap);
+ }
+
/* The help window overlaps the bar, so redraw it. */
if (current_screen()->bar_is_raised)
redraw_last_message();
@@ -3199,6 +3211,11 @@ cmd_help (int interactive, struct cmdarg **args)
int drawing_keys = 1; /* 1 if we are drawing keys 0 if we are drawing commands */
char *keysym_name;
+ /* Switch to the default colormap. */
+ if (current_window())
+ XUninstallColormap (dpy, current_window()->colormap);
+ XInstallColormap (dpy, s->def_cmap);
+
XMapRaised (dpy, s->help_window);
XGrabKeyboard (dpy, s->help_window, False, GrabModeSync, GrabModeAsync, CurrentTime);
@@ -3289,6 +3306,13 @@ cmd_help (int interactive, struct cmdarg **args)
XUngrabKeyboard (dpy, CurrentTime);
XUnmapWindow (dpy, s->help_window);
+ /* Possibly restore colormap. */
+ if (current_window())
+ {
+ XUninstallColormap (dpy, s->def_cmap);
+ XInstallColormap (dpy, current_window()->colormap);
+ }
+
/* The help window overlaps the bar, so redraw it. */
if (current_screen()->bar_is_raised)
redraw_last_message();
diff --git a/src/bar.c b/src/bar.c
index 01ecfcd..08c8d23 100644
--- a/src/bar.c
+++ b/src/bar.c
@@ -62,6 +62,14 @@ hide_bar (rp_screen *s)
{
s->bar_is_raised = 0;
XUnmapWindow (dpy, s->bar_window);
+
+ /* Possibly restore colormap. */
+ if (current_window())
+ {
+ XUninstallColormap (dpy, s->def_cmap);
+ XInstallColormap (dpy, current_window()->colormap);
+ }
+
return 1;
}
@@ -78,6 +86,11 @@ show_bar (rp_screen *s, char *fmt)
XMapRaised (dpy, s->bar_window);
update_window_names (s, fmt);
+ /* Switch to the default colormap */
+ if (current_window())
+ XUninstallColormap (dpy, current_window()->colormap);
+ XInstallColormap (dpy, s->def_cmap);
+
reset_alarm();
return 1;
}
@@ -381,6 +394,11 @@ prepare_bar (rp_screen *s, int width, int height)
{
s->bar_is_raised = BAR_IS_MESSAGE;
XMapRaised (dpy, s->bar_window);
+
+ /* Switch to the default colormap */
+ if (current_window())
+ XUninstallColormap (dpy, current_window()->colormap);
+ XInstallColormap (dpy, s->def_cmap);
}
XRaiseWindow (dpy, s->bar_window);
diff --git a/src/events.c b/src/events.c
index f09f9d1..f42d7db 100644
--- a/src/events.c
+++ b/src/events.c
@@ -660,7 +660,8 @@ colormap_notify (XEvent *ev)
XGetWindowAttributes (dpy, win->w, &attr);
win->colormap = attr.colormap;
- if (win == current_window())
+ if (win == current_window()
+ && !current_screen()->bar_is_raised)
{
XInstallColormap (dpy, win->colormap);
}
diff --git a/src/input.c b/src/input.c
index cadd5cb..afef806 100644
--- a/src/input.c
+++ b/src/input.c
@@ -497,6 +497,11 @@ get_more_input (char *prompt, char *preinput,
/* We don't want to draw overtop of the program bar. */
hide_bar (s);
+ /* Switch to the default colormap. */
+ if (current_window())
+ XUninstallColormap (dpy, current_window()->colormap);
+ XInstallColormap (dpy, s->def_cmap);
+
XMapWindow (dpy, s->input_window);
XRaiseWindow (dpy, s->input_window);
XClearWindow (dpy, s->input_window);
@@ -547,5 +552,12 @@ get_more_input (char *prompt, char *preinput,
XUngrabKeyboard (dpy, CurrentTime);
XUnmapWindow (dpy, s->input_window);
+ /* Possibly restore colormap. */
+ if (current_window())
+ {
+ XUninstallColormap (dpy, s->def_cmap);
+ XInstallColormap (dpy, current_window()->colormap);
+ }
+
return final_input;
}
diff --git a/src/manage.c b/src/manage.c
index 50743b4..c1cf8a1 100644
--- a/src/manage.c
+++ b/src/manage.c
@@ -798,10 +798,11 @@ force_maximize (rp_window *win)
}
else
{
- XResizeWindow (dpy, win->w, win->width + 1, win->height + 1);
+ XResizeWindow (dpy, win->w, win->width + 10, win->height + 10);
}
XSync (dpy, False);
+ usleep (100);
/* Resize the window to its proper maximum size. */
XMoveResizeWindow (dpy, win->w, win->scr->left + win->x, win->scr->top + win->y, win->width, win->height);