/// <summary> /// Called when [activated]. /// </summary> /// <param name="disposables">The disposables.</param> protected override void OnActivated(CompositeDisposable disposables) { Mods = new AvaloniaList <string>(); SelectedMods = new AvaloniaList <string>(); CloseCommand = ReactiveCommand.Create(() => { ForceClosePopup(); }).DisposeWith(disposables); ModFilterCommand = ReactiveCommand.Create(() => { IsOpen = true; }).DisposeWith(disposables); SelectedMods.CollectionChanged += (sender, args) => { if (syncingSelectedMods) { return; } syncingSelectedMods = true; IgnoreModsAsync().ConfigureAwait(false); }; base.OnActivated(disposables); }
/// <summary> /// Called when [activated]. /// </summary> /// <param name="disposables">The disposables.</param> protected override void OnActivated(CompositeDisposable disposables) { async Task saveState() { if (syncingToken != null) { syncingToken.Cancel(); } syncingToken = new CancellationTokenSource(); if (shouldToggleGameMods) { previousIgnoreGameMods = IgnoreGameMods; } await IgnoreModsAsync(syncingToken.Token).ConfigureAwait(false); } Mods = new AvaloniaList <Mod>(); SelectedMods = new AvaloniaList <Mod>(); CloseCommand = ReactiveCommand.Create(() => { ForceClosePopup(); }).DisposeWith(disposables); ModFilterCommand = ReactiveCommand.Create(() => { IsOpen = true; }).DisposeWith(disposables); SelectedMods.CollectionChanged += (sender, args) => { if (!settingValues) { saveState().ConfigureAwait(false); } }; this.WhenAnyValue(p => p.IgnoreGameMods).Subscribe(s => { if (!settingValues && previousIgnoreGameMods != IgnoreGameMods) { shouldToggleGameMods = true; saveState().ConfigureAwait(false); } }).DisposeWith(disposables); base.OnActivated(disposables); }
protected virtual Size MeasureOverrideInternal(Size availableSize) { double num1 = 0.0; double num2 = 0.0; IAvaloniaList <IVisual> visualChildren = this.VisualChildren; int count = visualChildren.Count; for (int index = 0; index < count; ++index) { if (visualChildren[index] is ILayoutable layoutable) { layoutable.Measure(availableSize); num1 = Math.Max(num1, layoutable.DesiredSize.Width); num2 = Math.Max(num2, layoutable.DesiredSize.Height); } } return(new Size(num1, num2)); }
private static void UpdateLogicalChild( IControl control, IAvaloniaList <ILogical> logicalChildren, object oldValue, object newValue) { if (oldValue != newValue) { if (oldValue is IControl child) { logicalChildren.Remove(child); } child = newValue as IControl; if (child != null && !logicalChildren.Contains(child)) { child.SetValue(Control.TemplatedParentProperty, control.TemplatedParent); logicalChildren.Add(child); } } }