[Bf-blender-cvs] [31026f8c0e1] blender2.8: UI: keep showing label tooltip once it's open

Campbell Barton noreply at git.blender.org
Thu Sep 6 06:15:14 CEST 2018


Commit: 31026f8c0e17b04f823b0fae808065b66841af6d
Author: Campbell Barton
Date:   Thu Sep 6 14:22:12 2018 +1000
Branches: blender2.8
https://developer.blender.org/rB31026f8c0e17b04f823b0fae808065b66841af6d

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.

===================================================================

M	source/blender/editors/interface/interface_handlers.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/intern/wm_tooltip.c

===================================================================

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;



More information about the Bf-blender-cvs mailing list