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:
authorDalai Felinto <dfelinto@gmail.com>2019-05-20 13:14:48 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-05-20 14:47:37 +0300
commit785ff8e1d2e973e10c1a3aea3a986c7e1d3cf1db (patch)
tree086ac1ae7f7fcf8b49f12d6d904cb2590a1c00b6 /source/blender/editors
parent81320ce7f7c699d832edf8ba0f609bb246389a33 (diff)
UI: add Visibility panel for objects
The outliner should not be the only way for users to change these settings. The Python API was extended to keep these properties positive and keyframable. Differential Revision: https://developer.blender.org/D4889
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/include/UI_interface.h4
-rw-r--r--source/blender/editors/interface/interface.c3
-rw-r--r--source/blender/editors/interface/interface_layout.c10
-rw-r--r--source/blender/editors/space_outliner/outliner_draw.c15
4 files changed, 29 insertions, 3 deletions
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 14d681ee817..5912a3a59e4 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -281,6 +281,9 @@ enum {
/** Value is animated, but the current value differs from the animated one. */
UI_BUT_ANIMATED_CHANGED = 1 << 25,
+
+ /* Draw the checkbox buttons inverted. */
+ UI_BUT_CHECKBOX_INVERT = 1 << 26,
};
/* scale fixed button widths by this to account for DPI */
@@ -1719,6 +1722,7 @@ enum {
UI_ITEM_R_IMMEDIATE = 1 << 8,
UI_ITEM_O_DEPRESS = 1 << 9,
UI_ITEM_R_COMPACT = 1 << 10,
+ UI_ITEM_R_CHECKBOX_INVERT = 1 << 11,
};
#define UI_HEADER_OFFSET ((void)0, 0.4f * UI_UNIT_X)
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index f1724d92402..e436328c139 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -1845,6 +1845,9 @@ int ui_but_is_pushed_ex(uiBut *but, double *value)
}
}
+ if ((but->drawflag & UI_BUT_CHECKBOX_INVERT) && (is_push != -1)) {
+ is_push = !((bool)is_push);
+ }
return is_push;
}
int ui_but_is_pushed(uiBut *but)
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index dc57be4f07f..df4b18477fc 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -1904,6 +1904,10 @@ void uiItemFullR(uiLayout *layout,
}
}
+ if (type != PROP_BOOLEAN) {
+ flag &= ~UI_ITEM_R_CHECKBOX_INVERT;
+ }
+
if (icon == ICON_NONE) {
icon = RNA_property_ui_icon(prop);
}
@@ -2156,6 +2160,12 @@ void uiItemFullR(uiLayout *layout,
but->type = UI_BTYPE_NUM_SLIDER;
}
+ if (flag & UI_ITEM_R_CHECKBOX_INVERT) {
+ if (ELEM(but->type, UI_BTYPE_CHECKBOX, UI_BTYPE_CHECKBOX_N)) {
+ but->drawflag |= UI_BUT_CHECKBOX_INVERT;
+ }
+ }
+
if (toggle && but->type == UI_BTYPE_CHECKBOX) {
but->type = UI_BTYPE_TOGGLE;
}
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index 6a7795393c9..f34f280a29d 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -1088,10 +1088,13 @@ static void outliner_draw_restrictbuts(uiBlock *block,
}
if (soops->show_restrict_flags & SO_RESTRICT_SELECT) {
+ const int icon = RNA_property_boolean_get(&ptr, props.object_hide_select) ?
+ ICON_RESTRICT_SELECT_ON :
+ ICON_RESTRICT_SELECT_OFF;
bt = uiDefIconButR_prop(block,
UI_BTYPE_ICON_TOGGLE,
0,
- 0,
+ icon,
(int)(ar->v2d.cur.xmax - restrict_offsets.select),
te->ys,
UI_UNIT_X,
@@ -1113,10 +1116,13 @@ static void outliner_draw_restrictbuts(uiBlock *block,
}
if (soops->show_restrict_flags & SO_RESTRICT_VIEWPORT) {
+ const int icon = RNA_property_boolean_get(&ptr, props.object_hide_viewport) ?
+ ICON_RESTRICT_VIEW_ON :
+ ICON_RESTRICT_VIEW_OFF;
bt = uiDefIconButR_prop(block,
UI_BTYPE_ICON_TOGGLE,
0,
- 0,
+ icon,
(int)(ar->v2d.cur.xmax - restrict_offsets.viewport),
te->ys,
UI_UNIT_X,
@@ -1138,10 +1144,13 @@ static void outliner_draw_restrictbuts(uiBlock *block,
}
if (soops->show_restrict_flags & SO_RESTRICT_RENDER) {
+ const int icon = RNA_property_boolean_get(&ptr, props.object_hide_render) ?
+ ICON_RESTRICT_RENDER_ON :
+ ICON_RESTRICT_RENDER_OFF;
bt = uiDefIconButR_prop(block,
UI_BTYPE_ICON_TOGGLE,
0,
- 0,
+ icon,
(int)(ar->v2d.cur.xmax - restrict_offsets.render),
te->ys,
UI_UNIT_X,