diff options
author | sabetts <sabetts> | 2004-02-27 08:28:16 +0000 |
---|---|---|
committer | sabetts <sabetts> | 2004-02-27 08:28:16 +0000 |
commit | fab11adc940f3258dc53c823903f242d9c65da91 (patch) | |
tree | b1057b031c67173189c0c60dbf93fe2b2f8c1210 /src/actions.c | |
parent | a5c30aed8f3d73ac39e997a11068d12b82eab42e (diff) | |
download | ratpoison-fab11adc940f3258dc53c823903f242d9c65da91.zip |
* src/window.c (give_window_focus): save the mouse position before
checking if win is NULL.
(give_window_focus): set rp_current_screen to xine_screen_num of
the window's screen.
(set_active_window): when using xinerama get the frame from the
current screen.
* src/split.c (set_frames_window): update the window's scr
attribute to point to the frame's screen.
(find_window_for_frame): when xinerama is being used search all
windows.
(set_active_frame): update rp_current_screen to point to the
frame's screen.
* src/screen.h (init_screens): new prototype
(is_rp_window_for_screen): likewise
* src/screen.c: include string.h and X11/cursorfont.h
(init_screens): new function
(is_rp_window_for_screen): new function.
(init_screen): fill in xine_screen_num when using xinerama.
* src/ratpoison.h: include xinerama.h
* src/manage.c (current_screen): use xine_screen_num to find the
current screen.
(scanwins): use is_rp_window_for_screen to skip over ratpoison windows.
(scanwins): when using xinerama only manage windows inside the viewable area.
* src/main.c (main): call init_xinerama and init_screens. Move
screen initing code to these functions.
(init_rat_cursor): move to screen.c
(init_screen): likewise
(find_screen): likewise
(clean_up): call free_xinerama
* src/group.c (group_last_window): only check windows in the
current screen, unless xinerama is being used in which case all
windows are accessible.
(group_next_window): likewise
(group_prev_window): likewise
* src/globals.h: new globals rp_have_xinerama, xine_screen_num.
* src/events.c (new_window): when using xinerama, the new window's
screen is the current screen.
(key_press): when using xinerama, use the current screen.
* src/data.h (struct rp_screen): remove root_attr and add left,
top, width, height. All dependant code updated. Add xine_screen_num.
* src/actions.c (cmd_remove): show the frame indicator in the new
current frame after removing the frame.
* src/Makefile.am (ratpoison_SOURCES): add xinerama.c and xinerama.h
Diffstat (limited to 'src/actions.c')
-rw-r--r-- | src/actions.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/actions.c b/src/actions.c index 98cf640..59221e0 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1660,6 +1660,7 @@ cmd_remove (int interactive, char *data) { remove_frame (current_frame()); set_active_frame (frame); + show_frame_indicator(); } return NULL; @@ -1792,7 +1793,7 @@ cmd_banish (int interactive, char *data) s = current_screen (); - XWarpPointer (dpy, None, s->root, 0, 0, 0, 0, s->root_attr.width - 2, s->root_attr.height - 2); + XWarpPointer (dpy, None, s->root, 0, 0, 0, 0, s->left + s->width - 2, s->top + s->height - 2); return NULL; } @@ -1854,8 +1855,8 @@ cmd_license (int interactive, char *data) } /* Offset the text so its in the center. */ - x = (s->root_attr.width - max_width) / 2; - y = (s->root_attr.height - i * FONT_HEIGHT (defaults.font)) / 2; + x = s->left + (s->width - max_width) / 2; + y = s->top + (s->height - i * FONT_HEIGHT (defaults.font)) / 2; if (x < 0) x = 0; if (y < 0) y = 0; @@ -1967,7 +1968,7 @@ cmd_help (int interactive, char *data) y += FONT_HEIGHT (defaults.font); /* Make sure the next line fits entirely within the window. */ - if (y + FONT_HEIGHT (defaults.font) >= s->root_attr.height) + if (y + FONT_HEIGHT (defaults.font) >= (s->top + s->height)) { if (drawing_keys) { @@ -2354,8 +2355,8 @@ cmd_defpadding (int interactive, char *data) frame->width += bk_pos - l; } - if (bk_pos + bk_len == current_screen()->root_attr.width - defaults.padding_right) - frame->width = current_screen()->root_attr.width - r - frame->x; + if ((bk_pos + bk_len) == (current_screen()->left + current_screen()->width - defaults.padding_right)) + frame->width = current_screen()->left + current_screen()->width - r - frame->x; /* Resize vertically. */ bk_pos = frame->y; @@ -2367,8 +2368,8 @@ cmd_defpadding (int interactive, char *data) frame->height += bk_pos - t; } - if (bk_pos + bk_len == current_screen()->root_attr.height - defaults.padding_bottom) - frame->height = current_screen()->root_attr.height - b - frame->y; + if ((bk_pos + bk_len) == (current_screen()->top + current_screen()->height - defaults.padding_bottom)) + frame->height = current_screen()->top + current_screen()->height - b - frame->y; maximize_all_windows_in_frame (frame); } @@ -2747,8 +2748,8 @@ cmd_info (int interactive, char *data) if (current_window() == NULL) { marked_message_printf (0, 0, " (%d, %d) No window ", - current_screen()->root_attr.width, - current_screen()->root_attr.height); + current_screen()->width, + current_screen()->height); } else { @@ -3325,7 +3326,7 @@ cmd_fselect (int interactive, char *data) height = (FONT_HEIGHT (defaults.font) + defaults.bar_y_padding * 2); /* Create and map the window. */ - wins[i] = XCreateWindow (dpy, s->root, cur->x, cur->y, width, height, 1, + wins[i] = XCreateWindow (dpy, s->root, s->left + cur->x, s->top + cur->y, width, height, 1, CopyFromParent, CopyFromParent, CopyFromParent, CWOverrideRedirect | CWBorderPixel | CWBackPixel, &attr); |