Change Details
ubb-la/gui.c |
159 | 159 | int x0, int x1, int zoom, int pos) |
160 | 160 | { |
161 | 161 | int xm, w, p0, p1; |
162 | | int d; |
| 162 | int d, dp; |
163 | 163 | |
164 | 164 | xm = (x0+x1) >> 1; |
| 165 | dp = pos-((nibbles+skip) >> 1); |
165 | 166 | if (zoom < 0) { |
166 | 167 | w = (nibbles-skip) >> -zoom; |
167 | | p0 = xm-(w >> 1); |
168 | | p1 = xm+((w+1) >> 1); |
| 168 | p0 = xm-(w >> 1)-(dp >> -zoom); |
| 169 | p1 = xm+((w+1) >> 1)-(dp >> -zoom); |
169 | 170 | if (p0 < x0) { |
170 | 171 | skip += (x0-p0) << -zoom; |
171 | 172 | p0 = x0; |
... | ... | |
177 | 178 | show_buffer_zoom_out(buf, skip, nibbles, p0, p1); |
178 | 179 | } else { |
179 | 180 | w = (nibbles-skip) << zoom; |
180 | | p0 = xm-(w >> 1); |
181 | | p1 = xm+((w+1) >> 1); |
| 181 | p0 = xm-(w >> 1)-(dp << zoom); |
| 182 | p1 = xm+((w+1) >> 1)-(dp << zoom); |
182 | 183 | if (p0 < x0) { |
183 | 184 | d = ((x0-p0)+(1 << zoom)-1) >> zoom; |
184 | 185 | skip += d; |
... | ... | |
229 | 230 | if (zoom > min_zoom) |
230 | 231 | zoom--; |
231 | 232 | break; |
| 233 | case SDLK_LEFT: |
| 234 | if (pos) |
| 235 | pos--; |
| 236 | break; |
| 237 | case SDLK_RIGHT: |
| 238 | if (pos < nibbles-1) |
| 239 | pos++; |
| 240 | break; |
232 | 241 | case SDLK_RETURN: |
233 | 242 | case SDLK_q: |
234 | 243 | return; |
Download the corresponding diff file