Blender  V3.3
outliner_query.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
7 #include <functional>
8 
9 #include "BLI_listbase.h"
10 
11 #include "DNA_space_types.h"
12 
13 #include "outliner_intern.hh"
14 #include "tree/tree_display.hh"
15 
16 using namespace blender::ed::outliner;
17 
18 bool outliner_shows_mode_column(const SpaceOutliner &space_outliner)
19 {
20  const AbstractTreeDisplay &tree_display = *space_outliner.runtime->tree_display;
21 
22  return tree_display.supportsModeColumn() && (space_outliner.flag & SO_MODE_COLUMN);
23 }
24 
29 bool outliner_has_element_warnings(const SpaceOutliner &space_outliner)
30 {
31  std::function<bool(const ListBase &)> recursive_fn;
32 
33  recursive_fn = [&](const ListBase &lb) {
34  LISTBASE_FOREACH (const TreeElement *, te, &lb) {
35  if (te->abstract_element && !te->abstract_element->getWarning().is_empty()) {
36  return true;
37  }
38 
39  if (recursive_fn(te->subtree)) {
40  return true;
41  }
42  }
43 
44  return false;
45  };
46 
47  return recursive_fn(space_outliner.tree);
48 }
#define LISTBASE_FOREACH(type, var, list)
Definition: BLI_listbase.h:336
@ SO_MODE_COLUMN
Base Class For Tree-Displays.
Definition: tree_display.hh:62
bool outliner_has_element_warnings(const SpaceOutliner &space_outliner)
bool outliner_shows_mode_column(const SpaceOutliner &space_outliner)
std::unique_ptr< outliner::AbstractTreeDisplay > tree_display
SpaceOutliner_Runtime * runtime
Establish and manage Outliner trees for different display modes.