Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moving tabs around does not work #10

Open
manio143 opened this issue Oct 16, 2020 · 0 comments
Open

Moving tabs around does not work #10

manio143 opened this issue Oct 16, 2020 · 0 comments
Labels
bug Something isn't working

Comments

@manio143
Copy link
Owner

Undocking a tab doesn't create a window with it.
Redocking a tab to another dock causes an unrecoverable exception - might this be connected to the reuse of ContentControl in ViewDataTemplate (if so, how to detect potential parent change in its Build(object)?)

 System.InvalidOperationException: The control already has a visual parent.
   at Avalonia.Visual.ValidateVisualChild(IVisual c) in D:\a\1\s\src\Avalonia.Visuals\Visual.cs:line 506
   at Avalonia.Collections.AvaloniaList`1.Add(T item) in D:\a\1\s\src\Avalonia.Base\Collections\AvaloniaList.cs:line 190
   at Avalonia.Controls.Presenters.ContentPresenter.UpdateChild() in D:\a\1\s\src\Avalonia.Controls\Presenters\ContentPresenter.cs:line 265
   at Avalonia.Controls.ItemsControl.OnContainersMaterialized(ItemContainerEventArgs e) in D:\a\1\s\src\Avalonia.Controls\ItemsControl.cs:line 247
   at Avalonia.Controls.Primitives.SelectingItemsControl.OnContainersMaterialized(ItemContainerEventArgs e) in D:\a\1\s\src\Avalonia.Controls\Primitives\SelectingItemsControl.cs:line 362
   at Avalonia.Controls.ItemsControl.<get_ItemContainerGenerator>b__12_0(Object _, ItemContainerEventArgs e) in D:\a\1\s\src\Avalonia.Controls\ItemsControl.cs:line 94
   at Avalonia.Controls.Generators.ItemContainerGenerator.Materialize(Int32 index, Object item) in D:\a\1\s\src\Avalonia.Controls\Generators\ItemContainerGenerator.cs:line 64
   at Avalonia.Controls.Presenters.ItemContainerSync.AddContainers(ItemsPresenterBase owner, Int32 index, IEnumerable items) in D:\a\1\s\src\Avalonia.Controls\Presenters\ItemContainerSync.cs:line 91
   at Avalonia.Controls.Presenters.ItemContainerSync.<ItemsChanged>g__Add|0_0(<>c__DisplayClass0_0& ) in D:\a\1\s\src\Avalonia.Controls\Presenters\ItemContainerSync.cs:line 33
   at Avalonia.Controls.Presenters.ItemContainerSync.ItemsChanged(ItemsPresenterBase owner, IEnumerable items, NotifyCollectionChangedEventArgs e) in D:\a\1\s\src\Avalonia.Controls\Presenters\ItemContainerSync.cs:line 43
   at Avalonia.Controls.Presenters.CarouselPresenter.ItemsChanged(NotifyCollectionChangedEventArgs e) in D:\a\1\s\src\Avalonia.Controls\Presenters\CarouselPresenter.cs:line 102
   at Avalonia.Controls.Presenters.ItemsPresenterBase.Avalonia.Controls.Presenters.IItemsPresenter.ItemsChanged(NotifyCollectionChangedEventArgs e) in D:\a\1\s\src\Avalonia.Controls\Presenters\ItemsPresenterBase.cs:line 156
   at Avalonia.Controls.ItemsControl.ItemsCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e) in D:\a\1\s\src\Avalonia.Controls\ItemsControl.cs:line 394
   at Avalonia.Controls.Primitives.SelectingItemsControl.ItemsCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e) in D:\a\1\s\src\Avalonia.Controls\Primitives\SelectingItemsControl.cs:line 321
   at Avalonia.Collections.NotifyCollectionChangedExtensions.<>c__DisplayClass1_0.<WeakSubscribe>b__0(NotifyCollectionChangedEventArgs e) in D:\a\1\s\src\Avalonia.Base\Collections\NotifyCollectionChangedExtensions.cs:line 43
   at Avalonia.Reactive.LightweightObservableBase`1.PublishNext(T value) in D:\a\1\s\src\Avalonia.Base\Reactive\LightweightObservableBase.cs:line 132
   at Avalonia.Collections.NotifyCollectionChangedExtensions.WeakCollectionChangedObservable.OnEvent(Object sender, NotifyCollectionChangedEventArgs e) in D:\a\1\s\src\Avalonia.Base\Collections\NotifyCollectionChangedExtensions.cs:line 77
   at Avalonia.Utilities.WeakSubscriptionManager.Subscription`1.OnEvent(Object sender, T eventArgs) in D:\a\1\s\src\Avalonia.Base\Utilities\WeakSubscriptionManager.cs:line 187
   at Avalonia.Collections.AvaloniaList`1.NotifyAdd(T item, Int32 index) in D:\a\1\s\src\Avalonia.Base\Collections\AvaloniaList.cs:line 582
   at Avalonia.Collections.AvaloniaList`1.Insert(Int32 index, T item) in D:\a\1\s\src\Avalonia.Base\Collections\AvaloniaList.cs:line 297
   at Dock.Model.FactoryBase.MoveDockable(IDock sourceDock, IDock targetDock, IDockable sourceDockable, IDockable targetDockable) in D:\a\1\s\src\Dock.Model\FactoryBase.cs:line 581
   at Dock.Model.DockManager.MoveDockable(IDockable sourceDockable, IDock sourceDockableOwner, IDock targetDock, Boolean bExecute) in D:\a\1\s\src\Dock.Model\DockManager.cs:line 51
   at Dock.Model.DockManager.DockDockable(IDockable sourceDockable, IDock sourceDockableOwner, IDock targetDock, DockOperation operation, Boolean bExecute) in D:\a\1\s\src\Dock.Model\DockManager.cs:line 253
   at Dock.Model.DockManager.DockDockableIntoDock(IDockable sourceDockable, IDock sourceDockableOwner, IDock targetDock, DragAction action, DockOperation operation, Boolean bExecute) in D:\a\1\s\src\Dock.Model\DockManager.cs:line 277
   at Dock.Model.DockManager.DockDockableIntoDockVisible(IDock sourceDock, IDock targetDock, DragAction action, DockOperation operation, Boolean bExecute) in D:\a\1\s\src\Dock.Model\DockManager.cs:line 286
   at Dock.Model.DockManager.ValidateDock(IDock sourceDock, IDockable targetDockable, DragAction action, DockOperation operation, Boolean bExecute) in D:\a\1\s\src\Dock.Model\DockManager.cs:line 392
   at Dock.Avalonia.DockControlState.Execute(Point point, DockOperation operation, DragAction dragAction, IVisual relativeTo) in D:\a\1\s\src\Dock.Avalonia\DockControlState.cs:line 109
   at Dock.Avalonia.DockControlState.Drop(Point point, DragAction dragAction, IVisual relativeTo) in D:\a\1\s\src\Dock.Avalonia\DockControlState.cs:line 67
   at Dock.Avalonia.DockControlState.Process(Point point, Vector delta, EventType eventType, DragAction dragAction, IVisual activeDockControl, IList`1 dockControls) in D:\a\1\s\src\Dock.Avalonia\DockControlState.cs:line 181
   at Dock.Avalonia.Controls.DockControl.Released(Object sender, PointerReleasedEventArgs e) in D:\a\1\s\src\Dock.Avalonia\Controls\DockControl.cs:line 96
   at Avalonia.Interactivity.Interactive.RaiseEventImpl(RoutedEventArgs e) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 206
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.HierarchyTraverser`2.Traverse(IInteractive target) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 323
   at Avalonia.Interactivity.Interactive.TunnelEvent(RoutedEventArgs e) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 185
   at Avalonia.Interactivity.Interactive.RaiseEvent(RoutedEventArgs e) in D:\a\1\s\src\Avalonia.Interactivity\Interactive.cs:line 140
   at Avalonia.Input.MouseDevice.MouseUp(IMouseDevice device, UInt64 timestamp, IInputRoot root, Point p, PointerPointProperties props, KeyModifiers inputModifiers) in D:\a\1\s\src\Avalonia.Input\MouseDevice.cs:line 277
   at Avalonia.Input.MouseDevice.ProcessRawEvent(RawPointerEventArgs e) in D:\a\1\s\src\Avalonia.Input\MouseDevice.cs:line 128
   at Avalonia.Input.InputManager.ProcessInput(RawInputEventArgs e) in D:\a\1\s\src\Avalonia.Input\InputManager.cs:line 40
   at Avalonia.Win32.WindowImpl.WndProc(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam) in D:\a\1\s\src\Windows\Avalonia.Win32\WindowImpl.cs:line 762
   at Avalonia.Win32.Interop.UnmanagedMethods.DispatchMessage(MSG& lpmsg)
   at Avalonia.Win32.Win32Platform.RunLoop(CancellationToken cancellationToken) in D:\a\1\s\src\Windows\Avalonia.Win32\Win32Platform.cs:line 121
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in D:\a\1\s\src\Avalonia.Base\Threading\Dispatcher.cs:line 65
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in D:\a\1\s\src\Avalonia.Controls\ApplicationLifetimes\ClassicDesktopStyleApplicationLifetime.cs:line 106
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in D:\a\1\s\src\Avalonia.Controls\ApplicationLifetimes\ClassicDesktopStyleApplicationLifetime.cs:line 128
   at Stride.Editor.Program.Main(String[] args) in D:\Documents\Stride Projects\StrideComponentsEditorAvalonia\Stride.Editor\Program.cs:line 17
@manio143 manio143 added the bug Something isn't working label Oct 16, 2020
manio143 added a commit that referenced this issue Oct 18, 2020
When the tab is snapped to another dock it will no longer throw an exception about
already having a visual parent.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant