Commit: 6618852b7f11fe097dfe817d6af09e4d535e000e
Author: Campbell Barton
Date:   Fri Feb 23 17:01:22 2018 +1100
Branches: master
https://developer.blender.org/rB6618852b7f11fe097dfe817d6af09e4d535e000e

WM: Add WM_menutype_poll function

Wraps menutype poll, no functional changes.

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

M       source/blender/editors/interface/interface_region_menu_pie.c
M       source/blender/editors/interface/interface_region_menu_popup.c
M       source/blender/windowmanager/WM_api.h
M       source/blender/windowmanager/intern/wm.c

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

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)

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to