[Bf-blender-cvs] [0b964ad] temp_localview_split: Some more tweaks for local view checks
Julian Eisel
noreply at git.blender.org
Sat Aug 6 03:41:42 CEST 2016
Commit: 0b964ad7f0f8096c9d23bbca4f74adee9e5e5d0b
Author: Julian Eisel
Date: Sat Aug 6 03:18:15 2016 +0200
Branches: temp_localview_split
https://developer.blender.org/rB0b964ad7f0f8096c9d23bbca4f74adee9e5e5d0b
Some more tweaks for local view checks
===================================================================
M source/blender/editors/screen/screen_context.c
M source/blender/editors/space_view3d/view3d_view.c
M source/blender/editors/transform/transform_manipulator.c
===================================================================
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index f005a6b..4f379c4 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -117,10 +117,9 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
base = BASACT;
#endif
-/* helper to check if base is visible considering layer and local view */
-#define LAYER_AND_LOCALVIEW_CHECK(localviews, base, lay) \
- (BKE_localview_is_valid(localviews) ? \
- BKE_localview_info_cmp(localviews, base->object->localview) : (base->lay & lay))
+/* helper to check for local view if needed */
+#define LOCALVIEW_CHECK(localviews, base) \
+ (!BKE_localview_is_valid(localviews) || BKE_localview_info_cmp(localviews, base->object->localview))
if (CTX_data_dir(member)) {
CTX_data_dir_set(result, screen_context_dir);
@@ -136,8 +135,8 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
const bool visible_objects = CTX_data_equals(member, "visible_objects");
for (base = scene->base.first; base; base = base->next) {
- if ((base->object->restrictflag & OB_RESTRICT_VIEW) == 0) {
- if (LAYER_AND_LOCALVIEW_CHECK(localviews, base, lay)) {
+ if ((base->object->restrictflag & OB_RESTRICT_VIEW) == 0 && (base->lay & lay)) {
+ if (LOCALVIEW_CHECK(localviews, base)) {
if (visible_objects)
CTX_data_id_list_add(result, &base->object->id);
else
@@ -154,8 +153,8 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
const bool selectable_objects = CTX_data_equals(member, "selectable_objects");
for (base = scene->base.first; base; base = base->next) {
- if ((base->object->restrictflag & (OB_RESTRICT_VIEW | OB_RESTRICT_SELECT)) == 0) {
- if (LAYER_AND_LOCALVIEW_CHECK(localviews, base, lay)) {
+ if ((base->object->restrictflag & (OB_RESTRICT_VIEW | OB_RESTRICT_SELECT)) == 0 && (base->lay & lay)) {
+ if (LOCALVIEW_CHECK(localviews, base)) {
if (selectable_objects)
CTX_data_id_list_add(result, &base->object->id);
else
@@ -172,8 +171,8 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
const bool selected_objects = CTX_data_equals(member, "selected_objects");
for (base = scene->base.first; base; base = base->next) {
- if ((base->flag & SELECT)) {
- if (LAYER_AND_LOCALVIEW_CHECK(localviews, base, lay)) {
+ if ((base->flag & SELECT) && (base->lay & lay)) {
+ if (LOCALVIEW_CHECK(localviews, base)) {
if (selected_objects)
CTX_data_id_list_add(result, &base->object->id);
else
@@ -190,8 +189,8 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
const bool selected_editable_objects = CTX_data_equals(member, "selected_editable_objects");
for (base = scene->base.first; base; base = base->next) {
- if ((base->flag & SELECT) && (base->object->restrictflag & OB_RESTRICT_VIEW) == 0) {
- if (LAYER_AND_LOCALVIEW_CHECK(localviews, base, lay)) {
+ if ((base->flag & SELECT) && (base->object->restrictflag & OB_RESTRICT_VIEW) == 0 && (base->lay & lay)) {
+ if (LOCALVIEW_CHECK(localviews, base)) {
if (0 == BKE_object_is_libdata(base->object)) {
if (selected_editable_objects)
CTX_data_id_list_add(result, &base->object->id);
@@ -211,8 +210,8 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
/* Visible + Editable, but not necessarily selected */
for (base = scene->base.first; base; base = base->next) {
- if ((base->object->restrictflag & OB_RESTRICT_VIEW) == 0) {
- if (LAYER_AND_LOCALVIEW_CHECK(localviews, base, lay)) {
+ if ((base->object->restrictflag & OB_RESTRICT_VIEW) == 0 && (base->lay & lay)) {
+ if (LOCALVIEW_CHECK(localviews, base)) {
if (0 == BKE_object_is_libdata(base->object)) {
if (editable_objects)
CTX_data_id_list_add(result, &base->object->id);
@@ -638,7 +637,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
return 0; /* not found */
}
-#undef LAYER_AND_LOCALVIEW_CHECK
+#undef LOCALVIEW_CHECK
return -1; /* found but not available */
}
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index dd99fe4..e851f12 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -1060,7 +1060,7 @@ static void view3d_select_loop(ViewContext *vc, Scene *scene, View3D *v3d, ARegi
v3d->xray = true; /* otherwise it postpones drawing */
for (base = scene->base.first; base; base = base->next) {
- if (base->lay & v3d->lay && BKE_localview_is_object_visible(v3d, base->object)) {
+ if ((base->lay & v3d->lay) && BKE_localview_is_object_visible(v3d, base->object)) {
if ((base->object->restrictflag & OB_RESTRICT_SELECT) ||
(use_obedit_skip && (scene->obedit->data == base->object->data)))
{
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index 52e27f7..f0d2bb1 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -341,7 +341,7 @@ static int calc_manipulator_stats(const bContext *C)
}
else if (obedit) {
ob = obedit;
- if (v3d->localviewd ? !BKE_localview_is_object_visible(v3d, ob) : (ob->lay & v3d->lay) == 0)
+ if ((ob->lay & v3d->lay) == 0 || !BKE_localview_is_object_visible(v3d, ob))
return 0;
if (obedit->type == OB_MESH) {
@@ -526,7 +526,7 @@ static int calc_manipulator_stats(const bContext *C)
int mode = TFM_ROTATION; // mislead counting bones... bah. We don't know the manipulator mode, could be mixed
bool ok = false;
- if (v3d->localviewd ? !BKE_localview_is_object_visible(v3d, ob) : (ob->lay & v3d->lay) == 0)
+ if ((ob->lay & v3d->lay) == 0 || !BKE_localview_is_object_visible(v3d, ob))
return 0;
if ((v3d->around == V3D_AROUND_ACTIVE) && (pchan = BKE_pose_channel_active(ob))) {
More information about the Bf-blender-cvs
mailing list