diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2017-03-29 13:23:15 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2017-03-29 13:27:10 +0300 |
commit | 38d0ea4f69439ac78af3f6ad0245251e048e18b5 (patch) | |
tree | dd1351e0d13b30ac45f14b5c5aa8f44322684bfe | |
parent | 870440dee910c908e213e5e2638ed2e0d0f010ae (diff) |
Alternative fix for crash displaying 'New Window' keymap item
rB870440dee910c9 just did NULL-check for Main pointer, actual issue is
that bContext pointer was NULL. This can be fixed by ensuring
PROP_ENUM_NO_CONTEXT flag is not set by calling
WM_operator_properties_sanitize when creating RNA buttons. Now, layout
previews are visible in keymap editor too.
-rw-r--r-- | source/blender/editors/interface/interface_templates.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 32 |
2 files changed, 17 insertions, 17 deletions
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index e4d9be3329b..8f042dfbd00 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -3684,6 +3684,8 @@ static void template_keymap_item_properties(uiLayout *layout, const char *title, { uiLayout *flow, *box, *row; + WM_operator_properties_sanitize(ptr, false); + uiItemS(layout); if (title) diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 69da8fd591b..151c21d3cdd 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -817,25 +817,23 @@ struct EnumPropertyItem *wm_window_new_screen_itemf( * for dynamic strings in EnumPropertyItem.name to avoid this. */ static char active_screens[20][MAX_NAME + 12]; - if (bmain) { - for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) { - if (screen->winid) { - BLI_snprintf(active_screens[count_act_screens], sizeof(*active_screens), "%s (Duplicate)", - screen->id.name + 2); - tmp.name = active_screens[count_act_screens++]; - } - else { - tmp.name = screen->id.name + 2; - } + for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) { + if (screen->winid) { + BLI_snprintf(active_screens[count_act_screens], sizeof(*active_screens), "%s (Duplicate)", + screen->id.name + 2); + tmp.name = active_screens[count_act_screens++]; + } + else { + tmp.name = screen->id.name + 2; + } - tmp.value = value; - tmp.identifier = screen->id.name; - UI_id_icon_render(C, CTX_data_scene(C), &screen->id, true, false); - tmp.icon = BKE_icon_id_ensure(&screen->id); + tmp.value = value; + tmp.identifier = screen->id.name; + UI_id_icon_render(C, CTX_data_scene(C), &screen->id, true, false); + tmp.icon = BKE_icon_id_ensure(&screen->id); - RNA_enum_item_add(&item, &totitem, &tmp); - value++; - } + RNA_enum_item_add(&item, &totitem, &tmp); + value++; } RNA_enum_item_end(&item, &totitem); |