summaryrefslogtreecommitdiff
path: root/src/actions.c
diff options
context:
space:
mode:
authorsabetts <sabetts>2003-02-27 12:33:00 +0000
committersabetts <sabetts>2003-02-27 12:33:00 +0000
commit293fca91a75f15c696c2f1d9dd4227f558cfc26f (patch)
tree9fa4d15ede6975b561b07d4d8004c0885c8124fd /src/actions.c
parent6b341ac568efd980ddbbbfbb2c4960204879afdb (diff)
downloadratpoison-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.c39
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);