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);
|
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);
|
virtual void on_link_click(link_callback callback);
|
||||||
|
|
||||||
struct shape const & shape() const override { return shape_; }
|
struct shape const & shape() const override { return shape_; }
|
||||||
|
|
@ -103,6 +105,7 @@ namespace psemek::ui
|
||||||
struct image_provider * image_provider_ = nullptr;
|
struct image_provider * image_provider_ = nullptr;
|
||||||
tagged_text::mapper tag_mapper_ = nullptr;
|
tagged_text::mapper tag_mapper_ = nullptr;
|
||||||
|
|
||||||
|
link_mouseover_callback link_mouseover_callback_;
|
||||||
link_callback link_callback_;
|
link_callback link_callback_;
|
||||||
|
|
||||||
box_shape shape_;
|
box_shape shape_;
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,11 @@ namespace psemek::ui
|
||||||
tag_mapper_ = std::move(mapper);
|
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)
|
void label::on_link_click(link_callback callback)
|
||||||
{
|
{
|
||||||
link_callback_ = std::move(callback);
|
link_callback_ = std::move(callback);
|
||||||
|
|
@ -232,6 +237,11 @@ namespace psemek::ui
|
||||||
else
|
else
|
||||||
sdl2::set_cursor(sdl2::cursor_type::arrow);
|
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;
|
selected_link_ = new_selected_link;
|
||||||
mouse_down_ = false;
|
mouse_down_ = false;
|
||||||
on_state_changed();
|
on_state_changed();
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue