From 31026f8c0e17b04f823b0fae808065b66841af6d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 6 Sep 2018 14:22:12 +1000 Subject: UI: keep showing label tooltip once it's open This means dragging the cursor over the tools will show all labels immediately, but only once a single label is displayed. --- source/blender/editors/interface/interface_handlers.c | 14 +++++++++----- source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm_tooltip.c | 9 +++++++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 86c73b72620..00828bd0fdf 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -7319,14 +7319,18 @@ static void button_activate_init(bContext *C, ARegion *ar, uiBut *but, uiButtonA ui_numedit_set_active(but); } -#if 0 if (UI_but_has_tooltip_label(but)) { /* Show a label for this button. */ - WM_tooltip_immediate_init( - C, CTX_wm_window(C), ar, - ui_but_tooltip_init); + bScreen *sc = WM_window_get_active_screen(data->window); + if ((PIL_check_seconds_timer() - WM_tooltip_time_closed()) < 0.1) { + WM_tooltip_immediate_init( + C, CTX_wm_window(C), ar, + ui_but_tooltip_init); + if (sc->tool_tip) { + sc->tool_tip->pass = 1; + } + } } -#endif } static void button_activate_exit( diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 4a48aec2d68..65cb0f956a5 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -641,6 +641,7 @@ void WM_tooltip_timer_clear(struct bContext *C, struct wmWindow *win); void WM_tooltip_clear(struct bContext *C, struct wmWindow *win); void WM_tooltip_init(struct bContext *C, struct wmWindow *win); void WM_tooltip_refresh(struct bContext *C, struct wmWindow *win); +double WM_tooltip_time_closed(void); #ifdef __cplusplus } diff --git a/source/blender/windowmanager/intern/wm_tooltip.c b/source/blender/windowmanager/intern/wm_tooltip.c index dcf51c1d015..b0d621c2e44 100644 --- a/source/blender/windowmanager/intern/wm_tooltip.c +++ b/source/blender/windowmanager/intern/wm_tooltip.c @@ -37,6 +37,14 @@ #include "WM_api.h" #include "WM_types.h" +#include "PIL_time.h" + +static double g_tooltip_time_closed; +double WM_tooltip_time_closed(void) +{ + return g_tooltip_time_closed; +} + void WM_tooltip_immediate_init( bContext *C, wmWindow *win, ARegion *ar, wmTooltipInitFn init) @@ -95,6 +103,7 @@ void WM_tooltip_clear(bContext *C, wmWindow *win) if (screen->tool_tip->region) { UI_tooltip_free(C, screen, screen->tool_tip->region); screen->tool_tip->region = NULL; + g_tooltip_time_closed = PIL_check_seconds_timer(); } MEM_freeN(screen->tool_tip); screen->tool_tip = NULL; -- cgit v1.2.3