diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2021-12-17 13:46:46 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2021-12-17 13:46:46 +0100 |
commit | da4ee3868d7a014be42e998a7b7c98a149586d85 (patch) | |
tree | 7ca23a0ef9e532d9551449e697c9ae5c059334ec | |
parent | ba25e41d49fd5e9f46840d0b876df21ad5f583db (diff) |
options, tracker/pt: allow force-reloading value_::valueChanged
Fixes auto threshold slider label text on toggling the checkbox without
dragging the slider.
-rw-r--r-- | options/base-value.hpp | 1 | ||||
-rw-r--r-- | options/value.hpp | 13 | ||||
-rw-r--r-- | tracker-pt/ftnoir_tracker_pt_dialog.cpp | 4 |
3 files changed, 15 insertions, 3 deletions
diff --git a/options/base-value.hpp b/options/base-value.hpp index 6365f82a..d0fa42cf 100644 --- a/options/base-value.hpp +++ b/options/base-value.hpp @@ -95,6 +95,7 @@ public slots: virtual void set_to_default() noexcept = 0; virtual void notify() const = 0; + virtual void notify_() const = 0; virtual QVariant get_variant() const noexcept = 0; }; diff --git a/options/value.hpp b/options/value.hpp index 85b76cb6..090a7bdf 100644 --- a/options/value.hpp +++ b/options/value.hpp @@ -95,6 +95,19 @@ public: } never_inline + void notify_() const override + { + auto x = get(); + { + QMutexLocker l(&mtx); + cached_value = x; + } + maybe_trace("notify +"); + emit valueChanged(traits::storage_from_value(x)); + maybe_trace("notify -"); + } + + never_inline void notify() const override { if (is_null()) diff --git a/tracker-pt/ftnoir_tracker_pt_dialog.cpp b/tracker-pt/ftnoir_tracker_pt_dialog.cpp index 6d125d92..75428bfe 100644 --- a/tracker-pt/ftnoir_tracker_pt_dialog.cpp +++ b/tracker-pt/ftnoir_tracker_pt_dialog.cpp @@ -115,9 +115,7 @@ TrackerDialog_PT::TrackerDialog_PT(const QString& module_name) : }); // refresh threshold display on auto-threshold checkbox state change - tie_setting(s.auto_threshold, - this, - [this](bool) { s.threshold_slider.notify(); }); + tie_setting(s.auto_threshold, this, [this](bool) { s.threshold_slider.notify_(); }); tie_setting(s.enable_point_filter, ui.enable_point_filter); tie_setting(s.point_filter_coefficient, ui.point_filter_slider); |