Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Commit

Permalink
[Tizen] Fix bug to the FastLayoutRenderer (#13334)
Browse files Browse the repository at this point in the history
  • Loading branch information
rookiejava committed Jan 10, 2021
1 parent 788bf84 commit d94a80b
Show file tree
Hide file tree
Showing 16 changed files with 27 additions and 20 deletions.
2 changes: 1 addition & 1 deletion Xamarin.Forms.Platform.Tizen/Cells/EntryCellRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ protected override EvasObject OnGetContent(Cell cell, string part)
layout.MinimumHeightRequest = Forms.ConvertToScaledDP(pixelHeight);

var renderer = Platform.GetOrCreateRenderer(layout);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();

var nativeEntry = Platform.GetRenderer(entry)?.NativeView ?? null;
if (nativeEntry != null)
Expand Down
4 changes: 2 additions & 2 deletions Xamarin.Forms.Platform.Tizen/Cells/ViewCellRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ protected override EvasObject OnGetContent(Cell cell, string part)
height = height > 0 ? height : FindCellContentHeight(viewCell);

renderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(height);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();

UpdatePropagateEvent(viewCell.View);

Expand Down Expand Up @@ -84,7 +84,7 @@ EvasObject CreateReusableContent(ViewCell viewCell)
{
_cacheCandidate.Remove((EvasObject)sender);
};
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();

UpdatePropagateEvent(duplicatedCell.View);
return renderer.NativeView;
Expand Down
2 changes: 1 addition & 1 deletion Xamarin.Forms.Platform.Tizen/FormsApplication.cs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ void UpdateOverlayContent()
if (content != null)
{
var renderer = Platform.GetOrCreateRenderer(content);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
nativeView = renderer?.NativeView;
}
Forms.BaseLayout.SetOverlayPart(nativeView);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public override EvasObject CreateNativeView(int index, EvasObject parent)

layout.Parent = _itemsView;
var renderer = Platform.GetOrCreateRenderer(layout);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
return renderer.NativeView;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public override EvasObject CreateNativeView(int index, EvasObject parent)
var renderer = Platform.GetOrCreateRenderer(view);
var native = renderer.NativeView;
view.Parent = _itemsView;
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();

_nativeFormsTable[native] = view;
return native;
Expand All @@ -121,7 +121,7 @@ public override EvasObject GetHeaderView(EvasObject parent)
{
_headerCache.Parent = _itemsView;
var renderer = Platform.GetOrCreateRenderer(_headerCache);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
return renderer.NativeView;
}
return null;
Expand All @@ -134,7 +134,7 @@ public override EvasObject GetFooterView(EvasObject parent)
{
_footerCache.Parent = _itemsView;
var renderer = Platform.GetOrCreateRenderer(_footerCache);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
return renderer.NativeView;
}
return null;
Expand Down
2 changes: 1 addition & 1 deletion Xamarin.Forms.Platform.Tizen/Native/ListView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -689,7 +689,7 @@ protected GenItemClass GetHeaderFooterItemClass()
renderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(context.Element.MinimumHeightRequest);
}
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
return renderer.NativeView;
}
Expand Down
2 changes: 1 addition & 1 deletion Xamarin.Forms.Platform.Tizen/Native/TitleViewPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public TitleViewPage(EvasObject parent, Xamarin.Forms.Page page, View titleView)
if (_titleView != null)
{
var renderer = Platform.GetOrCreateRenderer(_titleView);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();

this.PackEnd(renderer.NativeView);
}
Expand Down
2 changes: 1 addition & 1 deletion Xamarin.Forms.Platform.Tizen/PopupManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ void OnPromptRequested(Page sender, PromptArguments args)
var layoutrenderer = Platform.GetOrCreateRenderer(layout);

var request = layout.Measure(Device.Idiom == TargetIdiom.Watch ? sender.Width * 0.7 : sender.Width, sender.Height);
(layoutrenderer as LayoutRenderer).RegisterOnLayoutUpdated();
(layoutrenderer as ILayoutRenderer).RegisterOnLayoutUpdated();
layoutrenderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(request.Request.Height);
layoutrenderer.NativeView.MinimumWidth = Forms.ConvertToScaledPixel(request.Request.Width);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Xamarin.Forms.Platform.Tizen
{
public class FastLayoutRenderer : ViewRenderer<Layout, Native.EvasFormsCanvas>, SkiaSharp.IBackgroundCanvas
public class FastLayoutRenderer : ViewRenderer<Layout, Native.EvasFormsCanvas>, SkiaSharp.IBackgroundCanvas, ILayoutRenderer
{
bool _layoutUpdatedRegistered = false;

Expand Down
7 changes: 7 additions & 0 deletions Xamarin.Forms.Platform.Tizen/Renderers/ILayoutRenderer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Xamarin.Forms.Platform.Tizen
{
public interface ILayoutRenderer
{
void RegisterOnLayoutUpdated();
}
}
2 changes: 1 addition & 1 deletion Xamarin.Forms.Platform.Tizen/Renderers/LayoutRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Xamarin.Forms.Platform.Tizen
/// <summary>
/// Renderer of a Layout.
/// </summary>
public class LayoutRenderer : ViewRenderer<Layout, Native.Canvas>, SkiaSharp.IBackgroundCanvas
public class LayoutRenderer : ViewRenderer<Layout, Native.Canvas>, SkiaSharp.IBackgroundCanvas, ILayoutRenderer
{
bool _layoutUpdatedRegistered = false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ void UpdateRefreshLayout()
_refreshLayout = new RefreshLayout();
_refreshLayout.RefreshIconColor = RefreshView.RefreshColor;
_refreshLayoutRenderer = Platform.GetOrCreateRenderer(_refreshLayout);
(_refreshLayoutRenderer as LayoutRenderer).RegisterOnLayoutUpdated();
(_refreshLayoutRenderer as ILayoutRenderer).RegisterOnLayoutUpdated();

Control.Children.Add(_refreshLayoutRenderer.NativeView);
var measured = _refreshLayout.Measure(Element.Width, Element.Height);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ void UpdateItems()
}

var itemsRenderer = Platform.GetOrCreateRenderer(itemsLayout);
(itemsRenderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(itemsRenderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
var measured = itemsLayout.Measure(Element.Width, Element.Height);

MaximumSwipeSize = Forms.ConvertToScaledPixel(
Expand Down
6 changes: 3 additions & 3 deletions Xamarin.Forms.Platform.Tizen/Shell/NavigationView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ EvasObject GetNativeView(View view)
{
var measuredSize = view.Measure(Forms.ConvertToScaledDP(Geometry.Width), Forms.ConvertToScaledDP(Geometry.Height));
var renderer = Platform.GetOrCreateRenderer(view);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
renderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(measuredSize.Request.Height);
return renderer.NativeView;
}
Expand Down Expand Up @@ -395,7 +395,7 @@ void UpdateHeader(View header)
else
{
var renderer = Platform.GetOrCreateRenderer(header);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
_nativeHeader = renderer.NativeView;
_mainLayout.PackEnd(_nativeHeader);
}
Expand Down Expand Up @@ -425,7 +425,7 @@ void UpdateHeaderBehavior()
if (_nativeHeader == null)
{
var renderer = Platform.GetOrCreateRenderer(_header);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
_nativeHeader = renderer.NativeView;
_mainLayout.PackEnd(_nativeHeader);
}
Expand Down
2 changes: 1 addition & 1 deletion Xamarin.Forms.Platform.Tizen/Shell/SearchResultList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ EvasObject GetContent(object data, string part)
var view = data as View;

var renderer = Platform.GetOrCreateRenderer(view);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
var measured = view.Measure(Forms.ConvertToScaledDP(Geometry.Width), Forms.ConvertToScaledDP(Geometry.Width * 3));
renderer.NativeView.MinimumHeight = Forms.ConvertToScaledPixel(measured.Request.Height);
return renderer.NativeView;
Expand Down
2 changes: 1 addition & 1 deletion Xamarin.Forms.Platform.Tizen/Shell/ShellNavBar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ void UpdateTitleView(View titleView)
if (titleView != null)
{
var renderer = Platform.GetOrCreateRenderer(titleView);
(renderer as LayoutRenderer)?.RegisterOnLayoutUpdated();
(renderer as ILayoutRenderer)?.RegisterOnLayoutUpdated();
_nativeTitleView = renderer.NativeView;
_nativeTitleView.Show();
PackEnd(_nativeTitleView);
Expand Down

0 comments on commit d94a80b

Please sign in to comment.