diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/dropdown.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index 1056ebced..e32cf4151 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -260,9 +260,16 @@ struct DropdownWindow : Window { virtual void OnTick() { - this->vscroll.UpdatePosition(this->scrolling); - this->scrolling = 0; - this->SetDirty(); + if (this->scrolling != 0) { + int pos = this->vscroll.GetPosition(); + + this->vscroll.UpdatePosition(this->scrolling); + this->scrolling = 0; + + if (pos != this->vscroll.GetPosition()) { + this->SetDirty(); + } + } } virtual void OnMouseLoop() @@ -310,8 +317,10 @@ struct DropdownWindow : Window { if (!this->GetDropDownItem(item)) return; } - this->selected_index = item; - this->SetDirty(); + if (this->selected_index != item) { + this->selected_index = item; + this->SetDirty(); + } } } }; |