private void setInputMode(InputModes value) { visualScopes.Clear(); lastVisualScopeMarker = null; switch (value) { case InputModes.RegexManipulation: if (lastTextBeforeInputModeChange!=Text) { ResetRootScope(); lastTextBeforeInputModeChange = Text; } CanDrawScopes = true; ReadOnly = true; BackColor = regexModeBackColor; CacheSpecialMarks = true; raiseInputModeChangedEvent(); break; case InputModes.StandardEdit: ShowSPaces = false; ShowTabs = false; ShowNewLines = false; CacheSpecialMarks = false; CanDrawScopes = false; ReadOnly = false; BackColor = editModeBackColor; raiseInputModeChangedEvent(); break; default: break; } }
private void OnMouseMove(object sender, MouseEventArgs e) { if (!CanDrawScopes || DesignMode || Text == string.Empty) return; // LockWindowUpdate(Handle); Point cursorPos = new Point(e.X, e.Y); int cursorCharPos = GetCharIndexFromPosition(cursorPos); int cursorLine = GetLineFromCharIndex(cursorCharPos); Scope innerScope = RootScope.FindInnerScope(cursorCharPos, 1); VisualScopeMarker visualScopeMarker = GetVisualScopeMarker(innerScope); if (visualScopeMarker == null) { return; } bool intersectsWithCursor = visualScopeMarker.IntersectsWithCursor(cursorPos); if (!intersectsWithCursor) { if (lastVisualScopeMarker != null) { lastVisualScopeMarker.OnDeactivate(); } if (ActiveScope == null) return; lastScope = null; ActiveScope = null; return; } if (lastVisualScopeMarker != null && lastVisualScopeMarker != visualScopeMarker) { lastVisualScopeMarker.OnDeactivate(); } lastVisualScopeMarker = visualScopeMarker; if (visualScopeMarker.IsActive) { visualScopeMarker.OnMouseMove(e); } else { visualScopeMarker.OnActivate(); } if (lastScope == null && innerScope != null) { lastScope = innerScope; ActiveScope = innerScope; } else { if (lastScope == innerScope) { return; } else { lastScope = innerScope; ActiveScope = innerScope; } } }