diff options
author | Bernhard R. Link <brlink@debian.org> | 2009-01-03 16:21:34 +0100 |
---|---|---|
committer | Shawn <sabetts@juicebox.(none)> | 2009-01-16 15:57:40 -0800 |
commit | ffae4bf9413bec7efd5d4821e030b63a700fab69 (patch) | |
tree | a571f33a5043d162db60c4d190bb9949a20105c7 /src/screen.c | |
parent | 9888fccffbc7d9f5680512b03ace6dd5fc325094 (diff) | |
download | ratpoison-ffae4bf9413bec7efd5d4821e030b63a700fab69.zip |
Move screen activation code to new (de)activate_screen functions,
making sure _NET atoms are reset after tmpwm and deleted when exiting.
Diffstat (limited to 'src/screen.c')
-rw-r--r-- | src/screen.c | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/src/screen.c b/src/screen.c index 71a8f50..d978570 100644 --- a/src/screen.c +++ b/src/screen.c @@ -270,11 +270,6 @@ init_screen (rp_screen *s, int screen_num) | StructureNotifyMask); XSync (dpy, False); - /* Add netwm support. FIXME: I think this is busted. */ - XChangeProperty (dpy, RootWindow (dpy, screen_num), - _net_supported, XA_ATOM, 32, PropModeReplace, - (unsigned char*)&_net_wm_pid, 1); - /* Set the numset for the frames to our global numset. */ s->frames_numset = rp_frame_numset; @@ -327,7 +322,6 @@ init_screen (rp_screen *s, int screen_num) WhitePixel (dpy, s->screen_num), BlackPixel (dpy, s->screen_num)); XSelectInput (dpy, s->key_window, KeyPressMask | KeyReleaseMask); - XMapWindow (dpy, s->key_window); /* Create the input window. */ s->input_window = XCreateSimpleWindow (dpy, s->root, 0, 0, 1, 1, @@ -344,6 +338,8 @@ init_screen (rp_screen *s, int screen_num) s->height, 0, s->fg_color, s->bg_color); XSelectInput (dpy, s->help_window, KeyPressMask); + activate_screen(s); + XSync (dpy, 0); #ifdef USE_XFT_FONT @@ -370,6 +366,28 @@ init_screen (rp_screen *s, int screen_num) #endif } +void +activate_screen (rp_screen *s) +{ + /* Add netwm support. FIXME: I think this is busted. */ + XChangeProperty (dpy, RootWindow (dpy, s->screen_num), + _net_supported, XA_ATOM, 32, PropModeReplace, + (unsigned char*)&_net_wm_pid, 1); + + XMapWindow (dpy, s->key_window); +} + +void +deactivate_screen (rp_screen *s) +{ + /* Unmap its key window */ + XUnmapWindow (dpy, s->key_window); + + /* delete everything so noone sees them while we are not there */ + XDeleteProperty (dpy, RootWindow (dpy, s->screen_num), + _net_supported); +} + static int is_rp_window_for_given_screen (Window w, rp_screen *s) { |