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-11-27 00:19:05 +0300
committerNathan Craddock <nzcraddock@gmail.com>2020-12-02 18:58:32 +0300
commit3fc178b19e4c11ac384731c4088b2bd3fa809794 (patch)
treee35687ef554f8c1ae6addb61a20dba07766a7c22 /source/blender/editors/space_outliner/outliner_edit.c
parent3d0c5455edf4e32e6e8120b280710cb4b531e38a (diff)
Outliner: Highlight icons on cursor hover
The icons for collapsed children already draw highlighted when hovered. Because the item icons are now select targets (for outliner to properties editor tab switching) this adds highlights on hover for all outliner element icons.
Diffstat (limited to 'source/blender/editors/space_outliner/outliner_edit.c')
-rw-r--r--source/blender/editors/space_outliner/outliner_edit.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/editors/space_outliner/outliner_edit.c b/source/blender/editors/space_outliner/outliner_edit.c
index bf94e9e04a4..6c0759b9842 100644
--- a/source/blender/editors/space_outliner/outliner_edit.c
+++ b/source/blender/editors/space_outliner/outliner_edit.c
@@ -117,19 +117,27 @@ static int outliner_highlight_update(bContext *C, wmOperator *UNUSED(op), const
TreeElement *hovered_te = outliner_find_item_at_y(
space_outliner, &space_outliner->tree, view_mval[1]);
+ TreeElement *icon_te = NULL;
bool is_over_icon;
if (hovered_te) {
- hovered_te = outliner_find_item_at_x_in_row(
+ icon_te = outliner_find_item_at_x_in_row(
space_outliner, hovered_te, view_mval[0], NULL, &is_over_icon);
}
+
bool changed = false;
- if (!hovered_te || !(hovered_te->store_elem->flag & TSE_HIGHLIGHTED)) {
- changed = outliner_flag_set(&space_outliner->tree, TSE_HIGHLIGHTED | TSE_DRAG_ANY, false);
+ if (!hovered_te || !is_over_icon || !(hovered_te->store_elem->flag & TSE_HIGHLIGHTED) ||
+ !(icon_te->store_elem->flag & TSE_HIGHLIGHTED_ICON)) {
+ /* Clear highlights when nothing is hovered or when a new item is hovered. */
+ changed = outliner_flag_set(&space_outliner->tree, TSE_HIGHLIGHTED_ANY | TSE_DRAG_ANY, false);
if (hovered_te) {
hovered_te->store_elem->flag |= TSE_HIGHLIGHTED;
changed = true;
}
+ if (is_over_icon) {
+ icon_te->store_elem->flag |= TSE_HIGHLIGHTED_ICON;
+ changed = true;
+ }
}
if (changed) {