diff options
author | sabetts <sabetts> | 2004-11-19 02:09:42 +0000 |
---|---|---|
committer | sabetts <sabetts> | 2004-11-19 02:09:42 +0000 |
commit | 4bbc65a39c7fb6c4b14dcb9c6bc22ba29ad148ba (patch) | |
tree | 02aed8e089c3b8409156f7f0cd6590d55e4c1545 /src/group.c | |
parent | 3597d7d9eaff4d51b8825b9eea443ce7db86c733 (diff) | |
download | ratpoison-4bbc65a39c7fb6c4b14dcb9c6bc22ba29ad148ba.zip |
* src/actions.c (set_vars): add maxundos
(push_frame_undo): new function
(pop_frame_undo): likewise
(initialize_default_keybindings): add binding for "undo"
(initialize_default_keybindings): add def alias for maxundos
(cmd_other): call set_active_window_force instead of
set_active_window
(cmd_v_split): push the frame set
(cmd_h_split): likewise
(cmd_only): likewise
(cmd_remove): likewise
(cmd_shrink): likewise
(cmd_tmpwm): likewise
(cmd_license): update copyright. Add build date and time.
(cmd_fselect): simplify code that returns the frame selected.
(fdump): new function
(cmd_fdump): call fdump to dump the screen's frame set.
(frestore): new function
(cmd_frestore): call frestore to restore the screen's frame set.
(cmd_sfdump): new function
(cmd_sdump): likewise
(set_maxundos): likewise
(cmd_cnext): likewise
(cmd_cprev): likewise
(cmd_inext): likewise
(cmd_iprev): likewise
(cmd_cother): likewise
(cmd_iother): likewise
(cmd_undo): likewise
(cmd_prompt): likewise
(cmd_describekey): likewise
(cmd_dedicate): likewise
* src/main.c (init_defaults): init maxundos to 20
(clean_up): free the undo history lists
* src/window.h (set_active_window_body): new function
(set_active_window_force): likewise
* src/window.c (set_active_window): new function
(set_active_window_force): likewise
(set_active_window_body): renamed from set_active_window
(set_active_window_body): Add code to handle dedicated frames.
* src/screen.h (screen_dump): new prototype
* src/screen.c (screen_dump): new function
* src/linkedlist.h (list_last): new macro
* src/group.h (group_last_window_by_class_complement): new prototype
(group_last_window_by_class): likewise
* src/group.c (group_last_window_by_class): new function
(group_last_window_by_class_complement): likewise
* src/globals.h (rp_frame_undos): new extern.
(rp_num_frame_undos): likewise
* src/globals.c (rp_frame_undos): new list.
(rp_num_frame_undos): new global
* src/frame.c (frame_new): init f->dedicated to 0.
* src/data.h (struct rp_frame): add dedicated member.
(struct rp_defaults): add maxundos member.
(struct rp_frame_undo): new struct.
* src/actions.c: new commands, cnext, cother, cprev,
Diffstat (limited to 'src/group.c')
-rw-r--r-- | src/group.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/group.c b/src/group.c index 883e7d8..43fab12 100644 --- a/src/group.c +++ b/src/group.c @@ -508,3 +508,58 @@ group_delete_group (rp_group *g) } } +/* Used by :cother / :iother */ +rp_window * +group_last_window_by_class (rp_group *g, char *class) +{ + int last_access = 0; + rp_window_elem *most_recent = NULL; + rp_window_elem *cur; + rp_screen *s = current_screen(); + + list_for_each_entry (cur, &g->mapped_windows, node) + { + if (cur->win->last_access >= last_access + && cur->win != current_window() + && !find_windows_frame (cur->win) + && (cur->win->scr == s || rp_have_xinerama) + && strcmp(class, cur->win->res_class)) + { + most_recent = cur; + last_access = cur->win->last_access; + } + } + + if (most_recent) + return most_recent->win; + + return NULL; +} + +/* Used by :cother / :iother */ +rp_window * +group_last_window_by_class_complement (rp_group *g, char *class) +{ + int last_access = 0; + rp_window_elem *most_recent = NULL; + rp_window_elem *cur; + rp_screen *s = current_screen(); + + list_for_each_entry (cur, &g->mapped_windows, node) + { + if (cur->win->last_access >= last_access + && cur->win != current_window() + && !find_windows_frame (cur->win) + && (cur->win->scr == s || rp_have_xinerama) + && !strcmp(class, cur->win->res_class)) + { + most_recent = cur; + last_access = cur->win->last_access; + } + } + + if (most_recent) + return most_recent->win; + + return NULL; +} |