Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Craddock <nzcraddock@gmail.com>2020-08-26 19:58:23 +0300
committerNathan Craddock <nzcraddock@gmail.com>2020-08-26 19:58:23 +0300
commit70151e41dc025aa92c80420f7d14df20f58f6354 (patch)
treef6e5b0bf00499d007d57da7516c85c69a667d00c /source/blender/editors/space_outliner/outliner_edit.c
parentb028a43245afeb73ca1b35a3698fbbd329d1f100 (diff)
Outliner: Left and right walk navigation
Previously the left and right arrow keys would close and open the active tree element, but a subsequent key press would not select up or down the tree as is common in tree-based interfaces. Walking left and right now does a selection action after opening or closing the active tree item. For example, a right key press on a closed element will open it's subtree, and an additional right key press will select the first child element. A left key press anywhere in a subtree will first close the active element if it's subtree is expanded. Walking left again will select the parent element. Part of T77408 Differential Revision: https://developer.blender.org/D8650
Diffstat (limited to 'source/blender/editors/space_outliner/outliner_edit.c')
-rw-r--r--source/blender/editors/space_outliner/outliner_edit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c
index 8567dd4da13..99eb9a04c0e 100644
--- a/source/blender/editors/space_outliner/outliner_edit.c
+++ b/source/blender/editors/space_outliner/outliner_edit.c
@@ -152,8 +152,11 @@ void OUTLINER_OT_highlight_update(wmOperatorType *ot)
/* Open or close a tree element, optionally toggling all children recursively */
void outliner_item_openclose(TreeElement *te, bool open, bool toggle_all)
{
- TreeStoreElem *tselem = TREESTORE(te);
+ if (BLI_listbase_is_empty(&te->subtree)) {
+ return;
+ }
+ TreeStoreElem *tselem = TREESTORE(te);
if (open) {
tselem->flag &= ~TSE_CLOSED;
}