void Instance_DrawSelectionChanged(object sender, OoAccessibilitySelectionEventArgs e) { if (e != null && e.SelectedItems != null) { if (e.SelectedItems.Count > 0 && !e.SelectionBounds.IsEmpty) { if (!e.Silent) Logger.Instance.Log(LogPriority.MIDDLE, this, "[GUI INTERACTION] selection changed, count: " + e.SelectedItems.Count.ToString()); SelectedBoundingBox = e.SelectionBounds; } else { Logger.Instance.Log(LogPriority.MIDDLE, this, "[GUI INTERACTION] deselection"); SelectedItem = null; SelectedBoundingBox = new Rectangle(-1, -1, 0, 0); this.DrawSelectFocusRenderer.CurrentBoundingBox = new System.Drawing.Rectangle(-1, -1, 0, 0); } if (windowManager.FocusMode == FollowFocusModes.FOLLOW_MOUSE_FOCUS) { if (e.SelectedItems.Count > 0) { SelectedBoundingBox = e.SelectionBounds; if (e.Source != null && e.Source.DrawPagesObs != null) { SelectedItem = e.SelectedItems[0]; } if (shapeManipulatorFunctionProxy != null && shapeManipulatorFunctionProxy.Active && this.DrawSelectFocusRenderer != null) { StartDrawSelectFocusHighlightingMode(); } } if (e != null && !e.Silent) { if (e.SelectedItems.Count > 0) { windowManager.MoveToObject(e.SelectionBounds); // sync view box on pin device } if ((e.SelectedItems.Count > 0) && (e.SelectedItems.Count > 1 || currentSelection.Count > 1 || currentSelection.Count == 0 || (currentSelection.Count > 0 && !e.SelectedItems[0].Equals(currentSelection[0]))) ) { CommunicateSelection(e.SelectedItems); } } } } currentSelection = e != null && e.SelectedItems != null ? e.SelectedItems : new List<OoShapeObserver>(); }
private void fireDrawSelectionChangedEvent(OoAccessibleDocWnd doc, List<OoShapeObserver> selectedShapeObservers, bool silent = false) { if (DrawSelectionChanged != null) { try { if (LastSelection != null) { foreach (OoShapeObserver shapeObs in LastSelection.SelectedItems) { shapeObs.BoundRectChangeEventHandlers -= OnShapeBoundRectChange; } } LastSelection = new OoAccessibilitySelectionEventArgs(doc, selectedShapeObservers, silent); DrawSelectionChanged.DynamicInvoke(this, LastSelection); foreach (OoShapeObserver shapeObs in LastSelection.SelectedItems) { shapeObs.BoundRectChangeEventHandlers += OnShapeBoundRectChange; } } catch (Exception ex) { Logger.Instance.Log(LogPriority.DEBUG, this, "cant fire selection changed event", ex); } } }