internal void SelectedTextChange(double widthChangeDelta)
        {
            var scaledDelta     = widthChangeDelta / Scale;
            var cumulativeShift = scaledDelta / 2;

            var orderedSelectedParts = SelectedTextParts.OrderBy(a => a.StartMills);

            foreach (var part in orderedSelectedParts)
            {
                part.TextWidth += scaledDelta;

                if (part.TextWidth < 40)
                {
                    part.TextWidth = 40;
                }

                if (ChangeTimeWithSize)
                {
                    part.StartMills += cumulativeShift; // starts at half (for first) then shifts left "half * 2" for each next one
                    cumulativeShift += scaledDelta;
                }
            }
        }
        private void DoAddSpaceBefore()
        {
            if (SelectedTextParts.Count == 0)
            {
                Messenger.Default.Send("No selection");
                return;
            }

            TextPart firstWord       = SelectedTextParts.OrderBy(a => a.StartMills).First();
            int      collectionIndex = 0;

            TextPart newSpace = new TextPart
            {
                TextWidth = 500,
                Text      = "???"
            };

            newSpace.StartMills = firstWord.StartMills - newSpace.TextWidth - 100;

            TextParts.Insert(collectionIndex, newSpace);

            RaisePropertyChanged("FullText");
        }