コード例 #1
0
        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); }
     }
 }