summaryrefslogtreecommitdiff
path: root/src/group.c
diff options
context:
space:
mode:
authorsabetts <sabetts>2004-11-19 02:09:42 +0000
committersabetts <sabetts>2004-11-19 02:09:42 +0000
commit4bbc65a39c7fb6c4b14dcb9c6bc22ba29ad148ba (patch)
tree02aed8e089c3b8409156f7f0cd6590d55e4c1545 /src/group.c
parent3597d7d9eaff4d51b8825b9eea443ce7db86c733 (diff)
downloadratpoison-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.c55
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;
+}