summaryrefslogtreecommitdiff
path: root/src/newgrf_gui.cpp
diff options
context:
space:
mode:
authorRubidium <rubidium@openttd.org>2021-04-18 20:29:46 +0200
committerrubidium42 <rubidium42@users.noreply.github.com>2021-04-21 21:12:08 +0200
commitbf4fe19a6684231d04764c3bee5ed51e4124a925 (patch)
treec8b7d662f3ed0ecc236ea894c9a51279e80dfbc2 /src/newgrf_gui.cpp
parentb3495f1a1323eb6d236c6fecb1127a0bd716a4d5 (diff)
downloadopenttd-bf4fe19a6684231d04764c3bee5ed51e4124a925.tar.xz
Codechange: merge duplicated logic to scroll in lists by key into a single function
Diffstat (limited to 'src/newgrf_gui.cpp')
-rw-r--r--src/newgrf_gui.cpp36
1 files changed, 1 insertions, 35 deletions
diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp
index 50e402ffb..fe2510f74 100644
--- a/src/newgrf_gui.cpp
+++ b/src/newgrf_gui.cpp
@@ -1318,42 +1318,8 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
{
if (!this->editable) return ES_NOT_HANDLED;
- switch (keycode) {
- case WKC_UP:
- /* scroll up by one */
- if (this->avail_pos > 0) this->avail_pos--;
- break;
-
- case WKC_DOWN:
- /* scroll down by one */
- if (this->avail_pos < (int)this->avails.size() - 1) this->avail_pos++;
- break;
-
- case WKC_PAGEUP:
- /* scroll up a page */
- this->avail_pos = (this->avail_pos < this->vscroll2->GetCapacity()) ? 0 : this->avail_pos - this->vscroll2->GetCapacity();
- break;
-
- case WKC_PAGEDOWN:
- /* scroll down a page */
- this->avail_pos = std::min(this->avail_pos + this->vscroll2->GetCapacity(), (int)this->avails.size() - 1);
- break;
-
- case WKC_HOME:
- /* jump to beginning */
- this->avail_pos = 0;
- break;
-
- case WKC_END:
- /* jump to end */
- this->avail_pos = (uint)this->avails.size() - 1;
- break;
-
- default:
- return ES_NOT_HANDLED;
- }
+ if (this->vscroll2->UpdateListPositionOnKeyPress(this->avail_pos, keycode) == ES_NOT_HANDLED) return ES_NOT_HANDLED;
- if (this->avails.size() == 0) this->avail_pos = -1;
if (this->avail_pos >= 0) {
this->active_sel = nullptr;
DeleteWindowByClass(WC_GRF_PARAMETERS);