Fix T60107: gizmos should not show for unselectable objects.
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Thu, 3 Jan 2019 11:39:16 +0000 (12:39 +0100)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Thu, 3 Jan 2019 11:39:16 +0000 (12:39 +0100)
source/blender/editors/space_view3d/view3d_gizmo_armature.c
source/blender/editors/space_view3d/view3d_gizmo_camera.c
source/blender/editors/space_view3d/view3d_gizmo_empty.c
source/blender/editors/space_view3d/view3d_gizmo_forcefield.c
source/blender/editors/space_view3d/view3d_gizmo_lamp.c

index 9766e8f7ff92462946524a7eb5a66d1e863194a4..b29ce64eba5c0e8908b9a8dded23dae69bb0652d 100644 (file)
@@ -138,7 +138,7 @@ static bool WIDGETGROUP_armature_spline_poll(const bContext *C, wmGizmoGroupType
 
        ViewLayer *view_layer = CTX_data_view_layer(C);
        Base *base = BASACT(view_layer);
-       if (base && BASE_VISIBLE(v3d, base)) {
+       if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
                Object *ob = BKE_object_pose_armature_get(base->object);
                if (ob) {
                        const bArmature *arm = ob->data;
index ace22094e530eb334b40971694ea299f9506626a..472c95712239ce0fb52369065ae199b8433a1dd6 100644 (file)
@@ -72,7 +72,7 @@ static bool WIDGETGROUP_camera_poll(const bContext *C, wmGizmoGroupType *UNUSED(
 
        ViewLayer *view_layer = CTX_data_view_layer(C);
        Base *base = BASACT(view_layer);
-       if (base && BASE_VISIBLE(v3d, base)) {
+       if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
                Object *ob = base->object;
                if (ob->type == OB_CAMERA) {
                        Camera *camera = ob->data;
index e5dafad07579ef6ddaff5bec593f9acea77769e7..24236ac2e6cae5f1a965290a7fb890c542f929bf 100644 (file)
@@ -120,7 +120,7 @@ static bool WIDGETGROUP_empty_image_poll(const bContext *C, wmGizmoGroupType *UN
 
        ViewLayer *view_layer = CTX_data_view_layer(C);
        Base *base = BASACT(view_layer);
-       if (base && BASE_VISIBLE(v3d, base)) {
+       if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
                Object *ob = base->object;
                if (ob->type == OB_EMPTY) {
                        if (ob->empty_drawtype == OB_EMPTY_IMAGE) {
index 0e3d214ae3c57c73c8ecb448e8aea6be30e05bb4..656836488ba60e2eda84456977b90600bc461dc7 100644 (file)
@@ -64,7 +64,7 @@ static bool WIDGETGROUP_forcefield_poll(const bContext *C, wmGizmoGroupType *UNU
 
        ViewLayer *view_layer = CTX_data_view_layer(C);
        Base *base = BASACT(view_layer);
-       if (base && BASE_VISIBLE(v3d, base)) {
+       if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
                Object *ob = base->object;
                if (ob->pd && ob->pd->forcefield) {
                        return true;
index c4e93234aa566a431481f7acb23129d4d3e539c9..0edc30597c4568efc87ecb03c91ea98d0adc1db0 100644 (file)
@@ -65,7 +65,7 @@ static bool WIDGETGROUP_lamp_spot_poll(const bContext *C, wmGizmoGroupType *UNUS
 
        ViewLayer *view_layer = CTX_data_view_layer(C);
        Base *base = BASACT(view_layer);
-       if (base && BASE_VISIBLE(v3d, base)) {
+       if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
                Object *ob = base->object;
                if (ob->type == OB_LAMP) {
                        Lamp *la = ob->data;
@@ -174,7 +174,7 @@ static bool WIDGETGROUP_lamp_area_poll(const bContext *C, wmGizmoGroupType *UNUS
 
        ViewLayer *view_layer = CTX_data_view_layer(C);
        Base *base = BASACT(view_layer);
-       if (base && BASE_VISIBLE(v3d, base)) {
+       if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
                Object *ob = base->object;
                if (ob->type == OB_LAMP) {
                        Lamp *la = ob->data;
@@ -258,7 +258,7 @@ static bool WIDGETGROUP_lamp_target_poll(const bContext *C, wmGizmoGroupType *UN
 
        ViewLayer *view_layer = CTX_data_view_layer(C);
        Base *base = BASACT(view_layer);
-       if (base && BASE_VISIBLE(v3d, base)) {
+       if (base && BASE_VISIBLE(v3d, base) && BASE_SELECTABLE(v3d, base)) {
                Object *ob = base->object;
                if (ob->type == OB_LAMP) {
                        Lamp *la = ob->data;