added 'tooltip-delay' property
This commit is contained in:
@@ -62,8 +62,8 @@ void GUI::onAssetsLoad(Assets* assets) {
|
|||||||
void GUI::updateTooltip(float delta) {
|
void GUI::updateTooltip(float delta) {
|
||||||
float mouseDelta = glm::length(Events::delta);
|
float mouseDelta = glm::length(Events::delta);
|
||||||
if ((hover && mouseDelta < 1.0f) ||
|
if ((hover && mouseDelta < 1.0f) ||
|
||||||
(hover && hover->isInside(Events::cursor) && tooltipTimer >= tooltipDelay)) {
|
(hover && hover->isInside(Events::cursor) && tooltipTimer >= hover->getTooltipDelay())) {
|
||||||
if (tooltipTimer + delta >= tooltipDelay) {
|
if (tooltipTimer + delta >= hover->getTooltipDelay()) {
|
||||||
auto label = std::dynamic_pointer_cast<gui::Label>(get("tooltip.label"));
|
auto label = std::dynamic_pointer_cast<gui::Label>(get("tooltip.label"));
|
||||||
const auto& text = hover->getTooltip();
|
const auto& text = hover->getTooltip();
|
||||||
if (label && !text.empty()) {
|
if (label && !text.empty()) {
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ namespace gui {
|
|||||||
std::queue<runnable> postRunnables;
|
std::queue<runnable> postRunnables;
|
||||||
|
|
||||||
float tooltipTimer = 0.0f;
|
float tooltipTimer = 0.0f;
|
||||||
float tooltipDelay = 0.5f;
|
|
||||||
float doubleClickTimer = 0.0f;
|
float doubleClickTimer = 0.0f;
|
||||||
float doubleClickDelay = 0.5f;
|
float doubleClickDelay = 0.5f;
|
||||||
bool doubleClicked = false;
|
bool doubleClicked = false;
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ SlotView::SlotView(
|
|||||||
layout(layout)
|
layout(layout)
|
||||||
{
|
{
|
||||||
setColor(glm::vec4(0, 0, 0, 0.2f));
|
setColor(glm::vec4(0, 0, 0, 0.2f));
|
||||||
|
setTooltipDelay(0.05f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SlotView::draw(const DrawContext* pctx, Assets* assets) {
|
void SlotView::draw(const DrawContext* pctx, Assets* assets) {
|
||||||
|
|||||||
@@ -137,6 +137,15 @@ const std::wstring UINode::getTooltip() const {
|
|||||||
return tooltip;
|
return tooltip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UINode::setTooltipDelay(float delay) {
|
||||||
|
tooltipDelay = delay;
|
||||||
|
}
|
||||||
|
|
||||||
|
float UINode::getTooltipDelay() const {
|
||||||
|
return tooltipDelay;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
glm::vec2 UINode::calcPos() const {
|
glm::vec2 UINode::calcPos() const {
|
||||||
if (parent) {
|
if (parent) {
|
||||||
return pos + parent->calcPos() + parent->contentOffset();
|
return pos + parent->calcPos() + parent->contentOffset();
|
||||||
|
|||||||
@@ -111,6 +111,8 @@ namespace gui {
|
|||||||
ActionsSet doubleClickCallbacks;
|
ActionsSet doubleClickCallbacks;
|
||||||
/// @brief element tooltip text
|
/// @brief element tooltip text
|
||||||
std::wstring tooltip;
|
std::wstring tooltip;
|
||||||
|
/// @brief element tooltip delay
|
||||||
|
float tooltipDelay = 0.5f;
|
||||||
|
|
||||||
UINode(glm::vec2 size);
|
UINode(glm::vec2 size);
|
||||||
public:
|
public:
|
||||||
@@ -202,6 +204,9 @@ namespace gui {
|
|||||||
virtual void setTooltip(const std::wstring& text);
|
virtual void setTooltip(const std::wstring& text);
|
||||||
virtual const std::wstring getTooltip() const;
|
virtual const std::wstring getTooltip() const;
|
||||||
|
|
||||||
|
virtual void setTooltipDelay(float delay);
|
||||||
|
virtual float getTooltipDelay() const;
|
||||||
|
|
||||||
virtual glm::vec4 calcColor() const;
|
virtual glm::vec4 calcColor() const;
|
||||||
|
|
||||||
/// @brief Get inner content offset. Used for scroll
|
/// @brief Get inner content offset. Used for scroll
|
||||||
|
|||||||
@@ -146,6 +146,9 @@ static void _readUINode(UiXmlReader& reader, xml::xmlelement element, UINode& no
|
|||||||
if (element->has("tooltip")) {
|
if (element->has("tooltip")) {
|
||||||
node.setTooltip(util::str2wstr_utf8(element->attr("tooltip").getText()));
|
node.setTooltip(util::str2wstr_utf8(element->attr("tooltip").getText()));
|
||||||
}
|
}
|
||||||
|
if (element->has("tooltip-delay")) {
|
||||||
|
node.setTooltipDelay(element->attr("tooltip-delay").asFloat());
|
||||||
|
}
|
||||||
|
|
||||||
if (auto onclick = create_action(reader, element, "onclick")) {
|
if (auto onclick = create_action(reader, element, "onclick")) {
|
||||||
node.listenAction(onclick);
|
node.listenAction(onclick);
|
||||||
|
|||||||
@@ -267,6 +267,9 @@ static int p_get_pressed_color(UINode* node) {
|
|||||||
static int p_get_tooltip(UINode* node) {
|
static int p_get_tooltip(UINode* node) {
|
||||||
return state->pushstring(util::wstr2str_utf8(node->getTooltip()));
|
return state->pushstring(util::wstr2str_utf8(node->getTooltip()));
|
||||||
}
|
}
|
||||||
|
static int p_get_tooltip_delay(UINode* node) {
|
||||||
|
return state->pushnumber(node->getTooltipDelay());
|
||||||
|
}
|
||||||
static int p_get_pos(UINode* node) {
|
static int p_get_pos(UINode* node) {
|
||||||
return lua::pushvec2_arr(state->getLua(), node->getPos());
|
return lua::pushvec2_arr(state->getLua(), node->getPos());
|
||||||
}
|
}
|
||||||
@@ -304,6 +307,7 @@ static int l_gui_getattr(lua_State* L) {
|
|||||||
{"hoverColor", p_get_hover_color},
|
{"hoverColor", p_get_hover_color},
|
||||||
{"pressedColor", p_get_pressed_color},
|
{"pressedColor", p_get_pressed_color},
|
||||||
{"tooltip", p_get_tooltip},
|
{"tooltip", p_get_tooltip},
|
||||||
|
{"tooltipDelay", p_get_tooltip_delay},
|
||||||
{"pos", p_get_pos},
|
{"pos", p_get_pos},
|
||||||
{"wpos", p_get_wpos},
|
{"wpos", p_get_wpos},
|
||||||
{"size", p_get_size},
|
{"size", p_get_size},
|
||||||
@@ -352,6 +356,9 @@ static void p_set_pressed_color(UINode* node, int idx) {
|
|||||||
static void p_set_tooltip(UINode* node, int idx) {
|
static void p_set_tooltip(UINode* node, int idx) {
|
||||||
node->setTooltip(util::str2wstr_utf8(state->tostring(idx)));
|
node->setTooltip(util::str2wstr_utf8(state->tostring(idx)));
|
||||||
}
|
}
|
||||||
|
static void p_set_tooltip_delay(UINode* node, int idx) {
|
||||||
|
node->setTooltipDelay(state->tonumber(idx));
|
||||||
|
}
|
||||||
static void p_set_pos(UINode* node, int idx) {
|
static void p_set_pos(UINode* node, int idx) {
|
||||||
node->setPos(state->tovec2(idx));
|
node->setPos(state->tovec2(idx));
|
||||||
}
|
}
|
||||||
@@ -472,6 +479,7 @@ static int l_gui_setattr(lua_State* L) {
|
|||||||
{"hoverColor", p_set_hover_color},
|
{"hoverColor", p_set_hover_color},
|
||||||
{"pressedColor", p_set_pressed_color},
|
{"pressedColor", p_set_pressed_color},
|
||||||
{"tooltip", p_set_tooltip},
|
{"tooltip", p_set_tooltip},
|
||||||
|
{"tooltipDelay", p_set_tooltip_delay},
|
||||||
{"pos", p_set_pos},
|
{"pos", p_set_pos},
|
||||||
{"wpos", p_set_wpos},
|
{"wpos", p_set_wpos},
|
||||||
{"size", p_set_size},
|
{"size", p_set_size},
|
||||||
|
|||||||
Reference in New Issue
Block a user