Commit e8c17b81 authored by Paul Eggert's avatar Paul Eggert

* window.h (WSET): Remove.

Replace all uses with calls to new setter functions.
Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
(WINDOW_INLINE): New macro.
(wset_buffer, wset_frame, wset_left_col, wset_next, wset_prev)
(wset_redisplay_end_trigger, wset_top_line, wset_total_cols)
(wset_total_lines, wset_vertical_scroll_bar)
(wset_window_end_pos, wset_window_end_valid)
(wset_window_end_vpos): New setter functions.
* window.c (WINDOW_INLINE):
Define to EXTERN_INLINE, so that the corresponding functions
are compiled into code.
(wset_combination_limit, wset_dedicated, wset_display_table)
(wset_hchild, wset_left_fringe_width, wset_left_margin_cols)
(wset_new_normal, wset_new_total, wset_next_buffers)
(wset_normal_cols, wset_normal_lines, wset_parent, wset_pointm)
(wset_prev_buffers, wset_right_fringe_width)
(wset_right_margin_cols, wset_scroll_bar_width, wset_start)
(wset_temslot, wset_vchild, wset_vertical_scroll_bar_type)
(wset_window_parameters):
* xdisp.c (wset_base_line_number, wset_base_line_pos)
(wset_column_number_displayed, wset_region_showing):
New setter functions.

