Commit: 043a0052699176f4f2c9f2f5bbc98cd5b24128ed
Author: Harley Acheson
Date:   Tue Jan 22 20:34:06 2019 +0100
Branches: master
https://developer.blender.org/rB043a0052699176f4f2c9f2f5bbc98cd5b24128ed

UI: disable scene and view layer delete buttons when not available.

Differential Revision: https://developer.blender.org/D4210

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

M       source/blender/editors/render/render_shading.c
M       source/blender/editors/scene/scene_edit.c

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

diff --git a/source/blender/editors/render/render_shading.c 
b/source/blender/editors/render/render_shading.c
index bc92a45391c..53fc82e3482 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -718,6 +718,12 @@ void SCENE_OT_view_layer_add(wmOperatorType *ot)
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_INTERNAL;
 }
 
+static bool view_layer_remove_poll(bContext *C)
+{
+       Scene *scene = CTX_data_scene(C);
+       return (scene->view_layers.first != scene->view_layers.last);
+}
+
 static int view_layer_remove_exec(bContext *C, wmOperator *UNUSED(op))
 {
        Main *bmain = CTX_data_main(C);
@@ -742,6 +748,7 @@ void SCENE_OT_view_layer_remove(wmOperatorType *ot)
 
        /* api callbacks */
        ot->exec = view_layer_remove_exec;
+       ot->poll = view_layer_remove_poll;
 
        /* flags */
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_INTERNAL;
diff --git a/source/blender/editors/scene/scene_edit.c 
b/source/blender/editors/scene/scene_edit.c
index 60f16835cf3..ddd319fa424 100644
--- a/source/blender/editors/scene/scene_edit.c
+++ b/source/blender/editors/scene/scene_edit.c
@@ -238,6 +238,12 @@ static void SCENE_OT_new(wmOperatorType *ot)
        ot->prop = RNA_def_enum(ot->srna, "type", type_items, 0, "Type", "");
 }
 
+static bool scene_delete_poll(bContext *C)
+{
+       Scene *scene = CTX_data_scene(C);
+       return (scene->id.prev || scene->id.next);
+}
+
 static int scene_delete_exec(bContext *C, wmOperator *UNUSED(op))
 {
        Scene *scene = CTX_data_scene(C);
@@ -263,6 +269,7 @@ static void SCENE_OT_delete(wmOperatorType *ot)
 
        /* api callbacks */
        ot->exec = scene_delete_exec;
+       ot->poll = scene_delete_poll;
 
        /* flags */
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to