Error after upgrading to Fuse 1.2

  • Fuse version 1.2
  • Operating System macOS siera 1.12.5

after upgrading to Fuse 1.2 this error appeared and i have no clue what it is

System.Exception: element has no caching rect
  at Fuse.Elements.ElementBatch.GetCachingRect (Fuse.Elements.Element elm) <0x15df9578 + 0x00073> in <filename unknown>:0 
  at Fuse.Elements.ElementAtlas.ReinsertElement (Fuse.Elements.Element elm) <0x1661bfc0 + 0x000df> in <filename unknown>:0 
  at Fuse.Elements.ElementBatcher.Draw (Fuse.DrawContext dc) <0x15df7918 + 0x005c3> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x001cf> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001cb> in <filename unknown>:0 
  at Fuse.Controls.Panel.Draw (Fuse.DrawContext dc) <0xfb723a0 + 0x00053> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x000a5> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001af> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x000a5> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001cb> in <filename unknown>:0 
  at Fuse.Controls.Panel.Draw (Fuse.DrawContext dc) <0xfb723a0 + 0x00053> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x000a5> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001cb> in <filename unknown>:0 
  at Fuse.Controls.Panel.Draw (Fuse.DrawContext dc) <0xfb723a0 + 0x00053> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x000a5> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001af> in <filename unknown>:0 
  at Fuse.Controls.Panel.Draw (Fuse.DrawContext dc) <0xfb723a0 + 0x00053> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x000a5> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001cb> in <filename unknown>:0 
  at Fuse.Controls.Panel.Draw (Fuse.DrawContext dc) <0xfb723a0 + 0x00053> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x000a5> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001cb> in <filename unknown>:0 
  at Fuse.Controls.Panel.Draw (Fuse.DrawContext dc) <0xfb723a0 + 0x00053> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x000a5> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001cb> in <filename unknown>:0 
  at Fuse.Controls.Panel.Draw (Fuse.DrawContext dc) <0xfb723a0 + 0x00053> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawNonUnderlayChildren (Fuse.DrawContext dc) <0xfb78c30 + 0x000a5> in <filename unknown>:0 
  at Fuse.Elements.Element.DrawWithChildren (Fuse.DrawContext dc) <0xfb789e0 + 0x0003f> in <filename unknown>:0 
  at Fuse.Elements.Element.CompositEffects (Fuse.DrawContext dc) <0xfb787a0 + 0x001ae> in <filename unknown>:0 
  at Fuse.Elements.Cache.DrawHeuristically (Fuse.DrawContext dc) <0xfb77e60 + 0x0004b> in <filename unknown>:0 
  at Fuse.Elements.Element.Composit (Fuse.DrawContext dc) <0xfb775d0 + 0x0008b> in <filename unknown>:0 
  at Fuse.Elements.Element.Draw (Fuse.DrawContext dc) <0xfb724b0 + 0x001cb> in <filename unknown>:0 
  at Fuse.Controls.Panel.Draw (Fuse.DrawContext dc) <0xfb723a0 + 0x00053> in <filename unknown>:0 
  at Fuse.Desktop.DesktopRootViewport.Draw () <0xfb71c78 + 0x00068> in <filename unknown>:0
InternalError: Unpopped Scissor in Fuse.DrawContext</usr/local/share/uno/Packages/Fuse.Nodes/1.2.0/$.uno:609>

Try running uno clean to remove old temporary build files and then re-run your project.

Thanks for your response
i ran uno clean before with no difference

Hello,

The same bug here (runned uno clean). After some checks I can tell is ClipToBounds="true" related (works when removed).

System.Exception: element has no caching rect
  at Fuse.Elements.ElementBatch.GetCachingRect (Fuse.Elements.Element elm) <0x19751f10 + 0x00073> in <filename unknown>:0 

...

at Fuse.Desktop.DesktopRootViewport.Draw () <0x151af920 + 0x00068> in <filename unknown>:0
InternalError: Unpopped Scissor in Fuse.DrawContext</usr/local/share/uno/Packages/Fuse.Nodes/1.2.0/$.uno:609>

Thanks,

Is there a chance you could share a minimal reproduction that triggers the problem?

@ganaited - are you also on macOS?

Uldis wrote:

Is there a chance you could share a minimal reproduction that triggers the problem?

@ganaited - are you also on macOS?

