Esempio n. 1
0
        /// <summary>
        /// Clear the contents of the tool window associated with this <see cref="T:ToolWindowActivationHelper"/>
        /// </summary>
        protected virtual void ClearContents()
        {
            FrameVisibilityFlags flags = myFrameVisibility;

            switch (flags & FrameVisibilityFlags.FrameVisibilityMask)
            {
            case FrameVisibilityFlags.Covered:
            case FrameVisibilityFlags.Visible:
                IMonitorSelectionService monitor = myMonitorSelectionService;
                monitor.SelectionChanged      -= new EventHandler <MonitorSelectionEventArgs>(MonitorSelectionChanged);
                monitor.DocumentWindowChanged -= new EventHandler <MonitorSelectionEventArgs>(DocumentWindowChanged);
                myFrameVisibility              = FrameVisibilityFlags.Hidden | (flags & FrameVisibilityFlags.PersistentFlagsMask);
                SetCurrentDocument(null, null);
                break;
            }
        }
Esempio n. 2
0
        private void HandlePossibleFrameModeChange()
        {
            object      frameModeObj;
            VSFRAMEMODE frameMode;

            if (VSConstants.S_OK == myFrame.GetProperty((int)__VSFPROPID.VSFPROPID_FrameMode, out frameModeObj) &&
                myLastFrameMode != (frameMode = (VSFRAMEMODE)frameModeObj))
            {
                myLastFrameMode = frameMode;
                FrameVisibilityFlags flags = myFrameVisibility;
                if ((flags & FrameVisibilityFlags.FrameVisibilityMask) == FrameVisibilityFlags.Covered &&
                    0 != (flags & FrameVisibilityFlags.HasBeenVisible))
                {
                    OnShow((int)__FRAMESHOW.FRAMESHOW_WinShown);
                }
            }
        }
Esempio n. 3
0
        private void ShowContents()
        {
            FrameVisibilityFlags flags = myFrameVisibility;

            switch (flags & FrameVisibilityFlags.FrameVisibilityMask)
            {
            case FrameVisibilityFlags.Covered:
                myFrameVisibility = FrameVisibilityFlags.Visible | (flags & FrameVisibilityFlags.PersistentFlagsMask) | FrameVisibilityFlags.HasBeenVisible;
                break;

            case FrameVisibilityFlags.Hidden:
                IMonitorSelectionService monitor = myMonitorSelectionService;
                monitor.SelectionChanged      += new EventHandler <MonitorSelectionEventArgs>(MonitorSelectionChanged);
                monitor.DocumentWindowChanged += new EventHandler <MonitorSelectionEventArgs>(DocumentWindowChanged);
                myNotifyCallback.ActivatorVisibleWindowSessionBeginning(this);
                SetCurrentDocument(SafeGetCurrentDocument(monitor) as DocDataType, monitor.CurrentDocumentView as DocViewType);
                myFrameVisibility         = FrameVisibilityFlags.Visible | (flags & FrameVisibilityFlags.PersistentFlagsMask) | FrameVisibilityFlags.HasBeenVisible;
                CurrentSelectionContainer = monitor.CurrentSelectionContainer as SelectionContainerType ?? monitor.CurrentDocumentView as SelectionContainerType;
                break;
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Implements <see cref="IVsWindowFrameNotify3.OnShow"/>
        /// </summary>
        protected int OnShow(int fShow)
        {
            FrameVisibilityFlags flags      = myFrameVisibility;
            FrameVisibilityFlags startFlags = flags & ~(FrameVisibilityFlags.FrameVisibilityMask | FrameVisibilityFlags.PersistentFlagsMask);

            myFrameVisibility &= FrameVisibilityFlags.FrameVisibilityMask | FrameVisibilityFlags.PersistentFlagsMask;
            switch ((__FRAMESHOW)fShow)
            {
            case (__FRAMESHOW)__FRAMESHOW2.FRAMESHOW_BeforeWinHidden:
                myFrameVisibility |= FrameVisibilityFlags.PendingHiddenMeansClosed;
                break;

            case __FRAMESHOW.FRAMESHOW_WinMinimized:
            case __FRAMESHOW.FRAMESHOW_TabDeactivated:
                // VS2010 is sending a BeforeWinHidden/TabDeactivated/Hidden, which results in a covered state
                // with a closed window. If closed is already pending, don't degrade to cover pending instead.
                myFrameVisibility |= 0 != (startFlags & FrameVisibilityFlags.PendingHiddenMeansClosed) ? FrameVisibilityFlags.PendingHiddenMeansClosed : FrameVisibilityFlags.PendingHiddenMeansCovered;
                break;

            case __FRAMESHOW.FRAMESHOW_DestroyMultInst:
            case __FRAMESHOW.FRAMESHOW_WinClosed:
                ClearContents();
                break;

            case __FRAMESHOW.FRAMESHOW_WinHidden:
                bool           cover = false;
                object         frameModeObj;
                VSFRAMEMODE    frameMode = (VSFRAMEMODE)(-1);
                IVsWindowFrame frame     = myFrame;
                if (frame != null &&
                    VSConstants.S_OK == frame.GetProperty((int)__VSFPROPID.VSFPROPID_FrameMode, out frameModeObj))
                {
                    // VS is changing the framemode during a hide request without telling us, always check and reset
                    // at this point so that a move on a hidden window does not reshow it.
                    myLastFrameMode = frameMode = (VSFRAMEMODE)frameModeObj;
                }
                if (0 != (startFlags & FrameVisibilityFlags.PendingHiddenMeansCovered))
                {
                    cover = true;
                }
                else if (0 == (startFlags & FrameVisibilityFlags.PendingHiddenMeansClosed))
                {
                    cover = frameMode == VSFRAMEMODE.VSFM_MdiChild;
                }
                if (cover)
                {
                    myFrameVisibility = FrameVisibilityFlags.Covered | (flags & FrameVisibilityFlags.PersistentFlagsMask);
                }
                else
                {
                    ClearContents();
                }
                break;

            case __FRAMESHOW.FRAMESHOW_AutoHideSlideBegin:
            case __FRAMESHOW.FRAMESHOW_WinMaximized:
            case __FRAMESHOW.FRAMESHOW_WinRestored:
            case __FRAMESHOW.FRAMESHOW_WinShown:
                ShowContents();
                break;
            }
            return(VSConstants.S_OK);
        }