any visible frame.
* buffer.c (Fother_buffer): Pass Qt as the second argument
to Fget_buffer_window.
* window.c (window_loop): In GET_BUFFER_WINDOW case, ignore
non-visible frames.
(Fget_buffer_window): Change doc string to mention that passing Qt
for the FRAME argument returns windows on visible frames only.
(Qvisible): Removed.
any visible frame.
* buffer.c (Fother_buffer): Pass Qvisible as the second argument
to Fget_buffer_window.
* window.c (Qvisible): New symbol.
(window_loop): In GET_BUFFER_WINDOW case, if frames is Qvisible,
ignore non-visible frames.
(Fget_buffer_window): Expand doc string to mention that Qvisible
is an interesting value for FRAME argument.
(syms_of_window): Init and staticpro Qvisible.
* lisp.h (Qvisible): New declaration.
number of arguments to unbind_to.
* lread.c (Feval_buffer): Same.
* window.c (Fscroll_other_window): Same.
* window.c (Fset_window_configuration): Pass the proper number of
arguments to Fselect_frame.
for scrollbars if present.
* lisp.h (window_internal_height, window_internal_width): Add
extern declarations for these.
* dispnew.c (direct_output_for_insert, direct_output_forward_char,
buffer_posn_from_coords): Use window_internal_width instead of
writing out its definition.
* indent.c (compute_motion): Doc fix; mention scrollbars and
window_internal_width.
(pos_tab_offset, Fvertical_motion): Use window_internal_width
instead of writing it out.
* window.c (Fpos_visible_in_window_p, Fwindow_width, Fscroll_left,
Fscroll_right): Same.
* xdisp.c (redisplay, try_window, try_window_id,
display_text_line): Same.
* termhooks.h (mouse_position_hook): Doc fix.
(set_vertical_scrollbar_hook): This doesn't return anything any
more, and doesn't take a struct scrollbar * argument any more.
(condemn_scrollbars_hook, redeem_scrollbar_hook,
judge_scrollbars_hook): Doc fixes.
* term.c (mouse_position_hook): Doc fix.
(set_vertical_scrollbar_hook): This doesn't return
anything any more. Doc fixes.
* keyboard.c (kbd_buffer_get_event): Receive the scrollbar's
window from *mouse_position_hook and pass it to
make_lispy_movement, instead of working with a pointer to a struct
scrollbar.
(make_lispy_event): We don't need a window_from_scrollbar function
anymore; we are given the window directly in *EVENT.
Unify the code which generates
text-area mouse clicks and scrollbar clicks; use the same code to
distinguish clicks from drags on the scrollbar as in the text area.
Distinguish clicks from drags by storing a copy of the lispy
position list returned as part of the event.
(button_down_location): Make this a lisp vector, rather than an
array of random structures.
(struct mouse_position): Remove this; it's been replaced by a lisp
list.
(make_lispy_movement): Accept the scrollbar's window as a
parameter, rather than the scrollbar itself.
If FRAME is zero, assume that the other arguments are garbage.
(syms_of_keyboard): No need to staticpro each window of
button_down_location now; just initialize and staticpro it.
* window.c (window_from_scrollbar): Function deleted; no longer
needed.
* xdisp.c (redisplay_window): Just pass the window to
set_vertical_scrollbar hook; don't pass the scrollbar object too.
* xterm.c (XTmouse_position): Don't return a pointer to the
scrollbar for scrollbar motion; instead, return the scrollbar's
window.
Qabove_handle, Qhandle, Qbelow_handle): New symbols.
(make_lispy_event): New code to build scrollbar clicks.
(make_lispy_movement): New code to handle scrollbar movement.
(head_table): Include Qscrollbar_movement in the event heads.
(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
Qabove_handle, Qhandle, and Qbelow_handle.
* keyboard.h (Qscrollbar_movement): Declare this along with the
other event types.
* lisp.h (Qvertical_scrollbar): Declare this.
* window.c (window_from_scrollbar): New function.
* window.c (Fset_window_configuration): Don't restore the frame's
focus redirection if the target frame is now dead.
configuration of a dead frame, don't bother rebuilding its window
tree, restoring its focus redirection, or temporarily resizing it
to fit the saved window configuration. If the frame which was
selected when the configuration was captured is now dead, don't
try to select it.
* frame.c (Fdelete_frame): Delete all the windows in the frame's
window tree, using delete_all_subwindows.
* window.c (delete_all_subwindows): Don't make this static
anymore.
w->width, w->left, w->hscroll, and arguments.
(replace_window): Use EQ, not ==.
(Fdelete_window): p->top and p->left are not C integers.
(Fnext_window, Fprevious_window): Use EQ, not ==.
* (Flive_window_p): New function.
(Qlive_window_p): New variable, to name it in type errors.
(syms_of_window): Defsubr Slive_window_p, init and staticpro
Qlive_window_p.
(decode_window): Use CHECK_LIVE_WINDOW instead of
CHECK_WINDOW; the only thing a user should be able to do to a dead
window is check its type.
(Fcoordinates_in_window_p, Fnext_window, Fprevious_window,
Fdelete_other_windows, Fselect_window, Fsplit_window,
Fscroll_other_window): Use CHECK_LIVE_WINDOW instead of
CHECK_WINDOW.
(Fdelete_window): If WINDOW is a deleted window, do nothing;
there's no harm in allowing people to delete deleted windows.
Delete all of WINDOW's subwindows, too.
(delete_all_subwindows): Set the buffer, vchild, and hchild of the
windows we delete all to nil.
* window.c (Fwindow_minibuffer_p): Make the WINDOW argument
optional, like all the other window-querying functions.
* window.c (Fpos_visible_in_window_p): Use decode_window to handle
the WINDOW argument, instead of writing out that function's code.
* window.c (check_frame_size): Don't define this extern; that
doesn't mean anything.
* window.c (Fdelete_window): Choose an alternative when we delete
any frame's selected window, not just when we delete the selected
frame's selected window.
instead of just saying it's 7; that way, we won't get screwed if
we add members to struct save_window_data.
* window.c (Fset_window_configuration): The pointer to the
saved window data is called `data', not just `d'.
frame, too.
(Fset_window_configuration): Restore the frame's selected window
using Fselect_window, and then restore the selected frame using
Fselect_frame.
(Fcurrent_window_configuration): Record the currently selected
frame. Update docstring to describe the information now recorded.
* window.c (Fset_window_configuration): Clean up the way we save
and restore the frame's size.
* window.c (struct save_window_data): Add a member called
focus_frame, to save and restore the screen's focus frame.
(Fset_window_configuration): Redirect the frame's focus as
indicated in the window configuration.
(Fcurrent_window_configuration): Record the frame's current focus.
just because we restored its configuration.
* window.c (Fset_window_configuration): Don't forget to set the
frame's selected window when we can't call Fselect_window.
its `height' field; we may need to know the window's old buffer
once we have restored it from a window configuration.
Fset_window_configuration): When we restore a window, if its
`height' field is a buffer, restore its `buffer' field from that.
This allows us to leave the window's buffer unchanged if the
buffer recorded in the configuration is dead.
* window.c (delete_all_subwindows): Removed unused variable named
"count".
if specified, return the minibuffer used by that frame.
* window.c (Fset_window_configuration): Don't signal an error
if the frame size saved in the window configuration doesn't
match the frame's current size; instead, temporarily resize
the frame while installing the window configuration. This is
important because using the minibuffer saves and restores the
current window configuration, and you don't want to signal an
error just because the user resized the frame while using the
minibuffer.
one-line windows are the minibuffer, or that all minibuffers are
one line high. Use MINI_WINDOW_P.
* window.c (change_window_height): If the size of the window will
shrink below the minimum, this code would only try to delete it if
it had a parent. Well, even if the window doesn't have a parent,
you want Fdelete_window to signal an error, since you're trying to
resize one of the undeleteable windows into nothingness. So call
Fdelete_window even if the window doesn't have a parent.
* window.c (MINSIZE): Add kludge so that the minibuffer is always
allowed to shrink to one line in height.
(MINSIZE, CURBEG, CURSIZE): Change these so that their argument
are always Lisp_Objects, not struct window *'s.
(change_window_height): Changed accordingly.
assumes that minibuf_window is on the same frame as the window
configuration. Removed special case for windows whose prevs
point to themselves.
* window.c (Fset_window_configuration): Rename the argument from
ARG to CONFIGURATION, so it matches the docstring. The
make-docfile program cares.
* window.c [MULTI_FRAME] (syms_of_window): Don't staticpro
minibuf_window; the frame list will take care of it.
* window.c (window_loop): This used to keep track of the first
window processed and wait until we came back around to it. Sadly,
this doesn't work if that window gets deleted. So instead, use
Fprevious_window to find the last window to process, and loop
until we've done that one.
* window.c [not MULTI_FRAME] (init_window_once): Don't forget to
set the `mini_p' flag on the new minibuffer window to t.
* window.c (Fwindow_at): Don't check the type of the frame
argument.
* window.c [not MULTI_FRAME] (window_loop): Set frame to zero,
instead of trying to decode it.
* window.c (init_window_once): Initialize minibuf_window before
FRAME_ROOT_WINDOW, so the latter actually points to something.
window processed and wait until we came back around to it. Sadly,
this doesn't work if that window gets deleted. So instead, use
Fprevious_window to find the last window to process, and loop
until we've done that one.
* window.c [not MULTI_FRAME] (init_window_once): Don't forget to
set the `mini_p' flag on the new minibuffer window to t.
* window.c (Fwindow_at): Don't check the type of the frame
argument.
* window.c [not MULTI_FRAME] (window_loop): Set frame to zero,
instead of trying to decode it.
* window.c (init_window_once): Initialize minibuf_window before
FRAME_ROOT_WINDOW, so the latter actually points to something.
defined here now, rather than window.h.
(check_frame_size): New function.
* window.c (FRAME_IS_TERMCAP, FRAME_IS_X, FRAME_HAS_MINIBUF):
Renamed these to FRAME_TERMCAP_P, FRAME_X_P, and
FRAME_HAS_MINIBUF_P, for consistency with the rest of the
frame macros.
* window.c (check_min_window_sizes): New function.
(set_window_height): Call it.
(Fsplit_window, change_window_height): Call it, instead of writing
out its code.