diff options
author | Rubidium <rubidium@openttd.org> | 2021-04-18 20:29:46 +0200 |
---|---|---|
committer | rubidium42 <rubidium42@users.noreply.github.com> | 2021-04-21 21:12:08 +0200 |
commit | bf4fe19a6684231d04764c3bee5ed51e4124a925 (patch) | |
tree | c8b7d662f3ed0ecc236ea894c9a51279e80dfbc2 /src/newgrf_gui.cpp | |
parent | b3495f1a1323eb6d236c6fecb1127a0bd716a4d5 (diff) | |
download | openttd-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.cpp | 36 |
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); |