Sorry for the cryptical reply: yes, on macOS.

The error triggers on Scrolled To="End" – the callback fetches a page and adds items to an observable.

<ScrollView SnapMinTransform="false">

	<Scrolled To="End" Within="1" RelativeTo="ScrollViewSize" ux:Name="atEnd">
		<Callback Handler="{callback}" />
	</Scrolled>

	<StackPanel Orientation="Vertical" ItemSpacing="8">

		<ScrollViewReload Dock="Top" IsLoading="{loading}" />

		<Each ... />
		...

	</StackPanel>

</ScrollView>

in ScrollViewReload.ux where ClipToBounds crashes:

<Panel ux:Class="ScrollViewReload" ClipToBounds="true">

	<Panel ux:Name="reloadPanel" Background="#f5f5f5" Alignment="Top" Height="0" MinHeight="0">
		<Text ux:Name="reloadStatus" Value="Pull to reload..." Alignment="Center" />
	</Panel>

</Panel>

I tried to make a complete, minimal reproduction by using the bits you shared, and it does not crash for me. So I guess that’s something else, and it would be great if you could help us find the cause by adding more things to this until it crashes for you:

<App>
	<Panel ux:Class="ScrollViewReload" ClipToBounds="true">
		<Panel ux:Name="reloadPanel" Background="#f5f5f5" Alignment="Top" Height="0" MinHeight="0">
			<Text ux:Name="reloadStatus" Value="Pull to reload..." Alignment="Center" />
		</Panel>
	</Panel>

	<JavaScript>
		var Observable = require("FuseJS/Observable");
		var list = Observable();
		function callback() {
			console.log("callback");
			for (var i = 0; i < 10; i++) {
				list.add({title: "item" + i});
			}
			atEnd.check();
		}
		callback();
		module.exports = {
			list: list,
			callback: callback
		};
	</JavaScript>

	<ScrollView SnapMinTransform="false">
		<Scrolled To="End" Within="1" RelativeTo="ScrollViewSize" ux:Name="atEnd">
			<Callback Handler="{callback}" />
		</Scrolled>
		<StackPanel ItemSpacing="4" Margin="4">
			<ScrollViewReload />
			<Each Items="{list}">
				<Panel Height="56">
					<Text Value="{title}" Alignment="Center" />
					<Rectangle Color="#18f6" CornerRadius="4" />
				</Panel>
			</Each>
		</StackPanel>
	</ScrollView>
</App>

Nevermind, I think I managed to reproduce the error. For me, it was thrown after I changed the Height of the ScrollViewReload and hit save.

Was that something that you needed to do, too? E.g., save a file and trigger a hot reload?

Uldis wrote:

Nevermind, I think I managed to reproduce the error. For me, it was thrown after I changed the Height of the ScrollViewReload and hit save.

Was that something that you needed to do, too? E.g., save a file and trigger a hot reload?

Oh, yes, the height changed in different states of PullToReload where a fetch happens :wink:

<Panel ux:Class="ScrollViewReload" ClipToBounds="true">

	<bool ux:Property="IsLoading" />
	
	<Panel ux:Name="reloadPanel" Background="#f5f5f5" Alignment="Top" Height="0" MinHeight="0">
		<Text ux:Name="reloadStatus" Value="Pull to reload..." Alignment="Center" />
	</Panel>

	<WhileTrue ux:Name="retainSpace">
		<Change reloadPanel.MinHeight="75" Duration="0" DurationBack="0.3" Easing="CircularIn" />
	</WhileTrue>

	<ScrollingAnimation Range="SnapMin">
		<Change reloadPanel.Height="150" Duration="1" />
	</ScrollingAnimation>

	<PullToReload IsLoading="{Property IsLoading}" ReloadHandler="{reloadHandler}">
		<State ux:Binding="Pulling">
			<Change reloadStatus.Value="Pull to reload..." />
		</State>
		<State ux:Binding="PulledPastThreshold">
			<Change reloadStatus.Value="Release to refresh..." />
		</State>
		<State ux:Binding="Loading">
			<Change reloadStatus.Value="Refreshing..." />
			<Change retainSpace.Value="true" />
		</State>
		<State ux:Binding="Rest">
			<Change reloadStatus.Value="Refreshed..." />
		</State>
	</PullToReload>

</Panel>

There is now a ticket for this issue. You can follow the status there.