Implement default ui::selector
This commit is contained in:
parent
83cb71d2c0
commit
3d2c03c1b4
2 changed files with 23 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue