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:
authorPhilipp Oeser <info@graphics-engineer.com>2018-12-20 15:00:32 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2018-12-21 23:06:52 +0300
commitc79b8490976554d448435ae9b61d0697ad40e79f (patch)
tree0a408306cd7e9d3b88cb5961b23d5cc3591b4da3 /source/blender/editors/screen/screen_user_menu.c
parente6e2f655857b43326d74577c50755409d7beaf53 (diff)
Fix T58327: Quick Favorites "Remove from Favorites" missing for added
Modifiers Since user menu entries from SPACE_BUTS/SPACE_TOPBAR are also shown in other Editors (SPACE_VIEW3D), also allow these entries to be removed from Quick Favorites from these Editors. Match and deduplicate logic from screen_user_menu_draw() and ui_popup_context_menu_for_button(). Reviewers: campbellbarton, brecht Maniphest Tasks: T58327 Differential Revision: https://developer.blender.org/D4112
Diffstat (limited to 'source/blender/editors/screen/screen_user_menu.c')
-rw-r--r--source/blender/editors/screen/screen_user_menu.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/source/blender/editors/screen/screen_user_menu.c b/source/blender/editors/screen/screen_user_menu.c
index 45f82618d2e..fe2b144611e 100644
--- a/source/blender/editors/screen/screen_user_menu.c
+++ b/source/blender/editors/screen/screen_user_menu.c
@@ -62,11 +62,19 @@
/** \name Menu Type
* \{ */
-bUserMenu *ED_screen_user_menu_find(bContext *C)
+bUserMenu **ED_screen_user_menus_find(bContext *C, uint *r_len)
{
SpaceLink *sl = CTX_wm_space_data(C);
const char *context = CTX_data_mode_string(C);
- return BKE_blender_user_menu_find(&U.user_menus, sl->spacetype, context);
+
+ uint array_len = 3;
+ bUserMenu **um_array = MEM_calloc_arrayN(array_len, sizeof(*um_array), __func__);
+ um_array[0] = BKE_blender_user_menu_find(&U.user_menus, sl->spacetype, context);
+ um_array[1] = (sl->spacetype != SPACE_TOPBAR) ? BKE_blender_user_menu_find(&U.user_menus, SPACE_TOPBAR, context) : NULL;
+ um_array[2] = (sl->spacetype == SPACE_VIEW3D) ? BKE_blender_user_menu_find(&U.user_menus, SPACE_BUTS, context) : NULL;
+
+ *r_len = array_len;
+ return um_array;
}
bUserMenu *ED_screen_user_menu_ensure(bContext *C)
@@ -182,15 +190,10 @@ void ED_screen_user_menu_item_remove(ListBase *lb, bUserMenuItem *umi)
static void screen_user_menu_draw(const bContext *C, Menu *menu)
{
- SpaceLink *sl = CTX_wm_space_data(C);
- const char *context = CTX_data_mode_string(C);
- bUserMenu *um_array[] = {
- BKE_blender_user_menu_find(&U.user_menus, sl->spacetype, context),
- (sl->spacetype != SPACE_TOPBAR) ? BKE_blender_user_menu_find(&U.user_menus, SPACE_TOPBAR, context) : NULL,
- (sl->spacetype == SPACE_VIEW3D) ? BKE_blender_user_menu_find(&U.user_menus, SPACE_BUTS, context) : NULL,
- };
+ uint um_array_len;
+ bUserMenu **um_array = ED_screen_user_menus_find(C, &um_array_len);
bool is_empty = true;
- for (int um_index = 0; um_index < ARRAY_SIZE(um_array); um_index++) {
+ for (int um_index = 0; um_index < um_array_len; um_index++) {
bUserMenu *um = um_array[um_index];
if (um == NULL) {
continue;
@@ -258,6 +261,7 @@ static void screen_user_menu_draw(const bContext *C, Menu *menu)
}
}
}
+ MEM_freeN(um_array);
if (is_empty) {
uiItemL(menu->layout, IFACE_("No menu items found."), ICON_NONE);