comparison src/scrollbar.c @ 422:95016f13131a r21-2-19

Import from CVS: tag r21-2-19
author cvs
date Mon, 13 Aug 2007 11:25:01 +0200
parents 697ef44129c6
children
comparison
equal deleted inserted replaced
421:fff06e11db74 422:95016f13131a
32 #include "commands.h" 32 #include "commands.h"
33 #include "scrollbar.h" 33 #include "scrollbar.h"
34 #include "device.h" 34 #include "device.h"
35 #include "frame.h" 35 #include "frame.h"
36 #include "glyphs.h" 36 #include "glyphs.h"
37 #include "gutter.h"
37 #include "window.h" 38 #include "window.h"
38 39
39 Lisp_Object Qinit_scrollbar_from_resources; 40 Lisp_Object Qinit_scrollbar_from_resources;
40 41
41 Lisp_Object Qscrollbar_line_up; 42 Lisp_Object Qscrollbar_line_up;
450 /* We used to check for inhibit_scrollbar_slider_size_change here, 451 /* We used to check for inhibit_scrollbar_slider_size_change here,
451 but that seems bogus. */ 452 but that seems bogus. */
452 { 453 {
453 int x_offset, y_offset; 454 int x_offset, y_offset;
454 455
455 /* Scrollbars are always the farthest from the text area. */ 456 /* Scrollbars are always the farthest from the text area, barring
457 gutters. */
456 if (vertical) 458 if (vertical)
457 { 459 {
458 x_offset = (!NILP (w->scrollbar_on_left_p) 460 if (!NILP (w->scrollbar_on_left_p))
459 ? WINDOW_LEFT (w) 461 {
460 : (WINDOW_RIGHT (w) - scrollbar_width 462 x_offset = WINDOW_LEFT (w);
461 - (window_needs_vertical_divider (w) 463 if (window_is_leftmost (w))
462 ? window_divider_width (w) : 0))); 464 x_offset += FRAME_LEFT_GUTTER_BOUNDS (f);
465 }
466 else
467 {
468 x_offset = WINDOW_RIGHT (w) - scrollbar_width;
469 if (window_is_rightmost (w))
470 x_offset -= FRAME_RIGHT_GUTTER_BOUNDS (f);
471 if (window_needs_vertical_divider (w))
472 x_offset -= window_divider_width (w);
473 }
463 y_offset = WINDOW_TEXT_TOP (w) + f->scrollbar_y_offset; 474 y_offset = WINDOW_TEXT_TOP (w) + f->scrollbar_y_offset;
464 } 475 }
465 else 476 else
466 { 477 {
467 x_offset = WINDOW_TEXT_LEFT (w); 478 x_offset = WINDOW_TEXT_LEFT (w);
468 y_offset = f->scrollbar_y_offset + 479 y_offset = f->scrollbar_y_offset;
469 (!NILP (w->scrollbar_on_top_p) 480
470 ? WINDOW_TOP (w) 481 if (!NILP (w->scrollbar_on_top_p))
471 : WINDOW_TEXT_BOTTOM (w) + window_bottom_toolbar_height (w)); 482 {
483 y_offset += WINDOW_TOP (w);
484 if (window_is_highest (w))
485 y_offset += FRAME_TOP_GUTTER_BOUNDS (f);
486 }
487 else
488 {
489 y_offset += WINDOW_TEXT_BOTTOM (w);
490 }
472 } 491 }
473 492
474 new_x = x_offset; 493 new_x = x_offset;
475 new_y = y_offset; 494 new_y = y_offset;
476 } 495 }