Add non-notifying versions of slider methods

This commit is contained in:
Nikita Lisitsa 2022-02-19 23:04:36 +03:00
parent 22b3f1d67f
commit 343894d06b
2 changed files with 7 additions and 6 deletions

View file

@ -15,7 +15,7 @@ namespace psemek::ui
bool on_event(mouse_wheel const & e) override; bool on_event(mouse_wheel const & e) override;
virtual geom::interval<int> value_range() const { return value_range_; } virtual geom::interval<int> value_range() const { return value_range_; }
virtual void set_value_range(geom::interval<int> i); virtual void set_value_range(geom::interval<int> i, bool notify = true);
virtual int value() const { return value_; } virtual int value() const { return value_; }
virtual void set_value(int v, bool notify = true); virtual void set_value(int v, bool notify = true);
@ -25,7 +25,7 @@ namespace psemek::ui
using on_value_changed_callback = std::function<void(int)>; using on_value_changed_callback = std::function<void(int)>;
void on_value_changed(on_value_changed_callback callback); void on_value_changed(on_value_changed_callback callback, bool notify = true);
protected: protected:
enum class state_t enum class state_t

View file

@ -80,11 +80,11 @@ namespace psemek::ui
return false; return false;
} }
void slider::set_value_range(geom::interval<int> i) void slider::set_value_range(geom::interval<int> i, bool notify)
{ {
if (i.empty()) throw std::runtime_error("Empty value range for ui::slider"); if (i.empty()) throw std::runtime_error("Empty value range for ui::slider");
value_range_ = i; value_range_ = i;
set_value(value_); set_value(value_, notify);
} }
void slider::set_value(int v, bool notify) void slider::set_value(int v, bool notify)
@ -101,9 +101,10 @@ 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); callback_ = std::move(callback);
if (notify)
post_value_changed(); post_value_changed();
} }