protected override bool OnMotionNotifyEvent (EventMotion evnt) { RemovePreviewPopupTimeout (); if (button != 0) MouseMove (evnt.Y); var h = IndicatorHeight; if (TextEditor.HighlightSearchPattern) { hoverOverIndicator = false; if (evnt.Y < h) this.TooltipText = string.Format (GettextCatalog.GetPluralString ("{0} match", "{0} matches", TextEditor.TextViewMargin.SearchResultMatchCount), TextEditor.TextViewMargin.SearchResultMatchCount); } else { hoverOverIndicator = evnt.Y < h; if (hoverOverIndicator) { int errors = 0, warnings = 0, hints = 0, suggestions = 0; foreach (var task in AllTasks) { switch (task.Severity) { case Severity.Error: errors++; break; case Severity.Warning: warnings++; break; case Severity.Hint: hints++; break; case Severity.Suggestion: suggestions++; break; } } string text = null; if (errors == 0 && warnings == 0) { text = GettextCatalog.GetString ("No errors or warnings"); } else if (errors == 0) { text = string.Format (GettextCatalog.GetPluralString ("{0} warning", "{0} warnings", warnings), warnings); } else if (warnings == 0) { text = string.Format (GettextCatalog.GetPluralString ("{0} error", "{0} errors", errors), errors); } else { text = string.Format (GettextCatalog.GetString ("{0} errors and {1} warnings"), errors, warnings); } if (errors > 0) { text += Environment.NewLine + GettextCatalog.GetString ("Click to navigate to the next error"); currentHoverMode = QuickTaskStrip.HoverMode.NextError; } else if (warnings > 0) { text += Environment.NewLine + GettextCatalog.GetString ("Click to navigate to the next warning"); currentHoverMode = QuickTaskStrip.HoverMode.NextWarning; } else if (warnings + hints > 0) { text += Environment.NewLine + GettextCatalog.GetString ("Click to navigate to the next message"); currentHoverMode = QuickTaskStrip.HoverMode.NextMessage; } TooltipText = text; } else { // TextEditorData editorData = TextEditor.GetTextEditorData (); foreach (var task in AllTasks) { double y = GetYPosition (task.Location.Line); if (Math.Abs (y - evnt.Y) < 3) { hoverTask = task; } } base.TooltipText = hoverTask != null ? hoverTask.Description : null; } } if (button == 0 && evnt.State.HasFlag (ModifierType.ShiftMask)) { int line = YToLine (evnt.Y); line = Math.Max (1, line - 2); int lastLine = Math.Min (TextEditor.LineCount, line + 5); var start = TextEditor.GetLine (line); var end = TextEditor.GetLine (lastLine); if (start == null || end == null) { return base.OnMotionNotifyEvent (evnt); } var showSegment = new TextSegment (start.Offset, end.Offset + end.Length - start.Offset); if (previewWindow != null) { previewWindow.SetSegment (showSegment, false); PositionPreviewWindow ((int)evnt.Y); } else { var popup = new PreviewPopup (this, showSegment, TextEditor.Allocation.Width * 4 / 7, (int)evnt.Y); previewPopupTimeout = GLib.Timeout.Add (450, new GLib.TimeoutHandler (popup.Run)); } } else { RemovePreviewPopupTimeout (); DestroyPreviewWindow (); } return base.OnMotionNotifyEvent (evnt); }
protected override bool OnMotionNotifyEvent(EventMotion evnt) { RemovePreviewPopupTimeout(); if (button != 0) { MouseMove(evnt.Y); } var h = IndicatorHeight; if (TextEditor.HighlightSearchPattern) { hoverOverIndicator = false; if (evnt.Y < h) { this.TooltipText = string.Format(GettextCatalog.GetPluralString("{0} match", "{0} matches", TextEditor.TextViewMargin.SearchResultMatchCount), TextEditor.TextViewMargin.SearchResultMatchCount); } } else { hoverOverIndicator = evnt.Y < h; if (hoverOverIndicator) { int errors = 0, warnings = 0, hints = 0, suggestions = 0; foreach (var task in AllTasks) { switch (task.Severity) { case Severity.Error: errors++; break; case Severity.Warning: warnings++; break; case Severity.Hint: hints++; break; case Severity.Suggestion: suggestions++; break; } } string text = null; if (errors == 0 && warnings == 0) { text = GettextCatalog.GetString("No errors or warnings"); } else if (errors == 0) { text = string.Format(GettextCatalog.GetPluralString("{0} warning", "{0} warnings", warnings), warnings); } else if (warnings == 0) { text = string.Format(GettextCatalog.GetPluralString("{0} error", "{0} errors", errors), errors); } else { text = string.Format(GettextCatalog.GetString("{0} errors and {1} warnings"), errors, warnings); } if (errors > 0) { text += Environment.NewLine + GettextCatalog.GetString("Click to navigate to the next error"); currentHoverMode = QuickTaskStrip.HoverMode.NextError; } else if (warnings > 0) { text += Environment.NewLine + GettextCatalog.GetString("Click to navigate to the next warning"); currentHoverMode = QuickTaskStrip.HoverMode.NextWarning; } else if (warnings + hints > 0) { text += Environment.NewLine + GettextCatalog.GetString("Click to navigate to the next message"); currentHoverMode = QuickTaskStrip.HoverMode.NextMessage; } TooltipText = text; } else { // TextEditorData editorData = TextEditor.GetTextEditorData (); foreach (var task in AllTasks) { double y = GetYPosition(task.Location.Line); if (Math.Abs(y - evnt.Y) < 3) { hoverTask = task; } } base.TooltipText = hoverTask != null ? hoverTask.Description : null; } } if (button == 0 && evnt.State.HasFlag(ModifierType.ShiftMask)) { int line = YToLine(evnt.Y); line = Math.Max(1, line - 2); int lastLine = Math.Min(TextEditor.LineCount, line + 5); var start = TextEditor.GetLine(line); var end = TextEditor.GetLine(lastLine); if (start == null || end == null) { return(base.OnMotionNotifyEvent(evnt)); } var showSegment = new TextSegment(start.Offset, end.Offset + end.Length - start.Offset); if (previewWindow != null) { previewWindow.SetSegment(showSegment, false); PositionPreviewWindow((int)evnt.Y); } else { var popup = new PreviewPopup(this, showSegment, TextEditor.Allocation.Width * 4 / 7, (int)evnt.Y); previewPopupTimeout = GLib.Timeout.Add(450, new GLib.TimeoutHandler(popup.Run)); } } else { RemovePreviewPopupTimeout(); DestroyPreviewWindow(); } return(base.OnMotionNotifyEvent(evnt)); }