aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann1999-09-03 12:43:32 +0000
committerGerd Moellmann1999-09-03 12:43:32 +0000
commit3c6ede7b9181b7a0baada934bb01693a73aae688 (patch)
tree1e8cdb1645074d5c677c6124d1e69ec1861e7be1 /src
parentc6e9d03b5deb4689e600f165f9497cae147dedd5 (diff)
downloademacs-3c6ede7b9181b7a0baada934bb01693a73aae688.tar.gz
emacs-3c6ede7b9181b7a0baada934bb01693a73aae688.zip
(x_scroll_bar_create): Don't clear under scroll bar
here. (XTset_vertical_scroll_bar): Clarify position computations. Clear under newly created scroll bar. Put toolkit scroll bars in the middle of the area reserved for the scroll bar.
Diffstat (limited to 'src')
-rw-r--r--src/xterm.c114
1 files changed, 57 insertions, 57 deletions
diff --git a/src/xterm.c b/src/xterm.c
index 99a935b2609..19c0dae49d7 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -7704,10 +7704,6 @@ x_scroll_bar_create (w, top, left, width, height)
7704 7704
7705 /* Map the window/widget. */ 7705 /* Map the window/widget. */
7706#if USE_TOOLKIT_SCROLL_BARS 7706#if USE_TOOLKIT_SCROLL_BARS
7707 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
7708 left, top,
7709 FRAME_SCROLL_BAR_COLS (f) * CANON_X_UNIT (f),
7710 window_box_height (w), False);
7711 XtMapWidget (SCROLL_BAR_X_WIDGET (bar)); 7707 XtMapWidget (SCROLL_BAR_X_WIDGET (bar));
7712 XtConfigureWidget (SCROLL_BAR_X_WIDGET (bar), 7708 XtConfigureWidget (SCROLL_BAR_X_WIDGET (bar),
7713 left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, 7709 left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
@@ -7874,41 +7870,50 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
7874{ 7870{
7875 struct frame *f = XFRAME (w->frame); 7871 struct frame *f = XFRAME (w->frame);
7876 struct scroll_bar *bar; 7872 struct scroll_bar *bar;
7877 int pixel_top, pixel_left, pixel_width, pixel_height; 7873 int top, height, left, sb_left, width, sb_width;
7878 int window_x, window_y, window_width, window_height; 7874 int window_x, window_y, window_width, window_height;
7879 int scroll_bar_area_width;
7880 7875
7876 /* Get window dimensions. */
7881 window_box (w, -1, &window_x, &window_y, &window_width, &window_height); 7877 window_box (w, -1, &window_x, &window_y, &window_width, &window_height);
7882 7878 top = window_y;
7883 /* Where should this scroll bar be, pixel-wise? */ 7879 width = FRAME_SCROLL_BAR_COLS (f) * CANON_X_UNIT (f);
7884 pixel_top = window_y; 7880 height = window_height;
7885 pixel_height = window_height;
7886
7887 /* The width of the scroll bar itself. */
7888 pixel_width = (FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0
7889 ? FRAME_SCROLL_BAR_PIXEL_WIDTH (f)
7890 : (FRAME_SCROLL_BAR_COLS (f)
7891 * FONT_WIDTH (FRAME_FONT (f))));
7892
7893 /* The width on the screen reserved for the scroll bar plus maybe
7894 some empty room at both sides of the scroll bar. */
7895 scroll_bar_area_width = FRAME_SCROLL_BAR_COLS (f) * CANON_X_UNIT (f);
7896 7881
7882 /* Compute the left edge of the scroll bar area. */
7897 if (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f)) 7883 if (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f))
7898 pixel_left = (window_x 7884 left = XINT (w->left) + XINT (w->width) - FRAME_SCROLL_BAR_COLS (f);
7899 + window_width 7885 else
7900 + FRAME_LEFT_FLAGS_AREA_WIDTH (f) 7886 left = XFASTINT (w->left);
7901 + scroll_bar_area_width 7887 left *= CANON_X_UNIT (f);
7902 - pixel_width + 1); 7888 left += FRAME_INTERNAL_BORDER_WIDTH (f);
7889
7890 /* Compute the width of the scroll bar which might be less than
7891 the width of the area reserved for the scroll bar. */
7892 if (FRAME_SCROLL_BAR_PIXEL_WIDTH (f) > 0)
7893 sb_width = FRAME_SCROLL_BAR_PIXEL_WIDTH (f);
7903 else 7894 else
7904 pixel_left = (window_x 7895 sb_width = width;
7905 - FRAME_LEFT_FLAGS_AREA_WIDTH (f)
7906 - scroll_bar_area_width);
7907 7896
7897 /* Compute the left edge of the scroll bar. */
7898#ifdef USE_TOOLKIT_SCROLL_BARS
7899 if (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f))
7900 sb_left = left + width - sb_width - (width - sb_width) / 2;
7901 else
7902 sb_left = left + (width - sb_width) / 2;
7903#else
7904 if (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f))
7905 sb_left = left + width - sb_width;
7906 else
7907 sb_left = left;
7908#endif
7909
7908 /* Does the scroll bar exist yet? */ 7910 /* Does the scroll bar exist yet? */
7909 if (NILP (w->vertical_scroll_bar)) 7911 if (NILP (w->vertical_scroll_bar))
7910 bar = x_scroll_bar_create (w, pixel_top, pixel_left, pixel_width, 7912 {
7911 pixel_height); 7913 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
7914 left, top, width, height, False);
7915 bar = x_scroll_bar_create (w, top, sb_left, sb_width, height);
7916 }
7912 else 7917 else
7913 { 7918 {
7914 /* It may just need to be moved and resized. */ 7919 /* It may just need to be moved and resized. */
@@ -7918,13 +7923,13 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
7918 7923
7919 BLOCK_INPUT; 7924 BLOCK_INPUT;
7920 7925
7921 if (pixel_left != XINT (bar->left)) 7926 if (sb_left != XINT (bar->left))
7922 mask |= CWX; 7927 mask |= CWX;
7923 if (pixel_top != XINT (bar->top)) 7928 if (top != XINT (bar->top))
7924 mask |= CWY; 7929 mask |= CWY;
7925 if (pixel_width != XINT (bar->width)) 7930 if (sb_width != XINT (bar->width))
7926 mask |= CWWidth; 7931 mask |= CWWidth;
7927 if (pixel_height != XINT (bar->height)) 7932 if (height != XINT (bar->height))
7928 mask |= CWHeight; 7933 mask |= CWHeight;
7929 7934
7930#ifdef USE_TOOLKIT_SCROLL_BARS 7935#ifdef USE_TOOLKIT_SCROLL_BARS
@@ -7932,17 +7937,15 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
7932 /* Since toolkit scroll bars are smaller than the space reserved 7937 /* Since toolkit scroll bars are smaller than the space reserved
7933 for them on the frame, we have to clear "under" them. */ 7938 for them on the frame, we have to clear "under" them. */
7934 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 7939 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
7935 pixel_left, pixel_top, 7940 left, top, width, height, False);
7936 FRAME_SCROLL_BAR_COLS (f) * CANON_X_UNIT (f),
7937 pixel_height, False);
7938 7941
7939 /* Move/size the scroll bar widget. */ 7942 /* Move/size the scroll bar widget. */
7940 if (mask) 7943 if (mask)
7941 XtConfigureWidget (SCROLL_BAR_X_WIDGET (bar), 7944 XtConfigureWidget (SCROLL_BAR_X_WIDGET (bar),
7942 pixel_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM, 7945 sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
7943 pixel_top, 7946 top,
7944 pixel_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2, 7947 sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
7945 pixel_height, 0); 7948 height, 0);
7946 7949
7947#else /* not USE_TOOLKIT_SCROLL_BARS */ 7950#else /* not USE_TOOLKIT_SCROLL_BARS */
7948 7951
@@ -7951,25 +7954,22 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
7951 example. Non-toolkit scroll bars are as wide as the area 7954 example. Non-toolkit scroll bars are as wide as the area
7952 reserved for scroll bars - trim at both sides. */ 7955 reserved for scroll bars - trim at both sides. */
7953 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 7956 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
7954 pixel_left, pixel_top, VERTICAL_SCROLL_BAR_WIDTH_TRIM, 7957 left, top, VERTICAL_SCROLL_BAR_WIDTH_TRIM,
7955 pixel_height, False); 7958 height, False);
7956 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 7959 XClearArea (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
7957 (pixel_left 7960 left + width - VERTICAL_SCROLL_BAR_WIDTH_TRIM,
7958 + pixel_width 7961 top, VERTICAL_SCROLL_BAR_WIDTH_TRIM,
7959 - VERTICAL_SCROLL_BAR_WIDTH_TRIM), 7962 height, False);
7960 pixel_top,
7961 VERTICAL_SCROLL_BAR_WIDTH_TRIM,
7962 pixel_height, False);
7963 7963
7964 /* Move/size the scroll bar window. */ 7964 /* Move/size the scroll bar window. */
7965 if (mask) 7965 if (mask)
7966 { 7966 {
7967 XWindowChanges wc; 7967 XWindowChanges wc;
7968 7968
7969 wc.x = pixel_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM; 7969 wc.x = sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM;
7970 wc.y = pixel_top; 7970 wc.y = top;
7971 wc.width = pixel_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2; 7971 wc.width = sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2;
7972 wc.height = pixel_height; 7972 wc.height = height;
7973 XConfigureWindow (FRAME_X_DISPLAY (f), SCROLL_BAR_X_WINDOW (bar), 7973 XConfigureWindow (FRAME_X_DISPLAY (f), SCROLL_BAR_X_WINDOW (bar),
7974 mask, &wc); 7974 mask, &wc);
7975 } 7975 }
@@ -7977,10 +7977,10 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
7977#endif /* not USE_TOOLKIT_SCROLL_BARS */ 7977#endif /* not USE_TOOLKIT_SCROLL_BARS */
7978 7978
7979 /* Remember new settings. */ 7979 /* Remember new settings. */
7980 XSETINT (bar->left, pixel_left); 7980 XSETINT (bar->left, sb_left);
7981 XSETINT (bar->top, pixel_top); 7981 XSETINT (bar->top, top);
7982 XSETINT (bar->width, pixel_width); 7982 XSETINT (bar->width, sb_width);
7983 XSETINT (bar->height, pixel_height); 7983 XSETINT (bar->height, height);
7984 7984
7985 UNBLOCK_INPUT; 7985 UNBLOCK_INPUT;
7986 } 7986 }