/// <summary> /// Destroy desktop and switch to <fallback> /// </summary> /// <param name="fallback"></param> public void Remove(VirtualDesktop fallback = null) { IVirtualDesktop fallbackdesktop; if (fallback == null) { // if no fallback is given use desktop to the left except for desktop 0. VirtualDesktop dtToCheck = new VirtualDesktop(DesktopManager.GetDesktop(0)); if (this.Equals(dtToCheck)) { // desktop 0: set fallback to second desktop (= "right" desktop) DesktopManager.VirtualDesktopManagerInternal.GetAdjacentDesktop(_VirtualDesktop, 4, out fallbackdesktop); // 4 = RightDirection } else { // set fallback to "left" desktop DesktopManager.VirtualDesktopManagerInternal.GetAdjacentDesktop(_VirtualDesktop, 3, out fallbackdesktop); // 3 = LeftDirection } } else { // set fallback desktop fallbackdesktop = fallback._VirtualDesktop; } DesktopManager.VirtualDesktopManagerInternal.RemoveDesktop(_VirtualDesktop, fallbackdesktop); }
/// <summary> /// Returns true if application for window <hWnd> is pinned to all desktops /// </summary> /// <param name="hWnd"></param> /// <returns></returns> public static bool IsApplicationPinned(IntPtr hWnd) { if (hWnd == IntPtr.Zero) { throw new ArgumentNullException(); } return(DesktopManager.VirtualDesktopPinnedApps.IsAppIdPinned(DesktopManager.GetAppId(hWnd))); }
/// <summary> /// pin application for window <hWnd> to all desktops /// </summary> /// <param name="hWnd"></param> /// [Obsolete("This method will likely fail, as its sister method fails. It is kept here for reference.")] public static void PinApplication(IntPtr hWnd) { if (hWnd == IntPtr.Zero) { throw new ArgumentNullException(); } string appId = DesktopManager.GetAppId(hWnd); if (!DesktopManager.VirtualDesktopPinnedApps.IsAppIdPinned(appId)) { // pin only if not already pinned DesktopManager.VirtualDesktopPinnedApps.PinAppID(appId); } }
/// <summary> /// unpin application for window <hWnd> from all desktops /// </summary> /// <param name="hWnd"></param> /// [Obsolete("This method will likely fail, as its sister method fails. It is kept here for reference.")] public static void UnpinApplication(IntPtr hWnd) { if (hWnd == IntPtr.Zero) { throw new ArgumentNullException(); } var view = hWnd.GetApplicationView(); string appId = DesktopManager.GetAppId(hWnd); if (DesktopManager.VirtualDesktopPinnedApps.IsAppIdPinned(appId)) { // unpin only if already pinned DesktopManager.VirtualDesktopPinnedApps.UnpinAppID(appId); } }
/// <summary> /// Returns index of desktop object or -1 if not found /// </summary> /// <param name="desktop"></param> /// <returns></returns> public static int GetIndex(VirtualDesktop desktop) { return(DesktopManager.GetDesktopIndex(desktop._VirtualDesktop)); }
/// <summary> /// Create desktop object from a VirtualDesktop at index 0..Count-1 /// </summary> /// <param name="index"></param> /// <returns></returns> public static VirtualDesktop FromIndex(int index) { return(new VirtualDesktop(DesktopManager.GetDesktop(index))); }