From 343894d06b805c1ee12715f1da1f375fce90f448 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 19 Feb 2022 23:04:36 +0300 Subject: [PATCH] Add non-notifying versions of slider methods --- libs/ui/include/psemek/ui/slider.hpp | 4 ++-- libs/ui/source/slider.cpp | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/libs/ui/include/psemek/ui/slider.hpp b/libs/ui/include/psemek/ui/slider.hpp index 0669d5db..3992aa0c 100644 --- a/libs/ui/include/psemek/ui/slider.hpp +++ b/libs/ui/include/psemek/ui/slider.hpp @@ -15,7 +15,7 @@ namespace psemek::ui bool on_event(mouse_wheel const & e) override; virtual geom::interval value_range() const { return value_range_; } - virtual void set_value_range(geom::interval i); + virtual void set_value_range(geom::interval i, bool notify = true); virtual int value() const { return value_; } virtual void set_value(int v, bool notify = true); @@ -25,7 +25,7 @@ namespace psemek::ui using on_value_changed_callback = std::function; - void on_value_changed(on_value_changed_callback callback); + void on_value_changed(on_value_changed_callback callback, bool notify = true); protected: enum class state_t diff --git a/libs/ui/source/slider.cpp b/libs/ui/source/slider.cpp index ec440bef..4d56995b 100644 --- a/libs/ui/source/slider.cpp +++ b/libs/ui/source/slider.cpp @@ -80,11 +80,11 @@ namespace psemek::ui return false; } - void slider::set_value_range(geom::interval i) + void slider::set_value_range(geom::interval i, bool notify) { if (i.empty()) throw std::runtime_error("Empty value range for ui::slider"); value_range_ = i; - set_value(value_); + set_value(value_, notify); } void slider::set_value(int v, bool notify) @@ -101,10 +101,11 @@ namespace psemek::ui } } - void slider::on_value_changed(on_value_changed_callback callback) + void slider::on_value_changed(on_value_changed_callback callback, bool notify) { callback_ = std::move(callback); - post_value_changed(); + if (notify) + post_value_changed(); } geom::interval slider::slider_range() const