* window.c (quad): New function.
(Fwindow_edges, Fwindow_pixel_edges, Fwindow_inside_edges) (Fwindow_absolute_pixel_edges, Fwindow_inside_absolute_pixel_edges) (Fwindow_inside_pixel_edges, Fpos_visible_in_window_p) (Fwindow_line_height): Use it. (Fwindow_fringes): Use list3. (Fwindow_scroll_bars): Use list4. (Fwindow_frame, Fwindow_top_child, Fwindow_left_child) (Fwindow_combination_limit): Allow zero number of arguments.
This commit is contained in:
parent
8e2417bfc0
commit
89bc059271
2 changed files with 82 additions and 80 deletions
|
@ -1,3 +1,15 @@
|
|||
2012-11-06 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* window.c (quad): New function.
|
||||
(Fwindow_edges, Fwindow_pixel_edges, Fwindow_inside_edges)
|
||||
(Fwindow_absolute_pixel_edges, Fwindow_inside_absolute_pixel_edges)
|
||||
(Fwindow_inside_pixel_edges, Fpos_visible_in_window_p)
|
||||
(Fwindow_line_height): Use it.
|
||||
(Fwindow_fringes): Use list3.
|
||||
(Fwindow_scroll_bars): Use list4.
|
||||
(Fwindow_frame, Fwindow_top_child, Fwindow_left_child)
|
||||
(Fwindow_combination_limit): Allow zero number of arguments.
|
||||
|
||||
2012-11-05 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h.
|
||||
|
|
150
src/window.c
150
src/window.c
|
@ -270,6 +270,15 @@ decode_valid_window (register Lisp_Object window)
|
|||
return w;
|
||||
}
|
||||
|
||||
/* Build a frequently used 4-integer (X Y W H) list. */
|
||||
|
||||
static Lisp_Object
|
||||
quad (ptrdiff_t x, ptrdiff_t y, ptrdiff_t w, ptrdiff_t h)
|
||||
{
|
||||
return list4 (make_number (x), make_number (y),
|
||||
make_number (w), make_number (h));
|
||||
}
|
||||
|
||||
DEFUN ("windowp", Fwindowp, Swindowp, 1, 1, 0,
|
||||
doc: /* Return t if OBJECT is a window and nil otherwise. */)
|
||||
(Lisp_Object object)
|
||||
|
@ -296,7 +305,7 @@ Internal windows and deleted windows are not live. */)
|
|||
}
|
||||
|
||||
/* Frames and windows. */
|
||||
DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 1, 1, 0,
|
||||
DEFUN ("window-frame", Fwindow_frame, Swindow_frame, 0, 1, 0,
|
||||
doc: /* Return the frame that window WINDOW is on.
|
||||
WINDOW must be a valid window and defaults to the selected one. */)
|
||||
(Lisp_Object window)
|
||||
|
@ -556,7 +565,7 @@ Return nil for a window with no parent (e.g. a root window). */)
|
|||
return decode_valid_window (window)->parent;
|
||||
}
|
||||
|
||||
DEFUN ("window-top-child", Fwindow_top_child, Swindow_top_child, 1, 1, 0,
|
||||
DEFUN ("window-top-child", Fwindow_top_child, Swindow_top_child, 0, 1, 0,
|
||||
doc: /* Return the topmost child window of window WINDOW.
|
||||
WINDOW must be a valid window and defaults to the selected one.
|
||||
Return nil if WINDOW is a live window (live windows have no children).
|
||||
|
@ -564,11 +573,10 @@ Return nil if WINDOW is an internal window whose children form a
|
|||
horizontal combination. */)
|
||||
(Lisp_Object window)
|
||||
{
|
||||
CHECK_WINDOW (window);
|
||||
return decode_valid_window (window)->vchild;
|
||||
}
|
||||
|
||||
DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 1, 1, 0,
|
||||
DEFUN ("window-left-child", Fwindow_left_child, Swindow_left_child, 0, 1, 0,
|
||||
doc: /* Return the leftmost child window of window WINDOW.
|
||||
WINDOW must be a valid window and defaults to the selected one.
|
||||
Return nil if WINDOW is a live window (live windows have no children).
|
||||
|
@ -576,7 +584,6 @@ Return nil if WINDOW is an internal window whose children form a
|
|||
vertical combination. */)
|
||||
(Lisp_Object window)
|
||||
{
|
||||
CHECK_WINDOW (window);
|
||||
return decode_valid_window (window)->hchild;
|
||||
}
|
||||
|
||||
|
@ -598,7 +605,7 @@ Return nil if WINDOW has no previous sibling. */)
|
|||
return decode_valid_window (window)->prev;
|
||||
}
|
||||
|
||||
DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 1, 1, 0,
|
||||
DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 0, 1, 0,
|
||||
doc: /* Return combination limit of window WINDOW.
|
||||
WINDOW must be a valid window and defaults to the selected one.
|
||||
If the return value is nil, child windows of WINDOW can be recombined with
|
||||
|
@ -829,10 +836,8 @@ Note that if `automatic-hscrolling' is non-nil, you cannot scroll the
|
|||
window so that the location of point moves off-window. */)
|
||||
(Lisp_Object window, Lisp_Object ncol)
|
||||
{
|
||||
struct window *w = decode_live_window (window);
|
||||
|
||||
CHECK_NUMBER (ncol);
|
||||
return set_window_hscroll (w, XINT (ncol));
|
||||
return set_window_hscroll (decode_live_window (window), XINT (ncol));
|
||||
}
|
||||
|
||||
DEFUN ("window-redisplay-end-trigger", Fwindow_redisplay_end_trigger,
|
||||
|
@ -877,11 +882,8 @@ header line, and/or mode line. For the edges of just the text area, use
|
|||
{
|
||||
register struct window *w = decode_valid_window (window);
|
||||
|
||||
return Fcons (make_number (WINDOW_LEFT_EDGE_COL (w)),
|
||||
Fcons (make_number (WINDOW_TOP_EDGE_LINE (w)),
|
||||
Fcons (make_number (WINDOW_RIGHT_EDGE_COL (w)),
|
||||
Fcons (make_number (WINDOW_BOTTOM_EDGE_LINE (w)),
|
||||
Qnil))));
|
||||
return quad (WINDOW_LEFT_EDGE_COL (w), WINDOW_TOP_EDGE_LINE (w),
|
||||
WINDOW_RIGHT_EDGE_COL (w), WINDOW_BOTTOM_EDGE_LINE (w));
|
||||
}
|
||||
|
||||
DEFUN ("window-pixel-edges", Fwindow_pixel_edges, Swindow_pixel_edges, 0, 1, 0,
|
||||
|
@ -900,11 +902,8 @@ of just the text area, use `window-inside-pixel-edges'. */)
|
|||
{
|
||||
register struct window *w = decode_valid_window (window);
|
||||
|
||||
return Fcons (make_number (WINDOW_LEFT_EDGE_X (w)),
|
||||
Fcons (make_number (WINDOW_TOP_EDGE_Y (w)),
|
||||
Fcons (make_number (WINDOW_RIGHT_EDGE_X (w)),
|
||||
Fcons (make_number (WINDOW_BOTTOM_EDGE_Y (w)),
|
||||
Qnil))));
|
||||
return quad (WINDOW_LEFT_EDGE_X (w), WINDOW_TOP_EDGE_Y (w),
|
||||
WINDOW_RIGHT_EDGE_X (w), WINDOW_BOTTOM_EDGE_Y (w));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -946,13 +945,13 @@ of just the text area, use `window-inside-absolute-pixel-edges'. */)
|
|||
{
|
||||
register struct window *w = decode_valid_window (window);
|
||||
int add_x, add_y;
|
||||
|
||||
calc_absolute_offset (w, &add_x, &add_y);
|
||||
|
||||
return Fcons (make_number (WINDOW_LEFT_EDGE_X (w) + add_x),
|
||||
Fcons (make_number (WINDOW_TOP_EDGE_Y (w) + add_y),
|
||||
Fcons (make_number (WINDOW_RIGHT_EDGE_X (w) + add_x),
|
||||
Fcons (make_number (WINDOW_BOTTOM_EDGE_Y (w) + add_y),
|
||||
Qnil))));
|
||||
return quad (WINDOW_LEFT_EDGE_X (w) + add_x,
|
||||
WINDOW_TOP_EDGE_Y (w) + add_y,
|
||||
WINDOW_RIGHT_EDGE_X (w) + add_x,
|
||||
WINDOW_BOTTOM_EDGE_Y (w) + add_y);
|
||||
}
|
||||
|
||||
DEFUN ("window-inside-edges", Fwindow_inside_edges, Swindow_inside_edges, 0, 1, 0,
|
||||
|
@ -971,16 +970,16 @@ display margins, fringes, header line, and/or mode line. */)
|
|||
{
|
||||
register struct window *w = decode_live_window (window);
|
||||
|
||||
return list4 (make_number (WINDOW_BOX_LEFT_EDGE_COL (w)
|
||||
+ WINDOW_LEFT_MARGIN_COLS (w)
|
||||
+ WINDOW_LEFT_FRINGE_COLS (w)),
|
||||
make_number (WINDOW_TOP_EDGE_LINE (w)
|
||||
+ WINDOW_HEADER_LINE_LINES (w)),
|
||||
make_number (WINDOW_BOX_RIGHT_EDGE_COL (w)
|
||||
- WINDOW_RIGHT_MARGIN_COLS (w)
|
||||
- WINDOW_RIGHT_FRINGE_COLS (w)),
|
||||
make_number (WINDOW_BOTTOM_EDGE_LINE (w)
|
||||
- WINDOW_MODE_LINE_LINES (w)));
|
||||
return quad (WINDOW_BOX_LEFT_EDGE_COL (w)
|
||||
+ WINDOW_LEFT_MARGIN_COLS (w)
|
||||
+ WINDOW_LEFT_FRINGE_COLS (w),
|
||||
WINDOW_TOP_EDGE_LINE (w)
|
||||
+ WINDOW_HEADER_LINE_LINES (w),
|
||||
WINDOW_BOX_RIGHT_EDGE_COL (w)
|
||||
- WINDOW_RIGHT_MARGIN_COLS (w)
|
||||
- WINDOW_RIGHT_FRINGE_COLS (w),
|
||||
WINDOW_BOTTOM_EDGE_LINE (w)
|
||||
- WINDOW_MODE_LINE_LINES (w));
|
||||
}
|
||||
|
||||
DEFUN ("window-inside-pixel-edges", Fwindow_inside_pixel_edges, Swindow_inside_pixel_edges, 0, 1, 0,
|
||||
|
@ -998,16 +997,16 @@ display margins, fringes, header line, and/or mode line. */)
|
|||
{
|
||||
register struct window *w = decode_live_window (window);
|
||||
|
||||
return list4 (make_number (WINDOW_BOX_LEFT_EDGE_X (w)
|
||||
+ WINDOW_LEFT_MARGIN_WIDTH (w)
|
||||
+ WINDOW_LEFT_FRINGE_WIDTH (w)),
|
||||
make_number (WINDOW_TOP_EDGE_Y (w)
|
||||
+ WINDOW_HEADER_LINE_HEIGHT (w)),
|
||||
make_number (WINDOW_BOX_RIGHT_EDGE_X (w)
|
||||
- WINDOW_RIGHT_MARGIN_WIDTH (w)
|
||||
- WINDOW_RIGHT_FRINGE_WIDTH (w)),
|
||||
make_number (WINDOW_BOTTOM_EDGE_Y (w)
|
||||
- WINDOW_MODE_LINE_HEIGHT (w)));
|
||||
return quad (WINDOW_BOX_LEFT_EDGE_X (w)
|
||||
+ WINDOW_LEFT_MARGIN_WIDTH (w)
|
||||
+ WINDOW_LEFT_FRINGE_WIDTH (w),
|
||||
WINDOW_TOP_EDGE_Y (w)
|
||||
+ WINDOW_HEADER_LINE_HEIGHT (w),
|
||||
WINDOW_BOX_RIGHT_EDGE_X (w)
|
||||
- WINDOW_RIGHT_MARGIN_WIDTH (w)
|
||||
- WINDOW_RIGHT_FRINGE_WIDTH (w),
|
||||
WINDOW_BOTTOM_EDGE_Y (w)
|
||||
- WINDOW_MODE_LINE_HEIGHT (w));
|
||||
}
|
||||
|
||||
DEFUN ("window-inside-absolute-pixel-edges",
|
||||
|
@ -1027,18 +1026,19 @@ display margins, fringes, header line, and/or mode line. */)
|
|||
{
|
||||
register struct window *w = decode_live_window (window);
|
||||
int add_x, add_y;
|
||||
|
||||
calc_absolute_offset (w, &add_x, &add_y);
|
||||
|
||||
return list4 (make_number (WINDOW_BOX_LEFT_EDGE_X (w)
|
||||
+ WINDOW_LEFT_MARGIN_WIDTH (w)
|
||||
+ WINDOW_LEFT_FRINGE_WIDTH (w) + add_x),
|
||||
make_number (WINDOW_TOP_EDGE_Y (w)
|
||||
+ WINDOW_HEADER_LINE_HEIGHT (w) + add_y),
|
||||
make_number (WINDOW_BOX_RIGHT_EDGE_X (w)
|
||||
- WINDOW_RIGHT_MARGIN_WIDTH (w)
|
||||
- WINDOW_RIGHT_FRINGE_WIDTH (w) + add_x),
|
||||
make_number (WINDOW_BOTTOM_EDGE_Y (w)
|
||||
- WINDOW_MODE_LINE_HEIGHT (w) + add_y));
|
||||
return quad (WINDOW_BOX_LEFT_EDGE_X (w)
|
||||
+ WINDOW_LEFT_MARGIN_WIDTH (w)
|
||||
+ WINDOW_LEFT_FRINGE_WIDTH (w) + add_x,
|
||||
WINDOW_TOP_EDGE_Y (w)
|
||||
+ WINDOW_HEADER_LINE_HEIGHT (w) + add_y,
|
||||
WINDOW_BOX_RIGHT_EDGE_X (w)
|
||||
- WINDOW_RIGHT_MARGIN_WIDTH (w)
|
||||
- WINDOW_RIGHT_FRINGE_WIDTH (w) + add_x,
|
||||
WINDOW_BOTTOM_EDGE_Y (w)
|
||||
- WINDOW_MODE_LINE_HEIGHT (w) + add_y);
|
||||
}
|
||||
|
||||
/* Test if the character at column X, row Y is within window W.
|
||||
|
@ -1624,8 +1624,7 @@ display row, and VPOS is the row number (0-based) containing POS. */)
|
|||
{
|
||||
Lisp_Object part = Qnil;
|
||||
if (!fully_p)
|
||||
part = list4 (make_number (rtop), make_number (rbot),
|
||||
make_number (rowh), make_number (vpos));
|
||||
part = quad (rtop, rbot, rowh, vpos);
|
||||
in_window = Fcons (make_number (x),
|
||||
Fcons (make_number (y), part));
|
||||
}
|
||||
|
@ -1691,23 +1690,18 @@ Return nil if window display is not up-to-date. In that case, use
|
|||
if (!WINDOW_WANTS_HEADER_LINE_P (w))
|
||||
return Qnil;
|
||||
row = MATRIX_HEADER_LINE_ROW (w->current_matrix);
|
||||
if (!row->enabled_p)
|
||||
return Qnil;
|
||||
return list4 (make_number (row->height),
|
||||
make_number (0), make_number (0),
|
||||
make_number (0));
|
||||
return row->enabled_p ? quad (row->height, 0, 0, 0) : Qnil;
|
||||
}
|
||||
|
||||
if (EQ (line, Qmode_line))
|
||||
{
|
||||
row = MATRIX_MODE_LINE_ROW (w->current_matrix);
|
||||
if (!row->enabled_p)
|
||||
return Qnil;
|
||||
return list4 (make_number (row->height),
|
||||
make_number (0), /* not accurate */
|
||||
make_number (WINDOW_HEADER_LINE_HEIGHT (w)
|
||||
+ window_text_bottom_y (w)),
|
||||
make_number (0));
|
||||
return (row->enabled_p ?
|
||||
quad (row->height,
|
||||
0, /* not accurate */
|
||||
WINDOW_HEADER_LINE_HEIGHT (w)
|
||||
+ window_text_bottom_y (w), 0)
|
||||
: Qnil);
|
||||
}
|
||||
|
||||
CHECK_NUMBER (line);
|
||||
|
@ -1736,10 +1730,7 @@ Return nil if window display is not up-to-date. In that case, use
|
|||
|
||||
found_row:
|
||||
crop = max (0, (row->y + row->height) - max_y);
|
||||
return list4 (make_number (row->height + min (0, row->y) - crop),
|
||||
make_number (i),
|
||||
make_number (row->y),
|
||||
make_number (crop));
|
||||
return quad (row->height + min (0, row->y) - crop, i, row->y, crop);
|
||||
}
|
||||
|
||||
DEFUN ("window-dedicated-p", Fwindow_dedicated_p, Swindow_dedicated_p,
|
||||
|
@ -6315,10 +6306,9 @@ Value is a list of the form (LEFT-WIDTH RIGHT-WIDTH OUTSIDE-MARGINS). */)
|
|||
{
|
||||
struct window *w = decode_live_window (window);
|
||||
|
||||
return Fcons (make_number (WINDOW_LEFT_FRINGE_WIDTH (w)),
|
||||
Fcons (make_number (WINDOW_RIGHT_FRINGE_WIDTH (w)),
|
||||
Fcons ((WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)
|
||||
? Qt : Qnil), Qnil)));
|
||||
return list3 (make_number (WINDOW_LEFT_FRINGE_WIDTH (w)),
|
||||
make_number (WINDOW_RIGHT_FRINGE_WIDTH (w)),
|
||||
WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) ? Qt : Qnil);
|
||||
}
|
||||
|
||||
|
||||
|
@ -6387,12 +6377,12 @@ value. */)
|
|||
(Lisp_Object window)
|
||||
{
|
||||
struct window *w = decode_live_window (window);
|
||||
return Fcons (make_number ((WINDOW_CONFIG_SCROLL_BAR_WIDTH (w)
|
||||
|
||||
return list4 (make_number ((WINDOW_CONFIG_SCROLL_BAR_WIDTH (w)
|
||||
? WINDOW_CONFIG_SCROLL_BAR_WIDTH (w)
|
||||
: WINDOW_SCROLL_BAR_AREA_WIDTH (w))),
|
||||
Fcons (make_number (WINDOW_SCROLL_BAR_COLS (w)),
|
||||
Fcons (w->vertical_scroll_bar_type,
|
||||
Fcons (Qnil, Qnil))));
|
||||
make_number (WINDOW_SCROLL_BAR_COLS (w)),
|
||||
w->vertical_scroll_bar_type, Qnil);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue