/* TextEditor::foldAll * Folds or unfolds all code folding levels, depending on [fold] *******************************************************************/ void TextEditor::foldAll(bool fold) { #if (wxMAJOR_VERSION >= 3 && wxMINOR_VERSION >= 1) // FoldAll is only available in wxWidgets 3.1+ FoldAll(fold ? wxSTC_FOLDACTION_CONTRACT : wxSTC_FOLDACTION_EXPAND); #else for (int a = 0; a < GetNumberOfLines(); a++) { int level = GetFoldLevel(a); if ((level & wxSTC_FOLDLEVELHEADERFLAG) > 0 && GetFoldExpanded(a) == fold) ToggleFold(a); } #endif updateFolding(); }
bool SciTECom::MarginClick(int position, int modifiers) { int lineClick = SendEditor(SCI_LINEFROMPOSITION, position); //Platform::DebugPrintf("Margin click %d %d %x\n", position, lineClick, // SendEditor(SCI_GETFOLDLEVEL, lineClick) & SC_FOLDLEVELHEADERFLAG); if ((modifiers & SCMOD_SHIFT) && (modifiers & SCMOD_CTRL)) { FoldAll(); } else { int levelClick = SendEditor(SCI_GETFOLDLEVEL, lineClick); if (levelClick & SC_FOLDLEVELHEADERFLAG) { if (modifiers & SCMOD_SHIFT) { EnsureAllChildrenVisible(lineClick, levelClick); } else if (modifiers & SCMOD_CTRL) { ToggleFoldRecursive(lineClick, levelClick); } else { // Toggle this line SendEditor(SCI_TOGGLEFOLD, lineClick); } } } return true; }