Fixes: debbugs:12215
parent 3f22b86f
2012-08-18 Paul Eggert <eggert@cs.ucla.edu>
* window.h (WSET): Remove (Bug#12215).
Replace all uses with calls to new setter functions.
Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
(WINDOW_INLINE): New macro.
(wset_buffer, wset_frame, wset_left_col, wset_next, wset_prev)
(wset_redisplay_end_trigger, wset_top_line, wset_total_cols)
(wset_total_lines, wset_vertical_scroll_bar)
(wset_window_end_pos, wset_window_end_valid)
(wset_window_end_vpos): New setter functions.
* window.c (WINDOW_INLINE):
Define to EXTERN_INLINE, so that the corresponding functions
are compiled into code.
(wset_combination_limit, wset_dedicated, wset_display_table)
(wset_hchild, wset_left_fringe_width, wset_left_margin_cols)
(wset_new_normal, wset_new_total, wset_next_buffers)
(wset_normal_cols, wset_normal_lines, wset_parent, wset_pointm)
(wset_prev_buffers, wset_right_fringe_width)
(wset_right_margin_cols, wset_scroll_bar_width, wset_start)
(wset_temslot, wset_vchild, wset_vertical_scroll_bar_type)
(wset_window_parameters):
* xdisp.c (wset_base_line_number, wset_base_line_pos)
(wset_column_number_displayed, wset_region_showing):
New setter functions.
* termhooks.h (TSET): Remove (Bug#12215).
Replace all uses with calls to new setter functions.
Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
......
......@@ -621,7 +621,7 @@ adjust_glyph_matrix (struct window *w, struct glyph_matrix *matrix, int x, int y
are invalidated below. */
if (INTEGERP (w->window_end_vpos)
&& XFASTINT (w->window_end_vpos) >= i)
WSET (w, window_end_valid, Qnil);
wset_window_end_valid (w, Qnil);
while (i < matrix->nrows)
matrix->rows[i++].enabled_p = 0;
......@@ -878,7 +878,7 @@ clear_window_matrices (struct window *w, int desired_p)
else
{
clear_glyph_matrix (w->current_matrix);
WSET (w, window_end_valid, Qnil);
wset_window_end_valid (w, Qnil);
}
}
......@@ -1887,14 +1887,14 @@ adjust_frame_glyphs_initially (void)
int top_margin = FRAME_TOP_MARGIN (sf);
/* Do it for the root window. */
WSET (root, top_line, make_number (top_margin));
WSET (root, total_lines, make_number (frame_lines - 1 - top_margin));
WSET (root, total_cols, make_number (frame_cols));
wset_top_line (root, make_number (top_margin));
wset_total_lines (root, make_number (frame_lines - 1 - top_margin));
wset_total_cols (root, make_number (frame_cols));
/* Do it for the mini-buffer window. */
WSET (mini, top_line, make_number (frame_lines - 1));
WSET (mini, total_lines, make_number (1));
WSET (mini, total_cols, make_number (frame_cols));
wset_top_line (mini, make_number (frame_lines - 1));
wset_total_lines (mini, make_number (1));
wset_total_cols (mini, make_number (frame_cols));
adjust_frame_glyphs (sf);
glyphs_initialized_initially_p = 1;
......@@ -2169,7 +2169,7 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
fset_menu_bar_window (f, make_window ());
w = XWINDOW (f->menu_bar_window);
XSETFRAME (frame, f);
WSET (w, frame, frame);
wset_frame (w, frame);
w->pseudo_window_p = 1;
}
else
......@@ -2177,10 +2177,10 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
/* Set window dimensions to frame dimensions and allocate or
adjust glyph matrices of W. */
WSET (w, top_line, make_number (0));
WSET (w, left_col, make_number (0));
WSET (w, total_lines, make_number (FRAME_MENU_BAR_LINES (f)));
WSET (w, total_cols, make_number (FRAME_TOTAL_COLS (f)));
wset_top_line (w, make_number (0));
wset_left_col (w, make_number (0));
wset_total_lines (w, make_number (FRAME_MENU_BAR_LINES (f)));
wset_total_cols (w, make_number (FRAME_TOTAL_COLS (f)));
allocate_matrices_for_window_redisplay (w);
}
#endif /* not USE_X_TOOLKIT && not USE_GTK */
......@@ -2197,16 +2197,16 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
fset_tool_bar_window (f, make_window ());
w = XWINDOW (f->tool_bar_window);
XSETFRAME (frame, f);
WSET (w, frame, frame);
wset_frame (w, frame);
w->pseudo_window_p = 1;
}
else
w = XWINDOW (f->tool_bar_window);
WSET (w, top_line, make_number (FRAME_MENU_BAR_LINES (f)));
WSET (w, left_col, make_number (0));
WSET (w, total_lines, make_number (FRAME_TOOL_BAR_LINES (f)));
WSET (w, total_cols, make_number (FRAME_TOTAL_COLS (f)));
wset_top_line (w, make_number (FRAME_MENU_BAR_LINES (f)));
wset_left_col (w, make_number (0));
wset_total_lines (w, make_number (FRAME_TOOL_BAR_LINES (f)));
wset_total_cols (w, make_number (FRAME_TOTAL_COLS (f)));
allocate_matrices_for_window_redisplay (w);
}
#endif
......@@ -5744,7 +5744,7 @@ change_frame_size_1 (register struct frame *f, int newheight, int newwidth, int
FrameCols (FRAME_TTY (f)) = newwidth;
if (WINDOWP (f->tool_bar_window))
WSET (XWINDOW (f->tool_bar_window), total_cols, make_number (newwidth));
wset_total_cols (XWINDOW (f->tool_bar_window), make_number (newwidth));
}
FRAME_LINES (f) = newheight;
......
......@@ -148,8 +148,8 @@ set_menu_bar_lines_1 (Lisp_Object window, int n)
struct window *w = XWINDOW (window);
w->last_modified = 0;
WSET (w, top_line, make_number (XFASTINT (w->top_line) + n));
WSET (w, total_lines, make_number (XFASTINT (w->total_lines) - n));
wset_top_line (w, make_number (XFASTINT (w->top_line) + n));
wset_total_lines (w, make_number (XFASTINT (w->total_lines) - n));
/* Handle just the top child in a vertical split. */
if (!NILP (w->vchild))
......@@ -305,20 +305,20 @@ make_frame (int mini_p)
if (mini_p)
{
mini_window = make_window ();
WSET (XWINDOW (root_window), next, mini_window);
WSET (XWINDOW (mini_window), prev, root_window);
wset_next (XWINDOW (root_window), mini_window);
wset_prev (XWINDOW (mini_window), root_window);
XWINDOW (mini_window)->mini = 1;
WSET (XWINDOW (mini_window), frame, frame);
wset_frame (XWINDOW (mini_window), frame);
fset_minibuffer_window (f, mini_window);
}
else
{
mini_window = Qnil;
WSET (XWINDOW (root_window), next, Qnil);
wset_next (XWINDOW (root_window), Qnil);
fset_minibuffer_window (f, Qnil);
}
WSET (XWINDOW (root_window), frame, frame);
wset_frame (XWINDOW (root_window), frame);
/* 10 is arbitrary,
just so that there is "something there."
......@@ -327,21 +327,21 @@ make_frame (int mini_p)
SET_FRAME_COLS (f, 10);
FRAME_LINES (f) = 10;
WSET (XWINDOW (root_window), total_cols, make_number (10));
WSET (XWINDOW (root_window), total_lines, make_number (mini_p ? 9 : 10));
wset_total_cols (XWINDOW (root_window), make_number (10));
wset_total_lines (XWINDOW (root_window), make_number (mini_p ? 9 : 10));
if (mini_p)
{
WSET (XWINDOW (mini_window), total_cols, make_number (10));
WSET (XWINDOW (mini_window), top_line, make_number (9));
WSET (XWINDOW (mini_window), total_lines, make_number (1));
wset_total_cols (XWINDOW (mini_window), make_number (10));
wset_top_line (XWINDOW (mini_window), make_number (9));
wset_total_lines (XWINDOW (mini_window), make_number (1));
}
/* Choose a buffer for the frame's root window. */
{
Lisp_Object buf;
WSET (XWINDOW (root_window), buffer, Qt);
wset_buffer (XWINDOW (root_window), Qt);
buf = Fcurrent_buffer ();
/* If buf is a 'hidden' buffer (i.e. one whose name starts with
a space), try to find another one. */
......@@ -360,7 +360,7 @@ make_frame (int mini_p)
if (mini_p)
{
WSET (XWINDOW (mini_window), buffer, Qt);
wset_buffer (XWINDOW (mini_window), Qt);
set_window_buffer (mini_window,
(NILP (Vminibuffer_list)
? get_minibuffer (0)
......@@ -458,9 +458,9 @@ make_minibuffer_frame (void)
mini_window = f->root_window;
fset_minibuffer_window (f, mini_window);
XWINDOW (mini_window)->mini = 1;
WSET (XWINDOW (mini_window), next, Qnil);
WSET (XWINDOW (mini_window), prev, Qnil);
WSET (XWINDOW (mini_window), frame, frame);
wset_next (XWINDOW (mini_window), Qnil);
wset_prev (XWINDOW (mini_window), Qnil);
wset_frame (XWINDOW (mini_window), frame);
/* Put the proper buffer in that window. */
......
......@@ -2003,7 +2003,7 @@ whether or not it is currently displayed in some window. */)
old_buffer = w->buffer;
old_charpos = XMARKER (w->pointm)->charpos;
old_bytepos = XMARKER (w->pointm)->bytepos;
WSET (w, buffer, Fcurrent_buffer ());
wset_buffer (w, Fcurrent_buffer ());
set_marker_both (w->pointm, w->buffer,
BUF_PT (current_buffer), BUF_PT_BYTE (current_buffer));
}
......@@ -2146,7 +2146,7 @@ whether or not it is currently displayed in some window. */)
if (BUFFERP (old_buffer))
{
WSET (w, buffer, old_buffer);
wset_buffer (w, old_buffer);
set_marker_both (w->pointm, w->buffer,
old_charpos, old_bytepos);
}
......
......@@ -3698,7 +3698,7 @@ overwriting cursor (usually when cursor on a tab) */
{
bar = XNS_SCROLL_BAR (window->vertical_scroll_bar);
[bar removeFromSuperview];
WSET (window, vertical_scroll_bar, Qnil);
wset_vertical_scroll_bar (window, Qnil);
}
ns_clear_frame_area (f, sb_left, top, width, height);
UNBLOCK_INPUT;
......@@ -3709,7 +3709,7 @@ overwriting cursor (usually when cursor on a tab) */
{
ns_clear_frame_area (f, sb_left, top, width, height);
bar = [[EmacsScroller alloc] initFrame: r window: win];
WSET (window, vertical_scroll_bar, make_save_value (bar, 0));
wset_vertical_scroll_bar (window, make_save_value (bar, 0));
}
else
{
......@@ -6388,7 +6388,7 @@ - (void)dealloc
{
NSTRACE (EmacsScroller_dealloc);
if (!NILP (win))
WSET (XWINDOW (win), vertical_scroll_bar, Qnil);
wset_vertical_scroll_bar (XWINDOW (win), Qnil);
[super dealloc];
}
......
......@@ -5647,8 +5647,8 @@ Text larger than the specified size is clipped. */)
/* Set up the frame's root window. */
w = XWINDOW (FRAME_ROOT_WINDOW (f));
WSET (w, left_col, make_number (0));
WSET (w, top_line, make_number (0));
wset_left_col (w, make_number (0));
wset_top_line (w, make_number (0));
if (CONSP (Vx_max_tooltip_size)
&& INTEGERP (XCAR (Vx_max_tooltip_size))
......@@ -5656,13 +5656,13 @@ Text larger than the specified size is clipped. */)
&& INTEGERP (XCDR (Vx_max_tooltip_size))
&& XINT (XCDR (Vx_max_tooltip_size)) > 0)
{
WSET (w, total_cols, XCAR (Vx_max_tooltip_size));
WSET (w, total_lines, XCDR (Vx_max_tooltip_size));
wset_total_cols (w, XCAR (Vx_max_tooltip_size));
wset_total_lines (w, XCDR (Vx_max_tooltip_size));
}
else
{
WSET (w, total_cols, make_number (80));
WSET (w, total_lines, make_number (40));
wset_total_cols (w, make_number (80));
wset_total_lines (w, make_number (40));
}
FRAME_TOTAL_COLS (f) = XINT (w->total_cols);
......@@ -5733,7 +5733,7 @@ Text larger than the specified size is clipped. */)
/* w->total_cols and FRAME_TOTAL_COLS want the width in columns,
not in pixels. */
width /= WINDOW_FRAME_COLUMN_WIDTH (w);
WSET (w, total_cols, make_number (width));
wset_total_cols (w, make_number (width));
FRAME_TOTAL_COLS (f) = width;
adjust_glyphs (f);
w->pseudo_window_p = 1;
......
......@@ -3670,7 +3670,7 @@ x_scroll_bar_remove (struct scroll_bar *bar)
my_destroy_window (f, SCROLL_BAR_W32_WINDOW (bar));
/* Dissociate this scroll bar from its window. */
WSET (XWINDOW (bar->window), vertical_scroll_bar, Qnil);
wset_vertical_scroll_bar (XWINDOW (bar->window), Qnil);
UNBLOCK_INPUT;
}
......@@ -3808,7 +3808,7 @@ w32_set_vertical_scroll_bar (struct window *w,
w32_set_scroll_bar_thumb (bar, portion, position, whole);
XSETVECTOR (barobj, bar);
WSET (w, vertical_scroll_bar, barobj);
wset_vertical_scroll_bar (w, barobj);
}
......
This diff is collapsed.
......@@ -22,6 +22,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include "dispextern.h"
INLINE_HEADER_BEGIN
#ifndef WINDOW_INLINE
# define WINDOW_INLINE INLINE
#endif
extern Lisp_Object Qleft, Qright;
/* Windows are allocated as if they were vectors, but then the
......@@ -86,10 +91,6 @@ struct cursor_pos
int hpos, vpos;
};
/* Most code should use this macro to set Lisp fields in struct window. */
#define WSET(w, field, value) ((w)->field = (value))
struct window
{
/* This is for Lisp; the terminal code does not refer to it. */
......@@ -348,6 +349,75 @@ struct window
ptrdiff_t window_end_bytepos;
};
/* Most code should use these functions to set Lisp fields in struct
window. */
WINDOW_INLINE void
wset_buffer (struct window *w, Lisp_Object val)
{
w->buffer = val;
}
WINDOW_INLINE void
wset_frame (struct window *w, Lisp_Object val)
{
w->frame = val;
}
WINDOW_INLINE void
wset_left_col (struct window *w, Lisp_Object val)
{
w->left_col = val;
}
WINDOW_INLINE void
wset_next (struct window *w, Lisp_Object val)
{
w->next = val;
}
WINDOW_INLINE void
wset_prev (struct window *w, Lisp_Object val)
{
w->prev = val;
}
WINDOW_INLINE void
wset_redisplay_end_trigger (struct window *w, Lisp_Object val)
{
w->redisplay_end_trigger = val;
}
WINDOW_INLINE void
wset_top_line (struct window *w, Lisp_Object val)
{
w->top_line = val;
}
WINDOW_INLINE void
wset_total_cols (struct window *w, Lisp_Object val)
{
w->total_cols = val;
}
WINDOW_INLINE void
wset_total_lines (struct window *w, Lisp_Object val)
{
w->total_lines = val;
}
WINDOW_INLINE void
wset_vertical_scroll_bar (struct window *w, Lisp_Object val)
{
w->vertical_scroll_bar = val;
}
WINDOW_INLINE void
wset_window_end_pos (struct window *w, Lisp_Object val)
{
w->window_end_pos = val;
}
WINDOW_INLINE void
wset_window_end_valid (struct window *w, Lisp_Object val)
{
w->window_end_valid = val;
}
WINDOW_INLINE void
wset_window_end_vpos (struct window *w, Lisp_Object val)
{
w->window_end_vpos = val;
}
/* 1 if W is a minibuffer window. */
#define MINI_WINDOW_P(W) ((W)->mini)
......@@ -916,4 +986,6 @@ extern void init_window (void);
extern void syms_of_window (void);
extern void keys_of_window (void);
INLINE_HEADER_END
#endif /* not WINDOW_H_INCLUDED */
This diff is collapsed.
......@@ -5064,20 +5064,20 @@ Text larger than the specified size is clipped. */)
/* Set up the frame's root window. */
w = XWINDOW (FRAME_ROOT_WINDOW (f));
WSET (w, left_col, make_number (0));
WSET (w, top_line, make_number (0));
wset_left_col (w, make_number (0));
wset_top_line (w, make_number (0));
if (CONSP (Vx_max_tooltip_size)
&& RANGED_INTEGERP (1, XCAR (Vx_max_tooltip_size), INT_MAX)
&& RANGED_INTEGERP (1, XCDR (Vx_max_tooltip_size), INT_MAX))
{
WSET (w, total_cols, XCAR (Vx_max_tooltip_size));
WSET (w, total_lines, XCDR (Vx_max_tooltip_size));
wset_total_cols (w, XCAR (Vx_max_tooltip_size));
wset_total_lines (w, XCDR (Vx_max_tooltip_size));
}
else
{
WSET (w, total_cols, make_number (80));
WSET (w, total_lines, make_number (40));
wset_total_cols (w, make_number (80));
wset_total_lines (w, make_number (40));
}
FRAME_TOTAL_COLS (f) = XINT (w->total_cols);
......@@ -5147,7 +5147,7 @@ Text larger than the specified size is clipped. */)
/* w->total_cols and FRAME_TOTAL_COLS want the width in columns,
not in pixels. */
width /= WINDOW_FRAME_COLUMN_WIDTH (w);
WSET (w, total_cols, make_number (width));
wset_total_cols (w, make_number (width));
FRAME_TOTAL_COLS (f) = width;
adjust_glyphs (f);
clear_glyph_matrix (w->desired_matrix);
......
......@@ -5181,7 +5181,7 @@ x_scroll_bar_remove (struct scroll_bar *bar)
#endif
/* Dissociate this scroll bar from its window. */
WSET (XWINDOW (bar->window), vertical_scroll_bar, Qnil);
wset_vertical_scroll_bar (XWINDOW (bar->window), Qnil);
UNBLOCK_INPUT;
}
......@@ -5395,7 +5395,7 @@ XTset_vertical_scroll_bar (struct window *w, int portion, int whole, int positio
#endif /* not USE_TOOLKIT_SCROLL_BARS */
XSETVECTOR (barobj, bar);
WSET (w, vertical_scroll_bar, barobj);
wset_vertical_scroll_bar (w, barobj);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment