예제 #1
0
        public static void AddOrUpdate(IVsWindowFrame frame)
        {
            if (frame == null)
            {
                return;
            }

            if (cache.ContainsKey(frame))
            {
                var tv = cache[frame];
                if (names == null)
                {
                    return;
                }

                if (names.ContainsKey(tv.originalName))
                {
                    tv.SetName(names[tv.originalName]);
                }
            }
            else
            {
                try
                {
                    cache[frame] = new TabView(frame);
                }
                catch { /* NOP */ }
            }
        }
예제 #2
0
        // Windowのアクティブ化時(一連のイベントの最後になることが多い(が違うこともある
        public void OnActiveFrameChanged(IVsWindowFrame oldFrame, IVsWindowFrame newFrame)
        {
            Debug.WriteLine($"OnActiveFrameChanged:{newFrame}");

            // ソリューション エクスプローラーをタブから最初に開いた際に元に戻ってしまう
            // もう面倒なのでしつこいくらいに変更をかけるw
            TabView.AddOrUpdate(newFrame);
        }
예제 #3
0
        // 起動時にすでにタブになっているViewを取得
        internal void Initialize()
        {
            var ww = GetAllToolWindowView().ToList();

            Debug.WriteLine($"Initialize  count:{ww.Count}");

            foreach (var twView in ww)
            {
                var frame = tmpFrames.FirstOrDefault(x => x.FrameView == twView);
                TabView.AddOrUpdate(frame);
            }
        }
예제 #4
0
        public TabMonitor(IReadOnlyDictionary <string, string> names)
        {
            this.names = names;

            Application.Current.MainWindow.ContentRendered += ContentRendered;
            TabView.Rename(names);

            void ContentRendered(object s, EventArgs e)
            {
                Application.Current.MainWindow.ContentRendered -= ContentRendered;
                Initialize();
            }
        }
예제 #5
0
        // タブが開いた時・閉じた時?(なにがnewなのか謎)
        public void OnFrameIsOnScreenChanged(IVsWindowFrame frame, bool newIsOnScreen)
        {
            Debug.WriteLine($"OnFrameIsOnScreenChanged:{frame}");

            TabView.AddOrUpdate(frame);
        }
예제 #6
0
 public void ForceRename() => TabView.Rename(names);
예제 #7
0
 public void Rename(IReadOnlyDictionary <string, string> names)
 => TabView.Rename(this.names = names);