diff options
author | sabetts <sabetts> | 2003-02-27 12:33:00 +0000 |
---|---|---|
committer | sabetts <sabetts> | 2003-02-27 12:33:00 +0000 |
commit | 293fca91a75f15c696c2f1d9dd4227f558cfc26f (patch) | |
tree | 9fa4d15ede6975b561b07d4d8004c0885c8124fd /src/actions.c | |
parent | 6b341ac568efd980ddbbbfbb2c4960204879afdb (diff) | |
download | ratpoison-293fca91a75f15c696c2f1d9dd4227f558cfc26f.zip |
* src/main.c (free_screen): new function
(clean_up): call free_screen on each screen. free the screen
array. free defaults.window_fmt.
* src/number.h (free_numbers): new prototype
* src/number.c (free_numbers): new function
* src/manage.c (get_wmname): use XGetWindowProperty to get the
window name.
(unmanaged_window): free wname after using it.
* src/main.c (wm_name): new global
(main): internalize WM_NAME atom.
(clean_up): free data structures for keybindings, aliases, the
bar, window numbers, and input history.
* src/input.h (free_history): new prototype
* src/input.c (free_history): new function
* src/events.c (execute_remote_command): free properties returned
by XGetWindowProperty().
* src/data.h (wm_name): new extern
* src/communications.c (recieve_command_result): free properties
returned by XGetWindowProperty().
* src/bar.h (free_bar): new prototype
* src/bar.c (update_window_names): bar_buffer is not static.
(update_window_names): free bar_buffer after using it.
(marked_message): free the GC after using it.
(free_bar): new function.
* src/actions.h (free_keybindings): new prototype
(free_aliases): likewise
* src/actions.c (free_keybindings): new function
(free_aliases): likewise
(cmd_tmpwm): unmap the key window before calling the new wm, and
remap it afterwards.
Diffstat (limited to 'src/actions.c')
-rw-r--r-- | src/actions.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/src/actions.c b/src/actions.c index a6e89e4..28a583e 100644 --- a/src/actions.c +++ b/src/actions.c @@ -344,6 +344,37 @@ initialize_default_keybindings (void) add_keybinding (XK_question, 0, "help"); } +void +free_keybindings () +{ + int i; + + /* Free the data in the actions. */ + for (i=0; i<key_actions_last; i++) + { + free (key_actions[i].data); + } + + /* Free the actions list. */ + free (key_actions); +} + +void +free_aliases () +{ + int i; + + /* Free the alias data. */ + for (i=0; i<alias_list_last; i++) + { + free (alias_list[i].name); + free (alias_list[i].alias); + } + + /* Free the alias list. */ + free (alias_list); +} + /* return a KeySym from a string that contains either a hex value or an X keysym description */ static int string_to_keysym (char *str) @@ -2732,7 +2763,11 @@ cmd_tmpwm (int interactive, void *data) /* Release event selection on the root windows, so the new WM can have it. */ for (i=0; i<num_screens; i++) - XSelectInput(dpy, RootWindow (dpy, i), 0); + { + XSelectInput(dpy, RootWindow (dpy, i), 0); + /* Unmap its key window */ + XUnmapWindow (dpy, screens[i].key_window); + } /* Don't listen for any events from any window. */ list_for_each_safe_entry (win, iter, tmp, &rp_mapped_window, node) @@ -2773,6 +2808,8 @@ cmd_tmpwm (int interactive, void *data) XSelectInput(dpy, RootWindow (dpy, i), PropertyChangeMask | ColormapChangeMask | SubstructureRedirectMask | SubstructureNotifyMask); + /* Map its key window */ + XMapWindow (dpy, screens[i].key_window); } XSync (dpy, False); |