add trackbar 'sub-consumer' for value label refresh when 'change-on-release'

This commit is contained in:
MihailRis
2024-07-28 22:15:18 +03:00
parent 0e3bd4dcac
commit f46e4a7989
9 changed files with 65 additions and 20 deletions
+7
View File
@@ -50,6 +50,10 @@ void TrackBar::setConsumer(doubleconsumer consumer) {
this->consumer = std::move(consumer);
}
void TrackBar::setSubConsumer(doubleconsumer consumer) {
this->subconsumer = std::move(consumer);
}
void TrackBar::mouseMove(GUI*, int x, int) {
glm::vec2 pos = calcPos();
value = x - trackWidth/2;
@@ -63,6 +67,9 @@ void TrackBar::mouseMove(GUI*, int x, int) {
if (consumer && !changeOnRelease) {
consumer(value);
}
if (subconsumer) {
subconsumer(value);
}
}
void TrackBar::mouseRelease(GUI*, int, int) {
+5 -2
View File
@@ -2,6 +2,7 @@
#define GRAPHICS_UI_ELEMENTS_TRACKBAR_HPP_
#include "UINode.hpp"
#include "../../../data/dynamic_fwd.hpp"
namespace gui {
class TrackBar : public UINode {
@@ -9,6 +10,7 @@ namespace gui {
glm::vec4 trackColor {1.0f, 1.0f, 1.0f, 0.4f};
doublesupplier supplier = nullptr;
doubleconsumer consumer = nullptr;
doubleconsumer subconsumer = nullptr;
double min;
double max;
double value;
@@ -23,8 +25,9 @@ namespace gui {
int trackWidth=12);
virtual void draw(const DrawContext* pctx, Assets* assets) override;
virtual void setSupplier(doublesupplier supplier);
virtual void setConsumer(doubleconsumer consumer);
virtual void setSupplier(doublesupplier);
virtual void setConsumer(doubleconsumer);
virtual void setSubConsumer(doubleconsumer);
virtual void mouseMove(GUI*, int x, int y) override;
virtual void mouseRelease(GUI*, int x, int y) override;