Implement default ui::selector

This commit is contained in:
Nikita Lisitsa 2022-12-18 16:42:39 +03:00
parent 83cb71d2c0
commit 3d2c03c1b4
2 changed files with 23 additions and 0 deletions

View file

@ -22,6 +22,7 @@ namespace psemek::ui
std::shared_ptr<spinbox> make_spinbox() override;
std::shared_ptr<button> make_arrow_button(int direction) override;
std::shared_ptr<scroller> make_scroller() override;
std::shared_ptr<selector> make_selector() override;
private:
psemek_declare_pimpl

View file

@ -10,6 +10,7 @@
#include <psemek/ui/container.hpp>
#include <psemek/ui/grid_layout.hpp>
#include <psemek/ui/scroller.hpp>
#include <psemek/ui/selector.hpp>
#include <psemek/io/memory_stream.hpp>
@ -746,6 +747,22 @@ namespace psemek::ui
button * dec_button_;
};
struct selector_impl
: selector
{
void draw(painter & p) const override
{
auto st = merged_own_style();
p.draw_rect(shape().bbox(), *st->bg_color);
if (auto i = selected())
{
p.draw_rect(item_box(*i), *st->highlight_color);
}
}
};
}
struct default_element_factory::impl
@ -812,4 +829,9 @@ namespace psemek::ui
return std::make_shared<scroller>();
}
std::shared_ptr<selector> default_element_factory::make_selector()
{
return std::make_shared<selector_impl>();
}
}