Support label on link mouseover callback

This commit is contained in:
Nikita Lisitsa 2023-01-05 18:18:11 +03:00
parent dd38061d1c
commit 0b358f6877
2 changed files with 14 additions and 1 deletions

View file

@ -67,8 +67,10 @@ namespace psemek::ui
virtual void set_tag_mapper(tagged_text::mapper mapper);
using link_callback = std::function<void(std::string_view)>;
using link_mouseover_callback = std::function<void(std::optional<std::string> const &)>;
using link_callback = std::function<void(std::string const &)>;
virtual void on_link_mouseover(link_mouseover_callback callback);
virtual void on_link_click(link_callback callback);
struct shape const & shape() const override { return shape_; }
@ -103,6 +105,7 @@ namespace psemek::ui
struct image_provider * image_provider_ = nullptr;
tagged_text::mapper tag_mapper_ = nullptr;
link_mouseover_callback link_mouseover_callback_;
link_callback link_callback_;
box_shape shape_;

View file

@ -193,6 +193,11 @@ namespace psemek::ui
tag_mapper_ = std::move(mapper);
}
void label::on_link_mouseover(link_mouseover_callback callback)
{
link_mouseover_callback_ = std::move(callback);
}
void label::on_link_click(link_callback callback)
{
link_callback_ = std::move(callback);
@ -232,6 +237,11 @@ namespace psemek::ui
else
sdl2::set_cursor(sdl2::cursor_type::arrow);
if (link_mouseover_callback_)
post([cb = link_mouseover_callback_, value = new_selected_link]{
cb(value);
});
selected_link_ = new_selected_link;
mouse_down_ = false;
on_state_changed();