comparison src/window.c @ 438:84b14dcb0985 r21-2-27

Import from CVS: tag r21-2-27
author cvs
date Mon, 13 Aug 2007 11:32:25 +0200
parents 9d177e8d4150
children 8de8e3f6228a
comparison
equal deleted inserted replaced
437:e2a4e8b94b82 438:84b14dcb0985
1146 (con_dev_or_frame)) 1146 (con_dev_or_frame))
1147 { 1147 {
1148 return FRAME_MINIBUF_WINDOW (decode_frame_or_selected (con_dev_or_frame)); 1148 return FRAME_MINIBUF_WINDOW (decode_frame_or_selected (con_dev_or_frame));
1149 } 1149 }
1150 1150
1151 DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, 1, 1, 0, /* 1151 DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, 0, 1, 0, /*
1152 Return non-nil if WINDOW is a minibuffer window. 1152 Return non-nil if WINDOW is a minibuffer window.
1153 */ 1153 */
1154 (window)) 1154 (window))
1155 { 1155 {
1156 return MINI_WINDOW_P (decode_window (window)) ? Qt : Qnil; 1156 return MINI_WINDOW_P (decode_window (window)) ? Qt : Qnil;
1435 (window)) 1435 (window))
1436 { 1436 {
1437 return make_int (decode_window (window)->hscroll); 1437 return make_int (decode_window (window)->hscroll);
1438 } 1438 }
1439 1439
1440 #ifdef MODELINE_IS_SCROLLABLE
1441 DEFUN ("modeline-hscroll", Fmodeline_hscroll, 0, 1, 0, /* 1440 DEFUN ("modeline-hscroll", Fmodeline_hscroll, 0, 1, 0, /*
1442 Return the number of columns by which WINDOW's modeline is scrolled from 1441 Return the horizontal scrolling ammount of WINDOW's modeline.
1443 left margin. If the window has no modeline, return nil. 1442 If the window has no modeline, return nil.
1444 */ 1443 */
1445 (window)) 1444 (window))
1446 { 1445 {
1447 struct window *w = decode_window (window); 1446 struct window *w = decode_window (window);
1448 1447
1449 return (WINDOW_HAS_MODELINE_P (w)) ? make_int (w->modeline_hscroll) : Qnil; 1448 return (WINDOW_HAS_MODELINE_P (w)) ? make_int ((int) w->modeline_hscroll) :
1449 Qnil;
1450 } 1450 }
1451 1451
1452 DEFUN ("set-modeline-hscroll", Fset_modeline_hscroll, 2, 2, 0, /* 1452 DEFUN ("set-modeline-hscroll", Fset_modeline_hscroll, 2, 2, 0, /*
1453 Set number of columns WINDOW's modeline is scrolled from left margin to NCOL. 1453 Set the horizontal scrolling ammount of WINDOW's modeline to NCOL.
1454 NCOL should be zero or positive. If NCOL is negative, it will be forced to 0. 1454 If NCOL is negative, it will silently be forced to 0.
1455 If the window has no modeline, do nothing and return nil. 1455 If the window has no modeline, return nil. Otherwise, return the actual
1456 value that was set.
1456 */ 1457 */
1457 (window, ncol)) 1458 (window, ncol))
1458 { 1459 {
1459 struct window *w = decode_window (window); 1460 struct window *w = decode_window (window);
1460 1461
1461 if (WINDOW_HAS_MODELINE_P (w)) 1462 if (WINDOW_HAS_MODELINE_P (w))
1462 { 1463 {
1463 int ncols; 1464 Charcount ncols;
1465
1464 CHECK_INT (ncol); 1466 CHECK_INT (ncol);
1465 ncols = XINT (ncol); 1467 ncols = (XINT (ncol) <= 0) ? 0 : (Charcount) XINT (ncol);
1466 if (ncols < 0) ncols = 0; 1468 if (ncols != w->modeline_hscroll)
1467 if (w->modeline_hscroll != ncols) 1469 {
1468 MARK_MODELINE_CHANGED; 1470 MARK_MODELINE_CHANGED;
1469 w->modeline_hscroll = ncols; 1471 w->modeline_hscroll = ncols;
1470 return ncol; 1472 }
1471 } 1473 return make_int ((int) ncols);
1474 }
1475
1472 return Qnil; 1476 return Qnil;
1473 } 1477 }
1474 #endif /* MODELINE_IS_SCROLLABLE */
1475 1478
1476 DEFUN ("set-window-hscroll", Fset_window_hscroll, 2, 2, 0, /* 1479 DEFUN ("set-window-hscroll", Fset_window_hscroll, 2, 2, 0, /*
1477 Set number of columns WINDOW is scrolled from left margin to NCOL. 1480 Set number of columns WINDOW is scrolled from left margin to NCOL.
1478 NCOL should be zero or positive. 1481 NCOL should be zero or positive.
1479 */ 1482 */
4048 4051
4049 if (INTP (Vwindow_pixel_scroll_increment)) 4052 if (INTP (Vwindow_pixel_scroll_increment))
4050 fheight = XINT (Vwindow_pixel_scroll_increment); 4053 fheight = XINT (Vwindow_pixel_scroll_increment);
4051 else if (!NILP (Vwindow_pixel_scroll_increment)); 4054 else if (!NILP (Vwindow_pixel_scroll_increment));
4052 default_face_height_and_width (window, &fheight, &fwidth); 4055 default_face_height_and_width (window, &fheight, &fwidth);
4053 4056
4054 if (Dynarr_length (dla) >= 1) 4057 if (Dynarr_length (dla) >= 1)
4055 modeline = Dynarr_atp (dla, 0)->modeline; 4058 modeline = Dynarr_atp (dla, 0)->modeline;
4056 4059
4057 dl = Dynarr_atp (dla, modeline); 4060 dl = Dynarr_atp (dla, modeline);
4058 4061
4059 if (value > 0) 4062 if (value > 0)
4060 { 4063 {
4061 /* Go for partial display line scrolling. This just means bumping 4064 /* Go for partial display line scrolling. This just means bumping
4062 the clip by a reasonable amount and redisplaying, everything else 4065 the clip by a reasonable amount and redisplaying, everything else
4063 remains unchanged. */ 4066 remains unchanged. */
4072 } 4075 }
4073 else 4076 else
4074 { 4077 {
4075 int vtarget; 4078 int vtarget;
4076 Bufpos startp, old_start; 4079 Bufpos startp, old_start;
4077 4080
4078 if (WINDOW_TEXT_TOP_CLIP (w)) 4081 if (WINDOW_TEXT_TOP_CLIP (w))
4079 { 4082 {
4080 WINDOW_TEXT_TOP_CLIP (w) = 0; 4083 WINDOW_TEXT_TOP_CLIP (w) = 0;
4081 MARK_WINDOWS_CHANGED (w); 4084 MARK_WINDOWS_CHANGED (w);
4082 } 4085 }
4083 4086
4084 old_start = marker_position (w->start[CURRENT_DISP]); 4087 old_start = marker_position (w->start[CURRENT_DISP]);
4085 startp = vmotion (w, old_start, value, &vtarget); 4088 startp = vmotion (w, old_start, value, &vtarget);
4086 4089
4087 if (vtarget < value && 4090 if (vtarget < value &&
4088 (w->window_end_pos[CURRENT_DISP] == -1 4091 (w->window_end_pos[CURRENT_DISP] == -1
4089 || (BUF_Z (b) - w->window_end_pos[CURRENT_DISP] > BUF_ZV (b)))) 4092 || (BUF_Z (b) - w->window_end_pos[CURRENT_DISP] > BUF_ZV (b))))
4090 { 4093 {
4091 maybe_signal_error (Qend_of_buffer, Qnil, Qwindow, errb); 4094 maybe_signal_error (Qend_of_buffer, Qnil, Qwindow, errb);
4096 set_marker_restricted (w->start[CURRENT_DISP], make_int (startp), 4099 set_marker_restricted (w->start[CURRENT_DISP], make_int (startp),
4097 w->buffer); 4100 w->buffer);
4098 w->force_start = 1; 4101 w->force_start = 1;
4099 w->start_at_line_beg = beginning_of_line_p (b, startp); 4102 w->start_at_line_beg = beginning_of_line_p (b, startp);
4100 MARK_WINDOWS_CHANGED (w); 4103 MARK_WINDOWS_CHANGED (w);
4101 4104
4102 if (!point_would_be_visible (w, startp, XINT (point))) 4105 if (!point_would_be_visible (w, startp, XINT (point)))
4103 { 4106 {
4104 if (selected) 4107 if (selected)
4105 BUF_SET_PT (b, startp); 4108 BUF_SET_PT (b, startp);
4106 else 4109 else
4130 } 4133 }
4131 else 4134 else
4132 { 4135 {
4133 int vtarget; 4136 int vtarget;
4134 Bufpos startp, old_start; 4137 Bufpos startp, old_start;
4135 4138
4136 if (WINDOW_TEXT_TOP_CLIP (w)) 4139 if (WINDOW_TEXT_TOP_CLIP (w))
4137 { 4140 {
4138 WINDOW_TEXT_TOP_CLIP (w) = 0; 4141 WINDOW_TEXT_TOP_CLIP (w) = 0;
4139 MARK_WINDOWS_CHANGED (w); 4142 MARK_WINDOWS_CHANGED (w);
4140 } 4143 }
4141 4144
4142 old_start = marker_position (w->start[CURRENT_DISP]); 4145 old_start = marker_position (w->start[CURRENT_DISP]);
4143 startp = vmotion (w, old_start, value, &vtarget); 4146 startp = vmotion (w, old_start, value, &vtarget);
4144 4147
4145 if (vtarget > value 4148 if (vtarget > value
4146 && marker_position (w->start[CURRENT_DISP]) == BUF_BEGV (b)) 4149 && marker_position (w->start[CURRENT_DISP]) == BUF_BEGV (b))
4147 { 4150 {
4148 maybe_signal_error (Qbeginning_of_buffer, Qnil, Qwindow, errb); 4151 maybe_signal_error (Qbeginning_of_buffer, Qnil, Qwindow, errb);
4149 return; 4152 return;
4153 set_marker_restricted (w->start[CURRENT_DISP], make_int (startp), 4156 set_marker_restricted (w->start[CURRENT_DISP], make_int (startp),
4154 w->buffer); 4157 w->buffer);
4155 w->force_start = 1; 4158 w->force_start = 1;
4156 w->start_at_line_beg = beginning_of_line_p (b, startp); 4159 w->start_at_line_beg = beginning_of_line_p (b, startp);
4157 MARK_WINDOWS_CHANGED (w); 4160 MARK_WINDOWS_CHANGED (w);
4158 4161
4159 if (!point_would_be_visible (w, startp, XINT (point))) 4162 if (!point_would_be_visible (w, startp, XINT (point)))
4160 { 4163 {
4161 Bufpos new_point; 4164 Bufpos new_point;
4162 4165
4163 if (MINI_WINDOW_P (w)) 4166 if (MINI_WINDOW_P (w))
4164 new_point = startp; 4167 new_point = startp;
4165 else 4168 else
4166 new_point = start_of_last_line (w, startp); 4169 new_point = start_of_last_line (w, startp);
4167 4170
4168 if (selected) 4171 if (selected)
4169 BUF_SET_PT (b, new_point); 4172 BUF_SET_PT (b, new_point);
4170 else 4173 else
4171 set_marker_restricted (w->pointm[CURRENT_DISP], 4174 set_marker_restricted (w->pointm[CURRENT_DISP],
4172 make_int (new_point), 4175 make_int (new_point),
4692 int pixel_left; 4695 int pixel_left;
4693 int pixel_top; 4696 int pixel_top;
4694 int pixel_width; 4697 int pixel_width;
4695 int pixel_height; 4698 int pixel_height;
4696 int hscroll; 4699 int hscroll;
4697 int modeline_hscroll; 4700 Charcount modeline_hscroll;
4698 int parent_index; /* index into saved_windows */ 4701 int parent_index; /* index into saved_windows */
4699 int prev_index; /* index into saved_windows */ 4702 int prev_index; /* index into saved_windows */
4700 char start_at_line_beg; /* boolean */ 4703 char start_at_line_beg; /* boolean */
4701 4704
4702 #define WINDOW_SLOT_DECLARATION 4705 #define WINDOW_SLOT_DECLARATION
4954 int previous_pixel_height; 4957 int previous_pixel_height;
4955 int previous_pixel_left; 4958 int previous_pixel_left;
4956 int previous_pixel_width; 4959 int previous_pixel_width;
4957 int previous_minibuf_height, previous_minibuf_top,previous_minibuf_width; 4960 int previous_minibuf_height, previous_minibuf_top,previous_minibuf_width;
4958 int real_font_height; 4961 int real_font_height;
4959 int converted_minibuf_height,target_minibuf_height; 4962 int converted_minibuf_height,target_minibuf_height;
4960 int specpdl_count = specpdl_depth (); 4963 int specpdl_count = specpdl_depth ();
4961 4964
4962 GCPRO1 (configuration); 4965 GCPRO1 (configuration);
4963 4966
4964 CHECK_WINDOW_CONFIGURATION (configuration); 4967 CHECK_WINDOW_CONFIGURATION (configuration);
5022 mark_windows_in_use (f, 1); 5025 mark_windows_in_use (f, 1);
5023 5026
5024 #if 0 5027 #if 0
5025 /* JV: This is bogus, 5028 /* JV: This is bogus,
5026 First of all, the units are inconsistent. The frame sizes are measured 5029 First of all, the units are inconsistent. The frame sizes are measured
5027 in characters but the window sizes are stored in pixels. So if a 5030 in characters but the window sizes are stored in pixels. So if a
5028 font size change happened between saving and restoring, the 5031 font size change happened between saving and restoring, the
5029 frame "sizes" maybe equal but the windows still should be 5032 frame "sizes" maybe equal but the windows still should be
5030 resized. This is tickled alot by the new "character size 5033 resized. This is tickled alot by the new "character size
5031 stays constant" policy in 21.0. It leads to very wierd 5034 stays constant" policy in 21.0. It leads to very wierd
5032 glitches (and possibly craches when asserts are tickled). 5035 glitches (and possibly craches when asserts are tickled).
5043 back. We keep track of the prevailing height in these variables. */ 5046 back. We keep track of the prevailing height in these variables. */
5044 if (config->frame_height != FRAME_HEIGHT (f) 5047 if (config->frame_height != FRAME_HEIGHT (f)
5045 || config->frame_width != FRAME_WIDTH (f)) 5048 || config->frame_width != FRAME_WIDTH (f))
5046 change_frame_size (f, config->frame_height, config->frame_width, 0); 5049 change_frame_size (f, config->frame_height, config->frame_width, 0);
5047 #endif 5050 #endif
5048 5051
5049 previous_pixel_top = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top; 5052 previous_pixel_top = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top;
5050 previous_pixel_height = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_height; 5053 previous_pixel_height = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_height;
5051 previous_pixel_left = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left; 5054 previous_pixel_left = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left;
5052 previous_pixel_width = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_width; 5055 previous_pixel_width = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_width;
5053 5056
5054 /* remember some properties of the minibuffer */ 5057 /* remember some properties of the minibuffer */
5055 5058
5056 default_face_height_and_width (frame, &real_font_height, 0); 5059 default_face_height_and_width (frame, &real_font_height, 0);
5057 assert(real_font_height > 0); 5060 assert(real_font_height > 0);
5058 5061
5059 if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f)) 5062 if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f))
5060 { 5063 {
5061 previous_minibuf_height 5064 previous_minibuf_height
5062 = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height; 5065 = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height;
5063 previous_minibuf_top 5066 previous_minibuf_top
5066 = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_width; 5069 = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_width;
5067 } 5070 }
5068 else 5071 else
5069 { 5072 {
5070 previous_minibuf_height = 0; 5073 previous_minibuf_height = 0;
5074 previous_minibuf_top = 0;
5071 previous_minibuf_width = 0; 5075 previous_minibuf_width = 0;
5072 } 5076 }
5073 converted_minibuf_height = 5077 converted_minibuf_height =
5074 (previous_minibuf_height % real_font_height) == 0 ? 5078 (previous_minibuf_height % real_font_height) == 0 ?
5075 - (previous_minibuf_height / real_font_height ) : /* lines */ 5079 - (previous_minibuf_height / real_font_height ) : /* lines */
5076 previous_minibuf_height; /* pixels */ 5080 previous_minibuf_height; /* pixels */
5077 5081
5078 /* Temporarily avoid any problems with windows that are smaller 5082 /* Temporarily avoid any problems with windows that are smaller
5079 than they are supposed to be. */ 5083 than they are supposed to be. */
5080 window_min_height = 1; 5084 window_min_height = 1;
5081 window_min_width = 1; 5085 window_min_width = 1;
5082 5086
5254 We take the old value if is in the same units but differs from the 5258 We take the old value if is in the same units but differs from the
5255 current value. 5259 current value.
5256 5260
5257 #### Now we get more cases correct then ever before, but 5261 #### Now we get more cases correct then ever before, but
5258 are we treating all? For instance what if the frames minibuf window 5262 are we treating all? For instance what if the frames minibuf window
5259 is no longer the same one? 5263 is no longer the same one?
5260 */ 5264 */
5261 target_minibuf_height = previous_minibuf_height; 5265 target_minibuf_height = previous_minibuf_height;
5262 if (converted_minibuf_height && 5266 if (converted_minibuf_height &&
5263 (converted_minibuf_height * config->minibuf_height) > 0 && 5267 (converted_minibuf_height * config->minibuf_height) > 0 &&
5264 (converted_minibuf_height != config->minibuf_height)) 5268 (converted_minibuf_height != config->minibuf_height))
5277 set_window_pixheight (FRAME_MINIBUF_WINDOW (f), 5281 set_window_pixheight (FRAME_MINIBUF_WINDOW (f),
5278 target_minibuf_height, 0); 5282 target_minibuf_height, 0);
5279 set_window_pixwidth (FRAME_MINIBUF_WINDOW (f), 5283 set_window_pixwidth (FRAME_MINIBUF_WINDOW (f),
5280 previous_minibuf_width, 0); 5284 previous_minibuf_width, 0);
5281 } 5285 }
5282 5286
5283 /* This is a better way to deal with frame resizing, etc. 5287 /* This is a better way to deal with frame resizing, etc.
5284 What we _actually_ want is for the old (just restored) 5288 What we _actually_ want is for the old (just restored)
5285 root window to fit 5289 root window to fit
5286 into the place of the new one. So we just do that. Simple! */ 5290 into the place of the new one. So we just do that. Simple! */
5287 XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top = previous_pixel_top; 5291 XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top = previous_pixel_top;
5292 (target_minibuf_height - previous_minibuf_height), 0); 5296 (target_minibuf_height - previous_minibuf_height), 0);
5293 XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left = previous_pixel_left; 5297 XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left = previous_pixel_left;
5294 /* Note that this function also updates the subwindow 5298 /* Note that this function also updates the subwindow
5295 "pixel_left"s */ 5299 "pixel_left"s */
5296 set_window_pixwidth (FRAME_ROOT_WINDOW (f), previous_pixel_width, 0); 5300 set_window_pixwidth (FRAME_ROOT_WINDOW (f), previous_pixel_width, 0);
5297 5301
5298 /* If restoring in the current frame make the window current, 5302 /* If restoring in the current frame make the window current,
5299 otherwise just update the frame selected_window slot to be 5303 otherwise just update the frame selected_window slot to be
5300 the restored current_window. */ 5304 the restored current_window. */
5301 if (f == selected_frame ()) 5305 if (f == selected_frame ())
5302 { 5306 {
5534 config->saved_windows_count = n_windows; 5538 config->saved_windows_count = n_windows;
5535 save_window_save (FRAME_ROOT_WINDOW (f), config, 0); 5539 save_window_save (FRAME_ROOT_WINDOW (f), config, 0);
5536 5540
5537 /* save the minibuffer height using the heuristics from 5541 /* save the minibuffer height using the heuristics from
5538 change_frame_size_1 */ 5542 change_frame_size_1 */
5539 5543
5540 XSETFRAME (frame, f); /* frame could have been nil ! */ 5544 XSETFRAME (frame, f); /* frame could have been nil ! */
5541 default_face_height_and_width (frame, &real_font_height, 0); 5545 default_face_height_and_width (frame, &real_font_height, 0);
5542 assert(real_font_height > 0); 5546 assert(real_font_height > 0);
5543 5547
5544 if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f)) 5548 if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f))
5545 minibuf_height = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height; 5549 minibuf_height = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height;
5546 else 5550 else
5547 minibuf_height = 0; 5551 minibuf_height = 0;
5548 config->minibuf_height = (minibuf_height % real_font_height) == 0 ? 5552 config->minibuf_height = (minibuf_height % real_font_height) == 0 ?
5604 int first_line, i; 5608 int first_line, i;
5605 Bufpos point; 5609 Bufpos point;
5606 5610
5607 if (NILP (pos)) 5611 if (NILP (pos))
5608 pos = Fwindow_point (window); 5612 pos = Fwindow_point (window);
5609 5613
5610 CHECK_INT (pos); 5614 CHECK_INT (pos);
5611 point = XINT (pos); 5615 point = XINT (pos);
5612 5616
5613 if (Dynarr_length (dla) && Dynarr_atp (dla, 0)->modeline) 5617 if (Dynarr_length (dla) && Dynarr_atp (dla, 0)->modeline)
5614 first_line = 1; 5618 first_line = 1;
5742 DEFSUBR (Fwindow_pixel_width); 5746 DEFSUBR (Fwindow_pixel_width);
5743 DEFSUBR (Fwindow_text_area_pixel_height); 5747 DEFSUBR (Fwindow_text_area_pixel_height);
5744 DEFSUBR (Fwindow_displayed_text_pixel_height); 5748 DEFSUBR (Fwindow_displayed_text_pixel_height);
5745 DEFSUBR (Fwindow_text_area_pixel_width); 5749 DEFSUBR (Fwindow_text_area_pixel_width);
5746 DEFSUBR (Fwindow_hscroll); 5750 DEFSUBR (Fwindow_hscroll);
5747 #ifdef MODELINE_IS_SCROLLABLE 5751 DEFSUBR (Fset_window_hscroll);
5748 DEFSUBR (Fmodeline_hscroll); 5752 DEFSUBR (Fmodeline_hscroll);
5749 DEFSUBR (Fset_modeline_hscroll); 5753 DEFSUBR (Fset_modeline_hscroll);
5750 #endif /* MODELINE_IS_SCROLLABLE */
5751 #if 0 /* bogus FSF crock */ 5754 #if 0 /* bogus FSF crock */
5752 DEFSUBR (Fwindow_redisplay_end_trigger); 5755 DEFSUBR (Fwindow_redisplay_end_trigger);
5753 DEFSUBR (Fset_window_redisplay_end_trigger); 5756 DEFSUBR (Fset_window_redisplay_end_trigger);
5754 #endif 5757 #endif
5755 DEFSUBR (Fset_window_hscroll);
5756 DEFSUBR (Fwindow_pixel_edges); 5758 DEFSUBR (Fwindow_pixel_edges);
5757 DEFSUBR (Fwindow_text_area_pixel_edges); 5759 DEFSUBR (Fwindow_text_area_pixel_edges);
5758 DEFSUBR (Fwindow_point); 5760 DEFSUBR (Fwindow_point);
5759 DEFSUBR (Fwindow_start); 5761 DEFSUBR (Fwindow_start);
5760 DEFSUBR (Fwindow_end); 5762 DEFSUBR (Fwindow_end);
5890 set_specifier_fallback (Vmodeline_shadow_thickness, 5892 set_specifier_fallback (Vmodeline_shadow_thickness,
5891 list1 (Fcons (Qnil, Qzero))); 5893 list1 (Fcons (Qnil, Qzero)));
5892 Fadd_spec_to_specifier (Vmodeline_shadow_thickness, make_int (2), 5894 Fadd_spec_to_specifier (Vmodeline_shadow_thickness, make_int (2),
5893 Qnil, Qnil, Qnil); 5895 Qnil, Qnil, Qnil);
5894 set_specifier_caching (Vmodeline_shadow_thickness, 5896 set_specifier_caching (Vmodeline_shadow_thickness,
5895 slot_offset (struct window, 5897 offsetof (struct window, modeline_shadow_thickness),
5896 modeline_shadow_thickness),
5897 modeline_shadow_thickness_changed, 5898 modeline_shadow_thickness_changed,
5898 0, 0); 5899 0, 0);
5899 5900
5900 DEFVAR_SPECIFIER ("has-modeline-p", &Vhas_modeline_p /* 5901 DEFVAR_SPECIFIER ("has-modeline-p", &Vhas_modeline_p /*
5901 *Whether the modeline should be displayed. 5902 *Whether the modeline should be displayed.
5903 */ ); 5904 */ );
5904 Vhas_modeline_p = Fmake_specifier (Qboolean); 5905 Vhas_modeline_p = Fmake_specifier (Qboolean);
5905 set_specifier_fallback (Vhas_modeline_p, 5906 set_specifier_fallback (Vhas_modeline_p,
5906 list1 (Fcons (Qnil, Qt))); 5907 list1 (Fcons (Qnil, Qt)));
5907 set_specifier_caching (Vhas_modeline_p, 5908 set_specifier_caching (Vhas_modeline_p,
5908 slot_offset (struct window, 5909 offsetof (struct window, has_modeline_p),
5909 has_modeline_p),
5910 /* #### It's strange that we need a special 5910 /* #### It's strange that we need a special
5911 flag to indicate that the shadow-thickness 5911 flag to indicate that the shadow-thickness
5912 has changed, but not one to indicate that 5912 has changed, but not one to indicate that
5913 the modeline has been turned off or on. */ 5913 the modeline has been turned off or on. */
5914 some_window_value_changed, 5914 some_window_value_changed,
5926 */ ); 5926 */ );
5927 Vvertical_divider_always_visible_p = Fmake_specifier (Qboolean); 5927 Vvertical_divider_always_visible_p = Fmake_specifier (Qboolean);
5928 set_specifier_fallback (Vvertical_divider_always_visible_p, 5928 set_specifier_fallback (Vvertical_divider_always_visible_p,
5929 list1 (Fcons (Qnil, Qt))); 5929 list1 (Fcons (Qnil, Qt)));
5930 set_specifier_caching (Vvertical_divider_always_visible_p, 5930 set_specifier_caching (Vvertical_divider_always_visible_p,
5931 slot_offset (struct window, 5931 offsetof (struct window,
5932 vertical_divider_always_visible_p), 5932 vertical_divider_always_visible_p),
5933 vertical_divider_changed_in_window, 5933 vertical_divider_changed_in_window,
5934 0, 0); 5934 0, 0);
5935 5935
5936 DEFVAR_SPECIFIER ("vertical-divider-shadow-thickness", &Vvertical_divider_shadow_thickness /* 5936 DEFVAR_SPECIFIER ("vertical-divider-shadow-thickness", &Vvertical_divider_shadow_thickness /*
5937 *How thick to draw 3D shadows around vertical dividers. 5937 *How thick to draw 3D shadows around vertical dividers.
5941 set_specifier_fallback (Vvertical_divider_shadow_thickness, 5941 set_specifier_fallback (Vvertical_divider_shadow_thickness,
5942 list1 (Fcons (Qnil, Qzero))); 5942 list1 (Fcons (Qnil, Qzero)));
5943 Fadd_spec_to_specifier (Vvertical_divider_shadow_thickness, make_int (2), 5943 Fadd_spec_to_specifier (Vvertical_divider_shadow_thickness, make_int (2),
5944 Qnil, Qnil, Qnil); 5944 Qnil, Qnil, Qnil);
5945 set_specifier_caching (Vvertical_divider_shadow_thickness, 5945 set_specifier_caching (Vvertical_divider_shadow_thickness,
5946 slot_offset (struct window, 5946 offsetof (struct window,
5947 vertical_divider_shadow_thickness), 5947 vertical_divider_shadow_thickness),
5948 vertical_divider_changed_in_window, 5948 vertical_divider_changed_in_window,
5949 0, 0); 5949 0, 0);
5950 DEFVAR_SPECIFIER ("vertical-divider-line-width", &Vvertical_divider_line_width /* 5950 DEFVAR_SPECIFIER ("vertical-divider-line-width", &Vvertical_divider_line_width /*
5951 *The width of the vertical dividers, not including shadows. 5951 *The width of the vertical dividers, not including shadows.
5952 5952
5972 fb = Fcons (Fcons (list1 (Qmswindows), make_int (3)), fb); 5972 fb = Fcons (Fcons (list1 (Qmswindows), make_int (3)), fb);
5973 #endif 5973 #endif
5974 set_specifier_fallback (Vvertical_divider_line_width, fb); 5974 set_specifier_fallback (Vvertical_divider_line_width, fb);
5975 } 5975 }
5976 set_specifier_caching (Vvertical_divider_line_width, 5976 set_specifier_caching (Vvertical_divider_line_width,
5977 slot_offset (struct window, 5977 offsetof (struct window,
5978 vertical_divider_line_width), 5978 vertical_divider_line_width),
5979 vertical_divider_changed_in_window, 5979 vertical_divider_changed_in_window,
5980 0, 0); 5980 0, 0);
5981 5981
5982 DEFVAR_SPECIFIER ("vertical-divider-spacing", &Vvertical_divider_spacing /* 5982 DEFVAR_SPECIFIER ("vertical-divider-spacing", &Vvertical_divider_spacing /*
5983 *How much space to leave around the vertical dividers. 5983 *How much space to leave around the vertical dividers.
6002 fb = Fcons (Fcons (list1 (Qmswindows), Qzero), fb); 6002 fb = Fcons (Fcons (list1 (Qmswindows), Qzero), fb);
6003 #endif 6003 #endif
6004 set_specifier_fallback (Vvertical_divider_spacing, fb); 6004 set_specifier_fallback (Vvertical_divider_spacing, fb);
6005 } 6005 }
6006 set_specifier_caching (Vvertical_divider_spacing, 6006 set_specifier_caching (Vvertical_divider_spacing,
6007 slot_offset (struct window, 6007 offsetof (struct window, vertical_divider_spacing),
6008 vertical_divider_spacing),
6009 vertical_divider_changed_in_window, 6008 vertical_divider_changed_in_window,
6010 0, 0); 6009 0, 0);
6011 } 6010 }