[Bf-blender-cvs] [fd42fe66161] blender2.8: Fix T57139: Transform overlay shows even when disabled
Campbell Barton
noreply at git.blender.org
Wed Dec 19 02:30:42 CET 2018
Commit: fd42fe661612455c2d2558481c6587c0b7d95366
Author: Campbell Barton
Date: Wed Dec 19 12:26:33 2018 +1100
Branches: blender2.8
https://developer.blender.org/rBfd42fe661612455c2d2558481c6587c0b7d95366
Fix T57139: Transform overlay shows even when disabled
Transform bypasses the gizmo API for drawing overlays,
so custom checks are needed.
Also don't draw the gizmo in other windows when transforming.
===================================================================
M source/blender/editors/transform/transform.c
M source/blender/editors/transform/transform_gizmo_3d.c
===================================================================
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 90bfaf7bc9d..2aff12266a7 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -1942,22 +1942,47 @@ static void drawHelpline(bContext *UNUSED(C), int x, int y, void *customdata)
}
}
-static void drawTransformView(const struct bContext *C, ARegion *UNUSED(ar), void *arg)
+static bool transinfo_show_overlay(const struct bContext *C, TransInfo *t, ARegion *ar)
+{
+ /* Don't show overlays when not the active view and when overlay is disabled: T57139 */
+ bool ok = false;
+ if (ar == t->ar) {
+ ok = true;
+ }
+ else {
+ ScrArea *sa = CTX_wm_area(C);
+ if (sa->spacetype == SPACE_VIEW3D) {
+ View3D *v3d = sa->spacedata.first;
+ if ((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) {
+ ok = true;
+ }
+ }
+ }
+ return ok;
+}
+
+static void drawTransformView(const struct bContext *C, ARegion *ar, void *arg)
{
TransInfo *t = arg;
+ if (!transinfo_show_overlay(C, t, ar)) {
+ return;
+ }
+
GPU_line_width(1.0f);
drawConstraint(t);
drawPropCircle(C, t);
drawSnapping(C, t);
- /* edge slide, vert slide */
- drawEdgeSlide(t);
- drawVertSlide(t);
+ if (ar == t->ar) {
+ /* edge slide, vert slide */
+ drawEdgeSlide(t);
+ drawVertSlide(t);
- /* Rotation */
- drawDial3d(t);
+ /* Rotation */
+ drawDial3d(t);
+ }
}
/* just draw a little warning message in the top-right corner of the viewport to warn that autokeying is enabled */
@@ -2000,23 +2025,30 @@ static void drawAutoKeyWarning(TransInfo *UNUSED(t), ARegion *ar)
GPU_blend(false);
}
-static void drawTransformPixel(const struct bContext *UNUSED(C), ARegion *ar, void *arg)
+static void drawTransformPixel(const struct bContext *C, ARegion *ar, void *arg)
{
TransInfo *t = arg;
- Scene *scene = t->scene;
- ViewLayer *view_layer = t->view_layer;
- Object *ob = OBACT(view_layer);
- /* draw autokeyframing hint in the corner
- * - only draw if enabled (advanced users may be distracted/annoyed),
- * for objects that will be autokeyframed (no point otherwise),
- * AND only for the active region (as showing all is too overwhelming)
- */
- if ((U.autokey_flag & AUTOKEY_FLAG_NOWARNING) == 0) {
- if (ar == t->ar) {
- if (t->flag & (T_OBJECT | T_POSE)) {
- if (ob && autokeyframe_cfra_can_key(scene, &ob->id)) {
- drawAutoKeyWarning(t, ar);
+ if (!transinfo_show_overlay(C, t, ar)) {
+ return;
+ }
+
+ if (ar == t->ar) {
+ Scene *scene = t->scene;
+ ViewLayer *view_layer = t->view_layer;
+ Object *ob = OBACT(view_layer);
+
+ /* draw autokeyframing hint in the corner
+ * - only draw if enabled (advanced users may be distracted/annoyed),
+ * for objects that will be autokeyframed (no point otherwise),
+ * AND only for the active region (as showing all is too overwhelming)
+ */
+ if ((U.autokey_flag & AUTOKEY_FLAG_NOWARNING) == 0) {
+ if (ar == t->ar) {
+ if (t->flag & (T_OBJECT | T_POSE)) {
+ if (ob && autokeyframe_cfra_can_key(scene, &ob->id)) {
+ drawAutoKeyWarning(t, ar);
+ }
}
}
}
diff --git a/source/blender/editors/transform/transform_gizmo_3d.c b/source/blender/editors/transform/transform_gizmo_3d.c
index 1913e35c1da..5a26245c14d 100644
--- a/source/blender/editors/transform/transform_gizmo_3d.c
+++ b/source/blender/editors/transform/transform_gizmo_3d.c
@@ -785,7 +785,7 @@ int ED_transform_calc_gizmo_stats(
const bool use_mat_local = true;
for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
/* only editable and visible layers are considered */
-
+
if (gpencil_layer_is_editable(gpl) && (gpl->actframe != NULL)) {
/* calculate difference matrix */
@@ -1822,6 +1822,9 @@ static bool WIDGETGROUP_gizmo_poll(const struct bContext *C, struct wmGizmoGroup
if (v3d->gizmo_flag & (V3D_GIZMO_HIDE | V3D_GIZMO_HIDE_TOOL)) {
return false;
}
+ if (G.moving & (G_TRANSFORM_OBJ | G_TRANSFORM_EDIT)) {
+ return false;
+ }
return true;
}
@@ -1876,6 +1879,9 @@ static bool WIDGETGROUP_xform_cage_poll(const bContext *C, wmGizmoGroupType *gzg
if (v3d->gizmo_flag & (V3D_GIZMO_HIDE | V3D_GIZMO_HIDE_TOOL)) {
return false;
}
+ if (G.moving & (G_TRANSFORM_OBJ | G_TRANSFORM_EDIT)) {
+ return false;
+ }
return true;
}
More information about the Bf-blender-cvs
mailing list