… | |
… | |
30 | #define x_stp_width 8 |
30 | #define x_stp_width 8 |
31 | #define x_stp_height 2 |
31 | #define x_stp_height 2 |
32 | const unsigned char x_stp_bits[] = { 0xaa, 0x55 }; |
32 | const unsigned char x_stp_bits[] = { 0xaa, 0x55 }; |
33 | |
33 | |
34 | int |
34 | int |
35 | rxvt_term::scrollbar_show_xterm (int update __attribute__ ((unused)), int last_top, int last_bot, int scrollbar_len) |
35 | rxvt_term::scrollbar_show_xterm (int update, int last_top, int last_bot, int scrollbar_len) |
36 | { |
36 | { |
37 | int xsb = 0; |
37 | int xsb = 0; |
38 | int sbwidth = scrollBar.width - 1; |
38 | int sbwidth = scrollBar.width - 1; |
39 | |
39 | |
40 | if ((scrollBar.init & R_SB_XTERM) == 0) |
40 | if ((scrollBar.init & R_SB_XTERM) == 0) |
41 | { |
41 | { |
42 | XGCValues gcvalue; |
42 | XGCValues gcvalue; |
43 | |
43 | |
… | |
… | |
47 | x_stp_height); |
47 | x_stp_height); |
48 | if (!gcvalue.stipple) |
48 | if (!gcvalue.stipple) |
49 | rxvt_fatal ("can't create bitmap\n"); |
49 | rxvt_fatal ("can't create bitmap\n"); |
50 | |
50 | |
51 | gcvalue.fill_style = FillOpaqueStippled; |
51 | gcvalue.fill_style = FillOpaqueStippled; |
52 | gcvalue.foreground = pix_colors[Color_fg]; |
52 | gcvalue.foreground = pix_colors_focused[Color_fg]; |
53 | gcvalue.background = pix_colors[Color_bg]; |
53 | gcvalue.background = pix_colors_focused[Color_bg]; |
54 | |
54 | |
55 | xscrollbarGC = XCreateGC (display->display, scrollBar.win, |
55 | xscrollbarGC = XCreateGC (display->display, scrollBar.win, |
56 | GCForeground | GCBackground |
56 | GCForeground | GCBackground |
57 | | GCFillStyle | GCStipple, &gcvalue); |
57 | | GCFillStyle | GCStipple, &gcvalue); |
58 | gcvalue.foreground = pix_colors[Color_border]; |
58 | gcvalue.foreground = pix_colors_focused[Color_border]; |
59 | ShadowGC = XCreateGC (display->display, scrollBar.win, GCForeground, &gcvalue); |
59 | ShadowGC = XCreateGC (display->display, scrollBar.win, GCForeground, &gcvalue); |
60 | } |
60 | } |
61 | /* instead of XClearWindow (display->display, scrollBar.win); */ |
|
|
62 | xsb = (options & Opt_scrollBar_right) ? 1 : 0; |
|
|
63 | if (last_top < scrollBar.top) |
|
|
64 | XClearArea (display->display, scrollBar.win, |
|
|
65 | sb_shadow + xsb, last_top, |
|
|
66 | sbwidth, (scrollBar.top - last_top), False); |
|
|
67 | |
61 | |
68 | if (scrollBar.bot < last_bot) |
62 | if (update) |
|
|
63 | { |
|
|
64 | xsb = (options & Opt_scrollBar_right) ? 1 : 0; |
|
|
65 | if (last_top < scrollBar.top) |
69 | XClearArea (display->display, scrollBar.win, |
66 | XClearArea (display->display, scrollBar.win, |
|
|
67 | sb_shadow + xsb, last_top, |
|
|
68 | sbwidth, (scrollBar.top - last_top), False); |
|
|
69 | |
|
|
70 | if (scrollBar.bot < last_bot) |
|
|
71 | XClearArea (display->display, scrollBar.win, |
70 | sb_shadow + xsb, scrollBar.bot, |
72 | sb_shadow + xsb, scrollBar.bot, |
71 | sbwidth, (last_bot - scrollBar.bot), False); |
73 | sbwidth, (last_bot - scrollBar.bot), False); |
|
|
74 | } |
|
|
75 | else |
|
|
76 | XClearWindow (display->display, scrollBar.win); |
72 | |
77 | |
73 | /* scrollbar slider */ |
78 | /* scrollbar slider */ |
74 | XFillRectangle (display->display, scrollBar.win, xscrollbarGC, |
79 | XFillRectangle (display->display, scrollBar.win, xscrollbarGC, |
75 | xsb + 1, scrollBar.top, sbwidth - 2, scrollbar_len); |
80 | xsb + 1, scrollBar.top, sbwidth - 2, scrollbar_len); |
76 | |
81 | |