private void closeOverlay() { if (DesktopOverlayWindow != null && DesktopWindow != null && DesktopIconsControl != null) { // create mask image to show while the icons control is rendered on the desktop window Image maskImage = new Image(); maskImage.Source = DesktopIconsControl?.GenerateBitmap(DesktopOverlayWindow.grid); // add the mask image to the desktop DesktopWindow.grid.Children.Add(maskImage); // change toolbar owner if (DesktopToolbar != null) { DesktopToolbar.Owner = DesktopWindow; DesktopToolbar.SendToBottom(); } // setup render callback to hide overlay and continue once image is rendered renderOverlayFrames = 0; CompositionTarget.Rendering += CloseOverlay_CompositionTarget_Rendering; } else if (DesktopOverlayWindow == null) { CairoLogger.Instance.Debug("DesktopManager: Desktop overlay already closed, ignoring"); } else { CairoLogger.Instance.Warning("DesktopManager: Attempted to close desktop overlay using uninitialized properties"); } }
private void destroyToolbar() { if (DesktopToolbar != null) { DesktopToolbar.AllowClose = true; DesktopToolbar.Close(); DesktopToolbar = null; } }
private void OpenOverlay() { if (DesktopOverlayWindow == null && DesktopWindow != null && DesktopIconsControl != null) { DesktopOverlayWindow = new DesktopOverlay(this); // create mask image to show while the icons control is rendered on the overlay window Image maskImage = new Image { Source = DesktopIconsControl?.GenerateBitmap(DesktopWindow.grid) }; // add the mask image to and show the overlay DesktopOverlayWindow.grid.Children.Add(maskImage); DesktopOverlayWindow.Show(); DesktopOverlayWindow.BringToFront(); // migrate the desktop icons control DesktopWindow.grid.Children.Clear(); DesktopOverlayWindow.grid.Children.Add(DesktopIconsControl); // remove the mask image DesktopOverlayWindow.grid.Children.Remove(maskImage); // change ToolBar owner if (DesktopToolbar != null) { DesktopToolbar.Owner = DesktopOverlayWindow; DesktopToolbar.BringToFront(); } } else if (DesktopOverlayWindow != null) { CairoLogger.Instance.Debug("DesktopManager: Desktop overlay already open, ignoring"); } else { CairoLogger.Instance.Warning("DesktopManager: Attempted to show desktop overlay using uninitialized properties"); } }