… | |
… | |
34 | int |
34 | int |
35 | rxvt_term::scrollbar_mapping (int map) |
35 | rxvt_term::scrollbar_mapping (int map) |
36 | { |
36 | { |
37 | int change = 0; |
37 | int change = 0; |
38 | |
38 | |
39 | #ifdef HAVE_SCROLLBARS |
|
|
40 | if (map) |
39 | if (map) |
41 | { |
40 | { |
42 | scrollBar.setIdle (); |
41 | scrollBar.state = STATE_IDLE; |
43 | |
42 | |
44 | if (!scrollBar.win) |
43 | if (!scrollBar.win) |
45 | resize_scrollbar (); |
44 | resize_scrollbar (); |
46 | |
45 | |
47 | if (scrollBar.win) |
46 | if (scrollBar.win) |
… | |
… | |
54 | { |
53 | { |
55 | scrollBar.state = 0; |
54 | scrollBar.state = 0; |
56 | XUnmapWindow (dpy, scrollBar.win); |
55 | XUnmapWindow (dpy, scrollBar.win); |
57 | change = 1; |
56 | change = 1; |
58 | } |
57 | } |
59 | #endif |
|
|
60 | |
58 | |
61 | return change; |
59 | return change; |
62 | } |
60 | } |
63 | |
61 | |
64 | void |
62 | void |
65 | rxvt_term::resize_scrollbar () |
63 | rxvt_term::resize_scrollbar () |
66 | { |
64 | { |
67 | #ifdef HAVE_SCROLLBARS |
|
|
68 | int delayed_init = 0; |
65 | int delayed_init = 0; |
69 | |
66 | |
70 | #define R_SCROLLBEG_XTERM 0 |
67 | #define R_SCROLLBEG_XTERM 0 |
71 | #define R_SCROLLEND_XTERM szHint.height |
68 | #define R_SCROLLEND_XTERM szHint.height |
72 | #define R_SCROLLBEG_NEXT 0 |
69 | #define R_SCROLLBEG_NEXT 0 |
… | |
… | |
118 | scrollbar_TotalWidth (), |
115 | scrollbar_TotalWidth (), |
119 | szHint.height, |
116 | szHint.height, |
120 | 0, |
117 | 0, |
121 | pix_colors[Color_fg], |
118 | pix_colors[Color_fg], |
122 | pix_colors[Color_border]); |
119 | pix_colors[Color_border]); |
123 | XDefineCursor (dpy, scrollBar.win, leftptr_cursor); |
120 | XDefineCursor (dpy, scrollBar.win, scrollBar.leftptr_cursor); |
124 | |
121 | |
125 | XSelectInput (dpy, scrollBar.win, |
122 | XSelectInput (dpy, scrollBar.win, |
126 | ExposureMask | ButtonPressMask | ButtonReleaseMask |
123 | ExposureMask | ButtonPressMask | ButtonReleaseMask |
127 | | Button1MotionMask | Button2MotionMask |
124 | | Button1MotionMask | Button2MotionMask |
128 | | Button3MotionMask); |
125 | | Button3MotionMask); |
… | |
… | |
133 | |
130 | |
134 | scrollbar_show (1); |
131 | scrollbar_show (1); |
135 | |
132 | |
136 | if (delayed_init) |
133 | if (delayed_init) |
137 | XMapWindow (dpy, scrollBar.win); |
134 | XMapWindow (dpy, scrollBar.win); |
138 | #endif |
|
|
139 | } |
135 | } |
140 | |
136 | |
141 | /* |
137 | /* |
142 | * Update current scrollbar view w.r.t. slider heights, etc. |
138 | * Update current scrollbar view w.r.t. slider heights, etc. |
143 | */ |
139 | */ |
144 | int |
140 | int |
145 | rxvt_term::scrollbar_show (int update) |
141 | rxvt_term::scrollbar_show (int update) |
146 | { |
142 | { |
147 | int ret = 0; |
143 | int ret = 0; |
148 | #ifdef HAVE_SCROLLBARS |
|
|
149 | int top, bot, len, adj; |
144 | int top, bot, len, adj; |
150 | |
145 | |
151 | if (!scrollBar.state) |
146 | if (!scrollBar.state) |
152 | return 0; |
147 | return 0; |
153 | |
148 | |
… | |
… | |
163 | scrollbar_minheight () + adj; |
158 | scrollbar_minheight () + adj; |
164 | scrollBar.bot = (scrollBar.top + scrollBar.len); |
159 | scrollBar.bot = (scrollBar.top + scrollBar.len); |
165 | /* no change */ |
160 | /* no change */ |
166 | if (scrollBar.top == scrollBar.last_top |
161 | if (scrollBar.top == scrollBar.last_top |
167 | && scrollBar.bot == scrollBar.last_bot |
162 | && scrollBar.bot == scrollBar.last_bot |
168 | && (scrollBar.state == scrollBar.last_state || !scrollbar_isUpDn ())) |
163 | && (scrollBar.state == scrollBar.last_state |
|
|
164 | || !(scrollBar.state == STATE_UP || scrollBar.state == STATE_DOWN))) |
169 | return 0; |
165 | return 0; |
170 | } |
166 | } |
171 | |
167 | |
172 | ret = (this->*scrollBar.update) (update, scrollBar.last_top, scrollBar.last_bot, scrollBar.len); |
168 | ret = (this->*scrollBar.update) (update, scrollBar.last_top, scrollBar.last_bot, scrollBar.len); |
173 | |
169 | |
174 | scrollBar.last_top = scrollBar.top; |
170 | scrollBar.last_top = scrollBar.top; |
175 | scrollBar.last_bot = scrollBar.bot; |
171 | scrollBar.last_bot = scrollBar.bot; |
176 | scrollBar.last_state = scrollBar.state; |
172 | scrollBar.last_state = scrollBar.state; |
177 | #endif |
|
|
178 | |
173 | |
179 | return ret; |
174 | return ret; |
180 | } |
175 | } |
181 | |
176 | |
182 | void |
177 | void |
183 | rxvt_term::setup_scrollbar (const char *scrollalign, const char *scrollstyle, const char *thickness) |
178 | rxvt_term::setup_scrollbar (const char *scrollalign, const char *scrollstyle, const char *thickness) |
184 | { |
179 | { |
185 | #ifdef HAVE_SCROLLBARS |
|
|
186 | int i; |
180 | int i; |
187 | short style, width; |
181 | short style, width; |
188 | |
182 | |
189 | # if defined(RXVT_SCROLLBAR) |
183 | # if defined(RXVT_SCROLLBAR) |
190 | style = R_SB_RXVT; |
184 | style = R_SB_RXVT; |
… | |
… | |
244 | scrollBar.align = R_SB_ALIGN_TOP; |
238 | scrollBar.align = R_SB_ALIGN_TOP; |
245 | else if (strncasecmp (scrollalign, "bottom", 6) == 0) |
239 | else if (strncasecmp (scrollalign, "bottom", 6) == 0) |
246 | scrollBar.align = R_SB_ALIGN_BOTTOM; |
240 | scrollBar.align = R_SB_ALIGN_BOTTOM; |
247 | } |
241 | } |
248 | scrollBar.last_bot = scrollBar.last_state = -1; |
242 | scrollBar.last_bot = scrollBar.last_state = -1; |
249 | #endif |
243 | /* cursor scrollBar: Black-on-White */ |
|
|
244 | scrollBar.leftptr_cursor = XCreateFontCursor (dpy, XC_left_ptr); |
250 | } |
245 | } |
251 | |
246 | |
252 | /*----------------------- end-of-file (C source) -----------------------*/ |
247 | /*----------------------- end-of-file (C source) -----------------------*/ |
253 | |
248 | |