… | |
… | |
65 | else |
65 | else |
66 | { |
66 | { |
67 | pt[0].y = pt[1].y = y; |
67 | pt[0].y = pt[1].y = y; |
68 | pt[2].y = y + sz - 1; |
68 | pt[2].y = y + sz - 1; |
69 | } |
69 | } |
|
|
70 | |
70 | XFillPolygon (display->display, scrollBar.win, scrollbarGC, |
71 | XFillPolygon (display->display, scrollBar.win, scrollbarGC, |
71 | pt, 3, Convex, CoordModeOrigin); |
72 | pt, 3, Convex, CoordModeOrigin); |
72 | |
73 | |
73 | /* draw base */ |
74 | /* draw base */ |
74 | XDrawLine (display->display, scrollBar.win, (dirn == UP ? bot : top), |
75 | XDrawLine (display->display, scrollBar.win, (dirn == UP ? bot : top), |
75 | pt[0].x, pt[0].y, pt[1].x, pt[1].y); |
76 | pt[0].x, pt[0].y, pt[1].x, pt[1].y); |
76 | |
77 | |
77 | /* draw shadow on left */ |
78 | /* draw shadow on left */ |
78 | pt[1].x = x + sz2 - 1; |
79 | pt[1].x = x + sz2 - 1; |
79 | pt[1].y = y + (dirn == UP ? 0 : sz - 1); |
80 | pt[1].y = y + (dirn == UP ? 0 : sz - 1); |
80 | XDrawLine (display->display, scrollBar.win, top, |
81 | XDrawLine (display->display, scrollBar.win, top, |
81 | pt[0].x, pt[0].y, pt[1].x, pt[1].y); |
82 | pt[0].x, pt[0].y, pt[1].x, pt[1].y); |
82 | |
83 | |
83 | #if (SHADOW > 1) |
84 | #if (SHADOW > 1) |
84 | /* doubled */ |
85 | /* doubled */ |
85 | pt[0].x++; |
86 | pt[0].x++; |
86 | if (dirn == UP) |
87 | if (dirn == UP) |
… | |
… | |
92 | { |
93 | { |
93 | pt[0].y++; |
94 | pt[0].y++; |
94 | pt[1].y--; |
95 | pt[1].y--; |
95 | } |
96 | } |
96 | XDrawLine (display->display, scrollBar.win, top, |
97 | XDrawLine (display->display, scrollBar.win, top, |
97 | pt[0].x, pt[0].y, pt[1].x, pt[1].y); |
98 | pt[0].x, pt[0].y, pt[1].x, pt[1].y); |
98 | #endif |
99 | #endif |
99 | /* draw shadow on right */ |
100 | /* draw shadow on right */ |
100 | pt[1].x = x + sz - 1; |
101 | pt[1].x = x + sz - 1; |
101 | /* pt[2].x = x + sz2; */ |
102 | /* pt[2].x = x + sz2; */ |
102 | pt[1].y = y + (dirn == UP ? sz - 1 : 0); |
103 | pt[1].y = y + (dirn == UP ? sz - 1 : 0); |
103 | pt[2].y = y + (dirn == UP ? 0 : sz - 1); |
104 | pt[2].y = y + (dirn == UP ? 0 : sz - 1); |
104 | XDrawLine (display->display, scrollBar.win, bot, |
105 | XDrawLine (display->display, scrollBar.win, bot, |
105 | pt[2].x, pt[2].y, pt[1].x, pt[1].y); |
106 | pt[2].x, pt[2].y, pt[1].x, pt[1].y); |
106 | #if (SHADOW > 1) |
107 | #if (SHADOW > 1) |
107 | /* doubled */ |
108 | /* doubled */ |
108 | pt[1].x--; |
109 | pt[1].x--; |
109 | if (dirn == UP) |
110 | if (dirn == UP) |
110 | { |
111 | { |
… | |
… | |
114 | else |
115 | else |
115 | { |
116 | { |
116 | pt[2].y--; |
117 | pt[2].y--; |
117 | pt[1].y++; |
118 | pt[1].y++; |
118 | } |
119 | } |
|
|
120 | |
119 | XDrawLine (display->display, scrollBar.win, bot, |
121 | XDrawLine (display->display, scrollBar.win, bot, |
120 | pt[2].x, pt[2].y, pt[1].x, pt[1].y); |
122 | pt[2].x, pt[2].y, pt[1].x, pt[1].y); |
121 | #endif |
123 | #endif |
122 | } |
124 | } |
123 | |
125 | |
124 | int |
126 | int |
125 | rxvt_term::scrollbar_show_rxvt (int update __attribute__ ((unused)), int last_top, int last_bot, int scrollbar_len) |
127 | rxvt_term::scrollbar_show_rxvt (int update __attribute__ ((unused)), int last_top, int last_bot, int scrollbar_len) |
… | |
… | |
127 | int sbshadow = sb_shadow; |
129 | int sbshadow = sb_shadow; |
128 | int sbwidth = (int)scrollBar.width; |
130 | int sbwidth = (int)scrollBar.width; |
129 | |
131 | |
130 | if ((scrollBar.init & R_SB_RXVT) == 0) |
132 | if ((scrollBar.init & R_SB_RXVT) == 0) |
131 | { |
133 | { |
132 | XGCValues gcvalue; |
|
|
133 | |
|
|
134 | scrollBar.init |= R_SB_RXVT; |
134 | scrollBar.init |= R_SB_RXVT; |
135 | gcvalue.foreground = PixColors[Color_trough]; |
|
|
136 | if (sbshadow) |
135 | if (sbshadow) |
137 | { |
136 | { |
138 | XSetWindowBackground (display->display, scrollBar.win, |
137 | XSetWindowBackground (display->display, scrollBar.win, PixColors[Color_trough]); |
139 | gcvalue.foreground); |
|
|
140 | XClearWindow (display->display, scrollBar.win); |
138 | XClearWindow (display->display, scrollBar.win); |
141 | } |
139 | } |
142 | } |
140 | } |
143 | else |
141 | else |
144 | { |
142 | { |
145 | /* instead of XClearWindow (display->display, scrollBar.win); */ |
143 | /* instead of XClearWindow (display->display, scrollBar.win); */ |
146 | if (last_top < scrollBar.top) |
144 | if (last_top < scrollBar.top) |
147 | XClearArea (display->display, scrollBar.win, |
145 | XClearArea (display->display, scrollBar.win, |
148 | sbshadow, last_top, |
146 | sbshadow, last_top, |
149 | sbwidth, (scrollBar.top - last_top), |
147 | sbwidth, (scrollBar.top - last_top), |
150 | False); |
148 | False); |
151 | |
149 | |
152 | if (scrollBar.bot < last_bot) |
150 | if (scrollBar.bot < last_bot) |
153 | XClearArea (display->display, scrollBar.win, |
151 | XClearArea (display->display, scrollBar.win, |
154 | sbshadow, scrollBar.bot, |
152 | sbshadow, scrollBar.bot, |
155 | sbwidth, (last_bot - scrollBar.bot), |
153 | sbwidth, (last_bot - scrollBar.bot), |
156 | False); |
154 | False); |
157 | } |
155 | } |
158 | |
156 | |
159 | /* scrollbar slider */ |
157 | /* scrollbar slider */ |
160 | #ifdef SB_BORDER |
158 | #ifdef SB_BORDER |
161 | { |
159 | { |
162 | int xofs; |
160 | int xofs; |
163 | |
161 | |
164 | if (Options & Opt_scrollBar_right) |
162 | if (Options & Opt_scrollBar_right) |
165 | xofs = 0; |
163 | xofs = 0; |
166 | else |
164 | else |
167 | xofs = sbshadow ? sbwidth : sbwidth - 1; |
165 | xofs = sbshadow ? sbwidth : sbwidth - 1; |
168 | |
166 | |
169 | XDrawLine (display->display, scrollBar.win, botShadowGC, |
167 | XDrawLine (display->display, scrollBar.win, botShadowGC, |
170 | xofs, 0, xofs, scrollBar.end + sbwidth); |
168 | xofs, 0, xofs, scrollBar.end + sbwidth); |
171 | } |
169 | } |
172 | #endif |
170 | #endif |
|
|
171 | |
173 | XFillRectangle (display->display, scrollBar.win, scrollbarGC, |
172 | XFillRectangle (display->display, scrollBar.win, scrollbarGC, |
174 | sbshadow, scrollBar.top, sbwidth, |
173 | sbshadow, scrollBar.top, sbwidth, |
175 | scrollbar_len); |
174 | scrollbar_len); |
176 | |
175 | |
177 | if (sbshadow) |
176 | if (sbshadow) |
178 | /* trough shadow */ |
177 | /* trough shadow */ |
179 | rxvt_Draw_Shadow (display->display, scrollBar.win, |
178 | rxvt_Draw_Shadow (display->display, scrollBar.win, |
180 | botShadowGC, topShadowGC, |
179 | botShadowGC, topShadowGC, |
181 | 0, 0, |
180 | 0, 0, |
182 | sbwidth + 2 * sbshadow, /* scrollbar_TotalWidth () */ |
181 | sbwidth + 2 * sbshadow, /* scrollbar_TotalWidth () */ |
183 | scrollBar.end + (sbwidth + 1) + sbshadow); |
182 | scrollBar.end + (sbwidth + 1) + sbshadow); |
|
|
183 | |
184 | /* shadow for scrollbar slider */ |
184 | /* shadow for scrollbar slider */ |
185 | rxvt_Draw_Shadow (display->display, scrollBar.win, |
185 | rxvt_Draw_Shadow (display->display, scrollBar.win, |
186 | topShadowGC, botShadowGC, |
186 | topShadowGC, botShadowGC, |
187 | sbshadow, scrollBar.top, sbwidth, |
187 | sbshadow, scrollBar.top, sbwidth, |
188 | scrollbar_len); |
188 | scrollbar_len); |
189 | |
189 | |
190 | /* |
|
|
191 | * Redraw scrollbar arrows |
190 | /* Redraw scrollbar arrows */ |
192 | */ |
191 | Draw_button (sbshadow, sbshadow, (scrollbar_isUp () ? -1 : +1), UP); |
193 | Draw_button (sbshadow, sbshadow, |
192 | Draw_button (sbshadow, scrollBar.end + 1, (scrollbar_isDn () ? -1 : +1), DN); |
194 | (scrollbar_isUp () ? -1 : +1), UP); |
193 | |
195 | Draw_button (sbshadow, (scrollBar.end + 1), |
|
|
196 | (scrollbar_isDn () ? -1 : +1), DN); |
|
|
197 | return 1; |
194 | return 1; |
198 | } |
195 | } |
199 | #endif /* RXVT_SCROLLBAR */ |
196 | #endif /* RXVT_SCROLLBAR */ |
200 | /*----------------------- end-of-file (C source) -----------------------*/ |
197 | /*----------------------- end-of-file (C source) -----------------------*/ |