1
1

UI: Hide collection tab when scene master collection is active

CollectionLineart does not care about the configurations
in master collection.
Other options are not applicaple for master collection as well.
Hence hiding it.

Reviewed by Dalai Felinto (dfelinto)

Differential Revision: https://developer.blender.org/D11702
This commit is contained in:
2021-06-28 15:46:26 +08:00
committed by Jeroen Bakker
parent bec8e436a1
commit e9d6f2164e
3 changed files with 19 additions and 12 deletions

View File

@@ -25,6 +25,10 @@ class CollectionButtonsPanel:
bl_region_type = 'WINDOW'
bl_context = "collection"
@classmethod
def poll(cls, context):
return context.collection != context.scene.collection
def lineart_make_line_type_entry(col, line_type, text_disp, expand, search_from):
col.prop(line_type, "use", text=text_disp)
@@ -38,12 +42,6 @@ def lineart_make_line_type_entry(col, line_type, text_disp, expand, search_from)
class COLLECTION_PT_collection_flags(CollectionButtonsPanel, Panel):
bl_label = "Restrictions"
@classmethod
def poll(cls, context):
vl = context.view_layer
vlc = vl.active_layer_collection
return (vlc.name != 'Master Collection')
def draw(self, context):
layout = self.layout
layout.use_property_split = True

View File

@@ -154,7 +154,7 @@ static bool buttons_context_path_world(ButsContextPath *path)
return false;
}
static bool buttons_context_path_collection(ButsContextPath *path, wmWindow *window)
static bool buttons_context_path_collection(bContext *C, ButsContextPath *path, wmWindow *window)
{
PointerRNA *ptr = &path->ptr[path->len - 1];
@@ -162,10 +162,19 @@ static bool buttons_context_path_collection(ButsContextPath *path, wmWindow *win
if (RNA_struct_is_a(ptr->type, &RNA_Collection)) {
return true;
}
Scene *scene = CTX_data_scene(C);
/* if we have a view layer, use the view layer's active collection */
if (buttons_context_path_view_layer(path, window)) {
ViewLayer *view_layer = path->ptr[path->len - 1].data;
Collection *c = view_layer->active_collection->collection;
/* Do not show collection tab for master collection. */
if (c == scene->master_collection) {
return false;
}
if (c) {
RNA_id_pointer_create(&c->id, &path->ptr[path->len]);
path->len++;
@@ -600,7 +609,7 @@ static bool buttons_context_path(
found = buttons_context_path_world(path);
break;
case BCONTEXT_COLLECTION: /* This is for Line Art collection flags */
found = buttons_context_path_collection(path, window);
found = buttons_context_path_collection(C, path, window);
break;
case BCONTEXT_TOOL:
found = true;

View File

@@ -202,11 +202,11 @@ int ED_buttons_tabs_list(SpaceProperties *sbuts, short *context_tabs_array)
context_tabs_array[length] = BCONTEXT_WORLD;
length++;
}
if (length != 0) {
context_tabs_array[length] = -1;
length++;
}
if (sbuts->pathflag & (1 << BCONTEXT_COLLECTION)) {
if (length != 0) {
context_tabs_array[length] = -1;
length++;
}
context_tabs_array[length] = BCONTEXT_COLLECTION;
length++;
}