show tooltips for menus, currently works for operators and enum properties which...
authorCampbell Barton <ideasman42@gmail.com>
Tue, 15 Nov 2011 14:20:57 +0000 (14:20 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 15 Nov 2011 14:20:57 +0000 (14:20 +0000)
source/blender/editors/interface/interface_layout.c
source/blender/editors/interface/interface_regions.c

index 29d37be1dee1f419b444cb636e0d508bd93e0e45..0844b9581e37cc4b791a88623c3278c3da52b0c2 100644 (file)
@@ -1370,7 +1370,7 @@ static void ui_item_menutype_func(bContext *C, uiLayout *layout, void *arg_mt)
        mt->draw(C, &menu);
 }
 
-static void ui_item_menu(uiLayout *layout, const char *name, int icon, uiMenuCreateFunc func, void *arg, void *argN)
+static void ui_item_menu(uiLayout *layout, const char *name, int icon, uiMenuCreateFunc func, void *arg, void *argN, const char *tip)
 {
        uiBlock *block= layout->root->block;
        uiBut *but;
@@ -1393,11 +1393,11 @@ static void ui_item_menu(uiLayout *layout, const char *name, int icon, uiMenuCre
                w -= 10;
 
        if(name[0] && icon)
-               but= uiDefIconTextMenuBut(block, func, arg, icon, name, 0, 0, w, h, "");
+               but= uiDefIconTextMenuBut(block, func, arg, icon, name, 0, 0, w, h, tip);
        else if(icon)
-               but= uiDefIconMenuBut(block, func, arg, icon, 0, 0, w, h, "");
+               but= uiDefIconMenuBut(block, func, arg, icon, 0, 0, w, h, tip);
        else
-               but= uiDefMenuBut(block, func, arg, name, 0, 0, w, h, "");
+               but= uiDefMenuBut(block, func, arg, name, 0, 0, w, h, tip);
 
        if(argN) { /* ugly .. */
                but->poin= (char*)but;
@@ -1430,7 +1430,7 @@ void uiItemM(uiLayout *layout, bContext *UNUSED(C), const char *menuname, const
        if(layout->root->type == UI_LAYOUT_MENU && !icon)
                icon= ICON_BLANK1;
 
-       ui_item_menu(layout, name, icon, ui_item_menutype_func, mt, NULL);
+       ui_item_menu(layout, name, icon, ui_item_menutype_func, mt, NULL, ""); /* TODO, menu description */
 }
 
 /* label item */
@@ -1514,7 +1514,7 @@ void uiItemMenuF(uiLayout *layout, const char *name, int icon, uiMenuCreateFunc
        if(!func)
                return;
 
-       ui_item_menu(layout, name, icon, func, arg, NULL);
+       ui_item_menu(layout, name, icon, func, arg, NULL, "");
 }
 
 typedef struct MenuItemLevel {
@@ -1560,7 +1560,7 @@ void uiItemMenuEnumO(uiLayout *layout, const char *opname, const char *propname,
        BLI_strncpy(lvl->propname, propname, sizeof(lvl->propname));
        lvl->opcontext= layout->root->opcontext;
 
-       ui_item_menu(layout, name, icon, menu_item_enum_opname_menu, NULL, lvl);
+       ui_item_menu(layout, name, icon, menu_item_enum_opname_menu, NULL, lvl, ot->description);
 }
 
 static void menu_item_enum_rna_menu(bContext *UNUSED(C), uiLayout *layout, void *arg)
@@ -1593,7 +1593,7 @@ void uiItemMenuEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propn
        BLI_strncpy(lvl->propname, propname, sizeof(lvl->propname));
        lvl->opcontext= layout->root->opcontext;
 
-       ui_item_menu(layout, name, icon, menu_item_enum_rna_menu, NULL, lvl);
+       ui_item_menu(layout, name, icon, menu_item_enum_rna_menu, NULL, lvl, RNA_property_description(prop));
 }
 
 /**************************** Layout Items ***************************/
index 837a9d12af158ea45ffd84f8c509f65c448abcde..513f084b6e8dbc9fb35d16b3b092377ca5e5a85d 100644 (file)
@@ -398,7 +398,7 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but)
                }
        }
        
-       if(but->tip && strlen(but->tip)) {
+       if(but->tip && but->tip[0] != '\0') {
                BLI_strncpy(data->lines[data->totline], but->tip, sizeof(data->lines[0]));
                data->color[data->totline]= 0xFFFFFF;
                data->totline++;