Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-09-06 07:22:12 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-09-06 07:22:12 +0300
commit31026f8c0e17b04f823b0fae808065b66841af6d (patch)
tree1a9b222be849ac638febd49239835542990f615f
parent26c17b0ab12d90ecbee8bc3a1188215ed3c30ddd (diff)
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.
-rw-r--r--source/blender/editors/interface/interface_handlers.c14
-rw-r--r--source/blender/windowmanager/WM_api.h1
-rw-r--r--source/blender/windowmanager/intern/wm_tooltip.c9
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;