/** * Provides a basic folding service and notifies * the plugins for the MarginClick event */ public void OnScintillaControlMarginClick(ScintillaControl sci, int modifiers, int position, int margin) { if (margin == 2) { int line = sci.LineFromPosition(position); sci.ToggleFold(line); } }
/// <summary> /// Applies the state object to a scintilla control /// </summary> private static void ApplyStateObject(ScintillaControl sci, StateObject so, Boolean restorePosition) { if (so.LineCount != sci.LineCount) return; sci.Refresh(); // Update the scintilla control state for (Int32 i = 0; i < so.FoldedLines.Count; i++) { Int32 foldedLine = so.FoldedLines[i]; sci.ToggleFold(foldedLine); } if (so.BookmarkedLines != null) { for (Int32 i = 0; i < so.BookmarkedLines.Count; i++) { Int32 bookmarkedLine = so.BookmarkedLines[i]; sci.MarkerAdd(bookmarkedLine, 0); } sci.Refresh(); // Update again } if (restorePosition) { sci.FirstVisibleLine = so.LineScroll; Int32 line = sci.LineFromPosition(so.Position); sci.SetSel(so.Position, so.Position); sci.EnsureVisible(line); } }
/// <summary> /// Provides a basic folding service and notifies the plugins for the MarginClick event /// </summary> public void OnScintillaControlMarginClick(ScintillaControl sci, Int32 modifiers, Int32 position, Int32 margin) { if (margin == 2) { Int32 line = sci.LineFromPosition(position); if (Control.ModifierKeys == Keys.Control) MarkerManager.ToggleMarker(sci, 0, line); else sci.ToggleFold(line); } }