Support label on link mouseover callback
This commit is contained in:
parent
dd38061d1c
commit
0b358f6877
2 changed files with 14 additions and 1 deletions
|
|
@ -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_;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue