summaryrefslogtreecommitdiff
path: root/src/split.c
diff options
context:
space:
mode:
authorsabetts <sabetts>2001-04-13 08:22:11 +0000
committersabetts <sabetts>2001-04-13 08:22:11 +0000
commitbb36a84d39dc9d189e67874fff38c38a9812387a (patch)
treed6b7d767c86eb8ead997731e526215cbc37f0faa /src/split.c
parent10dddc8331d453533b604c950ef1474b026d5abd (diff)
downloadratpoison-bb36a84d39dc9d189e67874fff38c38a9812387a.zip
* src/split.h (blank_frame): new prototype
* src/split.c (split_frame): calls unhide_window after maximizing the new frame's window. (remove_all_splits): hide all windows but the current one (remove_all_splits): maximize the current window in its newly resized frame. (remove_frame): hide the frame's window after removing it from the list. (blank_frame): new function * src/manage.h (withdraw_window): new prototype (hide_window): likewise (unhide_window): likewise * src/manage.c (scanwins): glob ignored windows into 1 if statement. (scanwins): set the window's state to NormalState before calling map_window. (set_state): sets win->state (map_window): calls set_state (hide_window): new function (unhide_window): likewise (withdraw_window): new function * src/main.c (main): setup error handlers after --command, --restart, and --kill commands have been processed. (main): doesn't call set_active_window (init_screen): XSync's after selecting ewents on the root window. (clean_up): map iconized windows * src/list.h (give_window_focus): prototype updated * src/list.c (give_window_focus): takes a second argument, last_win. (give_window_focus): calls unhide_window (give_window_focus): uses last_win instead of current_window() (set_active_window): hides the last window and unhides the new window. (set_active_window): calls give_window_focus * src/events.c (cleanup_frame): maximizes the frame's new window (unmap_notify): do nothing if the window is in the iconic state. Withdraw the window if it is in the normal state. (map_request): calls unhide_window if the window is iconized. Do nothing if it is already mapped. (destroy_window): tightened up (client_msg): detects iconize requests from clients. * src/data.h (STATE_UNMAPPED): remove. Dependant code uses WithdawnState in its stead. (STATE_MAPPED): likewise. Dependant code uses NormalState in its stead * src/actions.c (initialize_default_keybindings): new keybinding - bound to "select -" (cmd_select): the string "-" selects a blank window
Diffstat (limited to 'src/split.c')
-rw-r--r--src/split.c30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/split.c b/src/split.c
index 0533de0..f8150f0 100644
--- a/src/split.c
+++ b/src/split.c
@@ -225,6 +225,7 @@ split_frame (rp_window_frame *frame, int way)
new_frame->win = win;
maximize (win);
+ unhide_window (win);
XRaiseWindow (dpy, win->w);
}
else
@@ -267,17 +268,13 @@ remove_all_splits ()
{
cur = rp_window_frame_sentinel->next;
delete_frame_from_list (cur);
+ if (cur != rp_current_frame) hide_window (cur->win);
free (cur);
}
create_initial_frame ();
rp_current_frame->win = cur_window;
-
- if (cur_window)
- {
- maximize (cur_window);
- XRaiseWindow (dpy, cur_window->w);
- }
+ maximize (cur_window);
}
static int
@@ -384,6 +381,7 @@ remove_frame (rp_window_frame *frame)
PRINT_DEBUG ("Total Area: %d\n", area);
delete_frame_from_list (frame);
+ hide_window (frame->win);
for (cur = rp_window_frame_sentinel->next;
cur != rp_window_frame_sentinel;
@@ -469,7 +467,7 @@ set_active_frame (rp_window_frame *frame)
{
rp_window_frame *old = rp_current_frame;
- give_window_focus (frame->win);
+ give_window_focus (frame->win, rp_current_frame->win);
rp_current_frame = frame;
if (!frame->win || old != rp_current_frame)
@@ -477,6 +475,8 @@ set_active_frame (rp_window_frame *frame)
show_frame_indicator();
}
+ /* If the frame has no window to give focus to, give the frame
+ indicator focus. */
if( !frame->win )
{
XSetInputFocus (dpy, current_screen()->frame_window,
@@ -484,6 +484,22 @@ set_active_frame (rp_window_frame *frame)
}
}
+void
+blank_frame (rp_window_frame *frame)
+{
+ if (frame->win == NULL) return;
+
+ hide_window (frame->win);
+ frame->win = NULL;
+
+ if (frame == rp_current_frame)
+ {
+ show_frame_indicator();
+ XSetInputFocus (dpy, current_screen()->frame_window,
+ RevertToPointerRoot, CurrentTime);
+ }
+}
+
static void
update_frame_indicator ()
{