Skip to content

Commit c73b7bf

Browse files
committed
fix(BaseViewManager): fixes simple translate transforms (microsoft#1227)
A recent change to BaseViewManager seems to have broken simple translate transforms. It looks like a UWP bug where subsequent matrices set to an existing MatrixTransform are ignored. This change works around that issue. Fixes microsoft#1225
1 parent ba05035 commit c73b7bf

File tree

1 file changed

+4
-19
lines changed

1 file changed

+4
-19
lines changed

ReactWindows/ReactNative/UIManager/BaseViewManager.cs

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,14 @@ private static void ApplyProjection(TFrameworkElement view, Matrix3D projectionM
269269
if (IsSimpleTranslationOnly(projectionMatrix))
270270
{
271271
ResetProjectionMatrix(view);
272-
var transform = EnsureMatrixTransform(view);
272+
// We need to use a new instance of MatrixTransform because matrix
273+
// updates to an existing MatrixTransform don't seem to take effect.
274+
var transform = new MatrixTransform();
273275
var matrix = transform.Matrix;
274276
matrix.OffsetX = projectionMatrix.OffsetX;
275277
matrix.OffsetY = projectionMatrix.OffsetY;
276278
transform.Matrix = matrix;
279+
view.RenderTransform = transform;
277280
}
278281
else
279282
{
@@ -315,24 +318,6 @@ private static void ResetRenderTransform(TFrameworkElement view)
315318
view.RenderTransform = null;
316319
}
317320

318-
private static MatrixTransform EnsureMatrixTransform(FrameworkElement view)
319-
{
320-
var transform = view.RenderTransform;
321-
var matrixTransform = transform as MatrixTransform;
322-
if (transform != null && matrixTransform == null)
323-
{
324-
throw new InvalidOperationException("Unknown transform set on framework element.");
325-
}
326-
327-
if (matrixTransform == null)
328-
{
329-
matrixTransform = new MatrixTransform();
330-
view.RenderTransform = matrixTransform;
331-
}
332-
333-
return matrixTransform;
334-
}
335-
336321
private static Matrix3DProjection EnsureProjection(FrameworkElement view)
337322
{
338323
var projection = view.Projection;

0 commit comments

Comments
 (0)