diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2011-12-18 15:36:38 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2011-12-18 15:36:38 +0000 |
commit | 877988a7ef9235d894a6f4ff2f032b7e2f207f72 (patch) | |
tree | 6c7ef846de18270d90a6aabc6ff23299501217cd /desktop/scrollbar.c | |
parent | a40b9fbecd19decd06003d98b4b63c953b7e2dcd (diff) | |
download | netsurf-877988a7ef9235d894a6f4ff2f032b7e2f207f72.tar.gz netsurf-877988a7ef9235d894a6f4ff2f032b7e2f207f72.tar.bz2 |
Add named scroll offset values for page up, page down, top and bottom.
svn path=/trunk/netsurf/; revision=13293
Diffstat (limited to 'desktop/scrollbar.c')
-rw-r--r-- | desktop/scrollbar.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/desktop/scrollbar.c b/desktop/scrollbar.c index 1ec89437a..45ffa2f79 100644 --- a/desktop/scrollbar.c +++ b/desktop/scrollbar.c @@ -461,6 +461,30 @@ bool scrollbar_scroll(struct scrollbar *s, int change) /* zero scroll step, or unscrollable */ return false; + /* Convert named change values to appropriate pixel offset value */ + switch (change) { + case SCROLL_TOP: + change = -s->full_size; + break; + + case SCROLL_PAGE_UP: + change = -s->visible_size; + break; + + case SCROLL_PAGE_DOWN: + change = s->visible_size; + break; + + case SCROLL_BOTTOM: + change = s->full_size; + break; + + default: + /* Change value is already a pixel offset */ + break; + } + + /* Get new offset */ if (s->offset + change > s->full_size - s->visible_size) s->offset = s->full_size - s->visible_size; else if (s->offset + change < 0) @@ -472,6 +496,7 @@ bool scrollbar_scroll(struct scrollbar *s, int change) /* Nothing happened */ return false; + /* Update scrollbar */ well_length = s->length - 2 * SCROLLBAR_WIDTH; s->bar_pos = (s->full_size < 1) ? 0 : ((well_length * s->offset) / s->full_size); |