From 6618852b7f11fe097dfe817d6af09e4d535e000e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 23 Feb 2018 17:01:22 +1100 Subject: [PATCH] WM: Add WM_menutype_poll function Wraps menutype poll, no functional changes. --- .../blender/editors/interface/interface_region_menu_pie.c | 3 ++- .../editors/interface/interface_region_menu_popup.c | 3 ++- source/blender/windowmanager/WM_api.h | 1 + source/blender/windowmanager/intern/wm.c | 8 ++++++++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/interface/interface_region_menu_pie.c b/source/blender/editors/interface/interface_region_menu_pie.c index b3d5c74f77a..37a603d967f 100644 --- a/source/blender/editors/interface/interface_region_menu_pie.c +++ b/source/blender/editors/interface/interface_region_menu_pie.c @@ -214,9 +214,10 @@ int UI_pie_menu_invoke(struct bContext *C, const char *idname, const wmEvent *ev return OPERATOR_CANCELLED; } - if (mt->poll && mt->poll(C, mt) == 0) + if (WM_menutype_poll(C, mt) == false) { /* cancel but allow event to pass through, just like operators do */ return (OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH); + } pie = UI_pie_menu_begin(C, IFACE_(mt->label), ICON_NONE, event); layout = UI_pie_menu_layout(pie); diff --git a/source/blender/editors/interface/interface_region_menu_popup.c b/source/blender/editors/interface/interface_region_menu_popup.c index aa3e2464237..ae133e909bd 100644 --- a/source/blender/editors/interface/interface_region_menu_popup.c +++ b/source/blender/editors/interface/interface_region_menu_popup.c @@ -518,9 +518,10 @@ int UI_popup_menu_invoke(bContext *C, const char *idname, ReportList *reports) return OPERATOR_CANCELLED; } - if (mt->poll && mt->poll(C, mt) == 0) + if (WM_menutype_poll(C, mt) == false) { /* cancel but allow event to pass through, just like operators do */ return (OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH); + } pup = UI_popup_menu_begin(C, IFACE_(mt->label), ICON_NONE); layout = UI_popup_menu_layout(pup); diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index b7639889bcd..a910e1bce2e 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -378,6 +378,7 @@ struct MenuType *WM_menutype_find(const char *idname, bool quiet); bool WM_menutype_add(struct MenuType *mt); void WM_menutype_freelink(struct MenuType *mt); void WM_menutype_free(void); +bool WM_menutype_poll(struct bContext *C, struct MenuType *mt); /* wm_gesture_ops.c */ int WM_gesture_border_invoke (struct bContext *C, struct wmOperator *op, const struct wmEvent *event); diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index a09cc4aeb31..9e877a83b3e 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -337,6 +337,14 @@ void WM_menutype_free(void) menutypes_hash = NULL; } +bool WM_menutype_poll(bContext *C, MenuType *mt) +{ + if (mt->poll != NULL) { + return mt->poll(C, mt); + } + return true; +} + /* ****************************************** */ void WM_keymap_init(bContext *C)