fix(ui): wire modal delegates from DetailsIslandView owner
Moved ShowDiffModal/ShowWorktreeModal delegate wiring from AgentStripView (child, possibly detached) to DetailsIslandView (the VM's DataContext owner). TopLevel is resolved at invocation time, not at wiring time, so attachment order no longer matters. AgentStripView reduced to InitializeComponent() only. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,37 +1,8 @@
|
|||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using ClaudeDo.Ui.ViewModels.Islands;
|
|
||||||
using ClaudeDo.Ui.ViewModels.Modals;
|
|
||||||
using ClaudeDo.Ui.Views.Modals;
|
|
||||||
|
|
||||||
namespace ClaudeDo.Ui.Views.Islands;
|
namespace ClaudeDo.Ui.Views.Islands;
|
||||||
|
|
||||||
public partial class AgentStripView : UserControl
|
public partial class AgentStripView : UserControl
|
||||||
{
|
{
|
||||||
public AgentStripView()
|
public AgentStripView() { InitializeComponent(); }
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
DataContextChanged += OnDataContextChanged;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnDataContextChanged(object? sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (DataContext is DetailsIslandViewModel vm)
|
|
||||||
{
|
|
||||||
vm.ShowDiffModal = async (diffVm) =>
|
|
||||||
{
|
|
||||||
var owner = TopLevel.GetTopLevel(this) as Window;
|
|
||||||
if (owner == null) return;
|
|
||||||
var modal = new DiffModalView { DataContext = diffVm };
|
|
||||||
await modal.ShowDialog(owner);
|
|
||||||
};
|
|
||||||
|
|
||||||
vm.ShowWorktreeModal = async (worktreeVm) =>
|
|
||||||
{
|
|
||||||
var owner = TopLevel.GetTopLevel(this) as Window;
|
|
||||||
if (owner == null) return;
|
|
||||||
var modal = new WorktreeModalView { DataContext = worktreeVm };
|
|
||||||
await modal.ShowDialog(owner);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,36 @@
|
|||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
|
using ClaudeDo.Ui.ViewModels.Islands;
|
||||||
|
using ClaudeDo.Ui.Views.Modals;
|
||||||
|
|
||||||
namespace ClaudeDo.Ui.Views.Islands;
|
namespace ClaudeDo.Ui.Views.Islands;
|
||||||
|
|
||||||
public partial class DetailsIslandView : UserControl
|
public partial class DetailsIslandView : UserControl
|
||||||
{
|
{
|
||||||
public DetailsIslandView() { InitializeComponent(); }
|
public DetailsIslandView()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
DataContextChanged += OnDataContextChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDataContextChanged(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (DataContext is DetailsIslandViewModel vm)
|
||||||
|
{
|
||||||
|
vm.ShowDiffModal = async (diffVm) =>
|
||||||
|
{
|
||||||
|
var owner = TopLevel.GetTopLevel(this) as Window;
|
||||||
|
if (owner == null) return;
|
||||||
|
var modal = new DiffModalView { DataContext = diffVm };
|
||||||
|
await modal.ShowDialog(owner);
|
||||||
|
};
|
||||||
|
|
||||||
|
vm.ShowWorktreeModal = async (worktreeVm) =>
|
||||||
|
{
|
||||||
|
var owner = TopLevel.GetTopLevel(this) as Window;
|
||||||
|
if (owner == null) return;
|
||||||
|
var modal = new WorktreeModalView { DataContext = worktreeVm };
|
||||||
|
await modal.ShowDialog(owner);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user