Fix context menu w/o an active object
authorCampbell Barton <ideasman42@gmail.com>
Thu, 20 Dec 2018 04:26:27 +0000 (15:26 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 20 Dec 2018 04:26:27 +0000 (15:26 +1100)
Also remove special case when no items are selected,
since this only has one or two menu items, one being the add menu
which can be better accessed from the header or add shortcut.

If the no-selection case is to have it's own alternate menu - it should
be more complete before enabling.

release/scripts/startup/bl_ui/space_node.py
release/scripts/startup/bl_ui/space_view3d.py

index 73afb62567c8e49514fdb1c0a51af9bba265f4f0..9754cf64a863c3989e2751b75f01eadb3279603b 100644 (file)
@@ -328,12 +328,15 @@ class NODE_MT_specials(Menu):
         layout = self.layout
 
         # If nothing is selected
+        # (disabled for now until it can be made more useful).
+        '''
         selected_nodes_len = len(context.selected_nodes)
         if selected_nodes_len == 0:
             layout.operator_context = 'INVOKE_DEFAULT'
             layout.menu("NODE_MT_add")
             layout.operator("node.clipboard_paste", text="Paste")
             return
+        '''
 
         # If something is selected
         layout.operator_context = 'INVOKE_DEFAULT'
index 3507ddb6c1feb91b12aeef9189b85e95ea62c7ed..85c43e78e0a20fed91a0e8b73229ce2d2ecce8e8 100644 (file)
@@ -1733,17 +1733,23 @@ class VIEW3D_MT_object_specials(Menu):
         obj = context.object
         is_eevee = context.scene.render.engine == 'BLENDER_EEVEE'
 
-        # If nothing is selected
         selected_objects_len = len(context.selected_objects)
+
+        # If nothing is selected
+        # (disabled for now until it can be made more useful).
+        '''
         if selected_objects_len == 0:
 
             layout.menu("VIEW3D_MT_add", text="Add")
             layout.operator("view3d.pastebuffer", text="Paste Objects", icon='PASTEDOWN')
 
             return
+        '''
 
         # If something is selected
-        if obj.type == 'MESH':
+        if obj is None:
+            pass
+        elif obj.type == 'MESH':
 
             layout.operator("object.shade_smooth", text="Shade Smooth")
             layout.operator("object.shade_flat", text="Shade Flat")
@@ -1758,7 +1764,7 @@ class VIEW3D_MT_object_specials(Menu):
             if selected_objects_len > 1:
                 layout.operator("object.join")
 
-        if obj.type == 'CAMERA':
+        elif obj.type == 'CAMERA':
             layout.operator_context = 'INVOKE_REGION_WIN'
 
             if obj.data.type == 'PERSP':
@@ -1788,7 +1794,7 @@ class VIEW3D_MT_object_specials(Menu):
                     props.input_scale = 0.02
                     props.header_text = "DOF Distance: %.3f"
 
-        if obj.type in {'CURVE', 'FONT'}:
+        elif obj.type in {'CURVE', 'FONT'}:
             layout.operator_context = 'INVOKE_REGION_WIN'
 
             props = layout.operator("wm.context_modal_mouse", text="Extrude Size")
@@ -1807,14 +1813,14 @@ class VIEW3D_MT_object_specials(Menu):
 
             layout.operator_menu_enum("object.origin_set", text="Set Origin...", property="type")
 
-        if obj.type == 'GPENCIL':
+        elif obj.type == 'GPENCIL':
             layout.operator("gpencil.convert", text="Convert to Path").type = 'PATH'
             layout.operator("gpencil.convert", text="Convert to Bezier Curves").type = 'CURVE'
             layout.operator("gpencil.convert", text="Convert to Mesh").type = 'POLY'
 
             layout.operator_menu_enum("object.origin_set", text="Set Origin...", property="type")
 
-        if obj.type == 'EMPTY':
+        elif obj.type == 'EMPTY':
             layout.operator_context = 'INVOKE_REGION_WIN'
 
             props = layout.operator("wm.context_modal_mouse", text="Empty Draw Size")
@@ -1823,7 +1829,7 @@ class VIEW3D_MT_object_specials(Menu):
             props.input_scale = 0.01
             props.header_text = "Empty Draw Size: %.3f"
 
-        if obj.type == 'LIGHT':
+        elif obj.type == 'LIGHT':
             light = obj.data
 
             layout.operator_context = 'INVOKE_REGION_WIN'
@@ -2826,11 +2832,15 @@ class VIEW3D_MT_edit_mesh_specials(Menu):
 
         layout.operator_context = 'INVOKE_REGION_WIN'
 
+        # If nothing is selected
+        # (disabled for now until it can be made more useful).
+        '''
         # If nothing is selected
         if not (selected_verts_len or selected_edges_len or selected_faces_len):
             layout.menu("VIEW3D_MT_mesh_add", text="Add")
 
             return
+        '''
 
         # Else something is selected