Exemplo n.º 1
0
        private async void ListView_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
        {
            TabDraggingChanged?.Invoke(this, true);
            ItemWasDropped = false;

            Logger.Instance.Debug($"ListView_DragItemsStarting. e.Data.RequestedOperation: {e.Data.RequestedOperation}. Items count: {e.Items.Count}.");

            var item = e.Items.FirstOrDefault();

            if (item is TerminalViewModel model)
            {
                await model.TrayProcessCommunicationService.PauseTerminalOutputAsync(model.Terminal.Id, true);

                e.Data.Properties.Add(Constants.TerminalViewModelStateId, await model.SerializeAsync());
            }
        }
Exemplo n.º 2
0
        private void ListView_DragItemsCompleted(ListViewBase sender, DragItemsCompletedEventArgs args)
        {
            TabDraggingChanged?.Invoke(this, false);
            Logger.Instance.Debug($"ListView_DragItemsCompleted. Drop result: {args.DropResult}. Items count: {args.Items.Count}");

            var item = args.Items.FirstOrDefault();

            if (item is TerminalViewModel model)
            {
                if (ItemsSource.Count > 1 && !ItemWasDropped && args.DropResult == DataPackageOperation.None)
                {
                    TabDraggedOutside?.Invoke(sender, args);
                    ItemWasDropped = true;
                }

                if (ItemWasDropped)
                {
                    TabDraggingCompleted?.Invoke(sender, model);
                }

                model.TrayProcessCommunicationService.PauseTerminalOutputAsync(model.Terminal.Id, false);
            }
        }