private void FloatingPane_StartDrag(object sender, EventArgs e) { _sideLocationPane?.Close(); _sideLocationPane = null; _windowLocationPane?.Close(); _windowLocationPane = null; SelectedPane = null; }
public void CancelSelection() { if (SelectedPane != null) { SelectedPane.IsHighlighted = false; SelectedPane = null; } _insertionIndicatorManager?.HideInsertionIndicator(); _windowLocationPane?.Close(); _windowLocationPane = null; _sideLocationPane?.Close(); _sideLocationPane = null; }
public void CancelSelection() { if (SelectedPane != null) { SelectedPane.IsHighlighted = false; SelectedPane = null; } _insertionIndicatorManager?.HideInsertionIndicator(); _windowLocationPane?.Close(); _windowLocationPane = null; _sideLocationPane?.Close(); _sideLocationPane = null; System.Diagnostics.Debug.WriteLine("CancelSelection()"); }
public void Shutdown() { try { _windowLocationPane?.Close(); _windowLocationPane = null; } catch { // Ignore } try { _sideLocationPane?.Close(); _sideLocationPane = null; } catch { // Ignore } }
private void FloatingWindow_LocationChanged(object sender, EventArgs e) { System.Diagnostics.Trace.Assert(sender is FloatingPane); Window floatingWindow = sender as Window; Point cursorPositionOnScreen = OpenControls.Wpf.Utilities.Windows.GetCursorPosition(); ISelectablePane previousPane = SelectedPane; bool foundSelectedPane = false; int windowCount = 0; List <IntPtr> hWnds = new List <IntPtr>(); Dictionary <IntPtr, IFloatingPane> dict = new Dictionary <IntPtr, IFloatingPane>(); List <IFloatingPane> floatingPanes = (sender is FloatingToolPaneGroup) ? FloatingToolPaneGroups : FloatingDocumentPaneGroups; foreach (IFloatingPane iFloatingPane in floatingPanes) { if (iFloatingPane != sender) { Point cursorPositionInFloatingPane = (iFloatingPane as FloatingPane).PointFromScreen(cursorPositionOnScreen); ViewContainer viewContainer = (iFloatingPane.IViewContainer as ViewContainer); if ( (cursorPositionInFloatingPane.X >= 0) && (cursorPositionInFloatingPane.X <= iFloatingPane.ActualWidth) && (cursorPositionInFloatingPane.Y >= 0) && (cursorPositionInFloatingPane.Y <= iFloatingPane.ActualHeight) ) { var wih = new System.Windows.Interop.WindowInteropHelper((iFloatingPane as FloatingPane)); hWnds.Add(wih.Handle); dict.Add(wih.Handle, iFloatingPane); windowCount++; } } } if (windowCount > 0) { IntPtr intPtr = GetTopmostWindow(hWnds); if (dict.ContainsKey(intPtr)) { foundSelectedPane = true; IFloatingPane iFloatingPane = dict[intPtr]; if (SelectedPane != null) { SelectedPane.IsHighlighted = false; } if (SelectedPane != iFloatingPane) { _windowLocationPane?.Close(); _windowLocationPane = null; SelectedPane = iFloatingPane; iFloatingPane.IsHighlighted = true; _windowLocationPane = new WindowLocationPane(); _windowLocationPane.AllowsTransparency = true; _windowLocationPane.ShowIcons(WindowLocation.Middle); ViewContainer viewContainer = (iFloatingPane.IViewContainer as ViewContainer); Point topLeftPanePoint = viewContainer.PointToScreen(new Point(0, 0)); PresentationSource source = PresentationSource.FromVisual(viewContainer); double dpix = source.CompositionTarget.TransformToDevice.M11; double dpiy = source.CompositionTarget.TransformToDevice.M22; _windowLocationPane.Left = topLeftPanePoint.X / dpix; _windowLocationPane.Top = topLeftPanePoint.Y / dpiy; _windowLocationPane.Width = viewContainer.ActualWidth; _windowLocationPane.Height = viewContainer.ActualHeight; _windowLocationPane.Show(); } _sideLocationPane?.Close(); _sideLocationPane = null; } } if (!foundSelectedPane) { Point cursorPositionInMainWindow = IFloatingPaneHost.RootGrid.PointFromScreen(cursorPositionOnScreen); if ( (cursorPositionInMainWindow.X >= 0) && (cursorPositionInMainWindow.X <= IFloatingPaneHost.RootGrid.ActualWidth) && (cursorPositionInMainWindow.Y >= 0) && (cursorPositionInMainWindow.Y <= IFloatingPaneHost.RootGrid.ActualHeight) ) { Type paneType = (sender is FloatingDocumentPaneGroup) ? typeof(DocumentPaneGroup) : typeof(ToolPaneGroup); var pane = IFloatingPaneHost.FindSelectablePane(cursorPositionOnScreen); foundSelectedPane = pane != null; if ((pane != null) && (SelectedPane != pane)) { if (SelectedPane != null) { SelectedPane.IsHighlighted = false; } pane.IsHighlighted = true; SelectedPane = pane; _windowLocationPane?.Close(); _windowLocationPane = null; if ((paneType == pane.GetType()) || ((pane is DocumentPanel) && (sender is FloatingDocumentPaneGroup))) { _windowLocationPane = new WindowLocationPane(); _windowLocationPane.AllowsTransparency = true; if (SelectedPane is DocumentPanel) { _windowLocationPane.ShowIcons(WindowLocation.Middle); } Point topLeftPanePoint = pane.PointToScreen(new Point(0, 0)); PresentationSource source = PresentationSource.FromVisual((UIElement)pane); double dpix = source.CompositionTarget.TransformToDevice.M11; double dpiy = source.CompositionTarget.TransformToDevice.M22; _windowLocationPane.Left = topLeftPanePoint.X / dpix; _windowLocationPane.Top = topLeftPanePoint.Y / dpiy; _windowLocationPane.Width = SelectedPane.ActualWidth; _windowLocationPane.Height = SelectedPane.ActualHeight; _windowLocationPane.Show(); } } if (sender is FloatingToolPaneGroup) { if (_sideLocationPane == null) { _sideLocationPane = new SideLocationPane(); _sideLocationPane.AllowsTransparency = true; } Point topLeftRootPoint = IFloatingPaneHost.RootPane.PointToScreen(new Point(0, 0)); PresentationSource source = PresentationSource.FromVisual(IFloatingPaneHost.RootPane); double dpix = source.CompositionTarget.TransformToDevice.M11; double dpiy = source.CompositionTarget.TransformToDevice.M22; _sideLocationPane.Left = topLeftRootPoint.X / dpix; _sideLocationPane.Top = topLeftRootPoint.Y / dpiy; _sideLocationPane.Width = IFloatingPaneHost.RootPane.ActualWidth; _sideLocationPane.Height = IFloatingPaneHost.RootPane.ActualHeight; _sideLocationPane.Show(); } } } if (!foundSelectedPane) { SelectedPane = null; _windowLocationPane?.Close(); _windowLocationPane = null; } if ((previousPane != null) && (SelectedPane != previousPane)) { previousPane.IsHighlighted = false; } WindowLocation windowLocation = WindowLocation.None; if (sender is FloatingDocumentPaneGroup) { _sideLocationPane?.Close(); _sideLocationPane = null; } if (_sideLocationPane != null) { windowLocation = _sideLocationPane.TrySelectIndicator(cursorPositionOnScreen); switch (windowLocation) { case WindowLocation.LeftSide: case WindowLocation.RightSide: case WindowLocation.TopSide: case WindowLocation.BottomSide: if ((_insertionIndicatorManager != null) && (_insertionIndicatorManager.ParentGrid != IFloatingPaneHost)) { _insertionIndicatorManager.HideInsertionIndicator(); _insertionIndicatorManager = null; } if (_insertionIndicatorManager == null) { _insertionIndicatorManager = new InsertionIndicatorManager(IFloatingPaneHost.RootGrid); } _insertionIndicatorManager.ShowInsertionIndicator(windowLocation); return; } } if ((_windowLocationPane != null) && (SelectedPane != null)) { windowLocation = _windowLocationPane.TrySelectIndicator(cursorPositionOnScreen); if ((_insertionIndicatorManager != null) && (_insertionIndicatorManager.ParentGrid != SelectedPane)) { _insertionIndicatorManager.HideInsertionIndicator(); _insertionIndicatorManager = null; } if (_insertionIndicatorManager == null) { if (SelectedPane is IFloatingPane) { _insertionIndicatorManager = new InsertionIndicatorManager(((SelectedPane as IFloatingPane).IViewContainer as ViewContainer)); } else { _insertionIndicatorManager = new InsertionIndicatorManager(SelectedPane as Grid); } } _insertionIndicatorManager.ShowInsertionIndicator(windowLocation); } else { _insertionIndicatorManager?.HideInsertionIndicator(); _insertionIndicatorManager = null; } }