[Bf-blender-cvs] [9d69b3d48b3] blender2.8: Merge branch 'master' into blender2.8

Campbell Barton noreply at git.blender.org
Tue Dec 19 09:39:56 CET 2017


Commit: 9d69b3d48b3b703c0ce3ebbfdc0ea9327fa9b792
Author: Campbell Barton
Date:   Tue Dec 19 19:42:11 2017 +1100
Branches: blender2.8
https://developer.blender.org/rB9d69b3d48b3b703c0ce3ebbfdc0ea9327fa9b792

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/editors/interface/interface_region_tooltip.c
index f71b71fce43,523e03cb8a5..959d4ae86f5
--- a/source/blender/editors/interface/interface_region_tooltip.c
+++ b/source/blender/editors/interface/interface_region_tooltip.c
@@@ -827,6 -714,43 +774,59 @@@ static ARegion *ui_tooltip_create_with_
  	return ar;
  }
  
+ /** \} */
+ 
+ /* -------------------------------------------------------------------- */
+ /** \name ToolTip Public API
+  * \{ */
+ 
+ 
+ ARegion *ui_tooltip_create_from_button(bContext *C, ARegion *butregion, uiBut *but)
+ {
+ 	wmWindow *win = CTX_wm_window(C);
+ 	/* aspect values that shrink text are likely unreadable */
+ 	const float aspect = min_ff(1.0f, but->block->aspect);
+ 	float init_position[2];
+ 
+ 	if (but->drawflag & UI_BUT_NO_TOOLTIP) {
+ 		return NULL;
+ 	}
+ 	uiTooltipData *data = NULL;
+ 
++	/* custom tips for pre-defined operators */
++	if (but->optype) {
++		if (STREQ(but->optype->idname, "WM_OT_tool_set")) {
++			char keymap[64] = "";
++			RNA_string_get(but->opptr, "keymap", keymap);
++			if (keymap[0]) {
++				ScrArea *sa = CTX_wm_area(C);
++				wmKeyMap *km = WM_keymap_find_all(C, keymap, sa->spacetype, RGN_TYPE_WINDOW);
++				if (km != NULL) {
++					data = ui_tooltip_data_from_keymap(C, km);
++				}
++			}
++		}
++	}
++	/* toolsystem exception */
++
+ 	if (data == NULL) {
+ 		data = ui_tooltip_data_from_button(C, but);
+ 	}
+ 	if (data == NULL) {
+ 		return NULL;
+ 	}
+ 
+ 	init_position[0] = BLI_rctf_cent_x(&but->rect);
+ 	init_position[1] = but->rect.ymin;
+ 
+ 	if (butregion) {
+ 		ui_block_to_window_fl(butregion, but->block, &init_position[0], &init_position[1]);
+ 		init_position[0] = win->eventstate->x;
+ 	}
+ 
+ 	return ui_tooltip_create_with_data(C, data, init_position, aspect);
+ }
+ 
  void ui_tooltip_free(bContext *C, ARegion *ar)
  {
  	ui_region_temp_remove(C, CTX_wm_screen(C), ar);



More information about the Bf-blender-cvs mailing list