From c706032df55239086f16bfd423f7fd9185d41377 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 17 May 2022 20:24:39 +0300 Subject: [PATCH] Make ui::progress_bar capable of having any element as a child --- libs/ui/include/psemek/ui/progress_bar.hpp | 8 ++++---- libs/ui/source/progress_bar.cpp | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/libs/ui/include/psemek/ui/progress_bar.hpp b/libs/ui/include/psemek/ui/progress_bar.hpp index 2c66609a..48b6ceac 100644 --- a/libs/ui/include/psemek/ui/progress_bar.hpp +++ b/libs/ui/include/psemek/ui/progress_bar.hpp @@ -1,19 +1,19 @@ #pragma once -#include +#include #include namespace psemek::ui { struct progress_bar - : element + : single_container { virtual float value() const { return value_; } virtual void set_value(float value); - virtual struct label * label() { return nullptr; } - virtual struct label const * label() const { return nullptr; } + virtual struct label * label(); + virtual struct label const * label() const; private: float value_ = 0.f; diff --git a/libs/ui/source/progress_bar.cpp b/libs/ui/source/progress_bar.cpp index 618b6538..47867a44 100644 --- a/libs/ui/source/progress_bar.cpp +++ b/libs/ui/source/progress_bar.cpp @@ -10,4 +10,14 @@ namespace psemek::ui value_ = geom::clamp(value, {0.f, 1.f}); } + label * progress_bar::label() + { + return dynamic_cast(child().get()); + } + + label const * progress_bar::label() const + { + return dynamic_cast(child().get()); + } + }