diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-11-15 22:26:25 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-11-15 23:14:46 +0300 |
commit | 0d267737e23ba7032377a1aa2884d40a14025a39 (patch) | |
tree | c5d910ae1d6e39cf7b8c785dc087ccacfb2cab84 /source/blender/editors/interface/interface_regions.c | |
parent | a70357104eb88fec5cabf61f91220a1cb44a7baf (diff) |
UI: support cycling callback for non RNA menus
Diffstat (limited to 'source/blender/editors/interface/interface_regions.c')
-rw-r--r-- | source/blender/editors/interface/interface_regions.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index 40e4da2de94..f62cb4ee68d 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -111,13 +111,19 @@ bool ui_but_menu_step_poll(const uiBut *but) BLI_assert(but->type == UI_BTYPE_MENU); /* currenly only RNA buttons */ - return (but->rnaprop && RNA_property_type(but->rnaprop) == PROP_ENUM); + return ((but->menu_step_func != NULL) || + (but->rnaprop && RNA_property_type(but->rnaprop) == PROP_ENUM)); } int ui_but_menu_step(uiBut *but, int direction) { if (ui_but_menu_step_poll(but)) { - return rna_property_enum_step(but->block->evil_C, &but->rnapoin, but->rnaprop, direction); + if (but->menu_step_func) { + return but->menu_step_func(but->block->evil_C, direction, but->poin); + } + else { + return rna_property_enum_step(but->block->evil_C, &but->rnapoin, but->rnaprop, direction); + } } printf("%s: cannot cycle button '%s'\n", __func__, but->str); |