mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 20:42:21 +02:00
Ctrl+Click for code collapsing
This commit is contained in:
parent
568e54821d
commit
818ca48759
2 changed files with 62 additions and 4 deletions
|
@ -1,3 +1,4 @@
|
|||
#pragma warning disable 168
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Text;
|
||||
|
@ -5179,6 +5180,33 @@ namespace IDE.ui
|
|||
}
|
||||
}
|
||||
|
||||
void SetCollapseLineOpen(int line, bool wantOpen, bool includeChildren)
|
||||
{
|
||||
List<int32> collapseOpenList = scope .();
|
||||
CollapseEntry* parentCollapse = null;
|
||||
|
||||
for (var collapse in mOrderedCollapseEntries)
|
||||
{
|
||||
if (parentCollapse == null)
|
||||
{
|
||||
if (collapse.mAnchorLine == line)
|
||||
{
|
||||
parentCollapse = collapse;
|
||||
collapseOpenList.Add((.)@collapse.Index);
|
||||
if (!includeChildren)
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if ((collapse.mAnchorLine >= parentCollapse.mStartLine) && (collapse.mAnchorLine < parentCollapse.mEndLine))
|
||||
{
|
||||
collapseOpenList.Add((.)@collapse.Index);
|
||||
}
|
||||
}
|
||||
|
||||
for (int32 collapseIdx in collapseOpenList)
|
||||
SetCollapseOpen(collapseIdx, wantOpen);
|
||||
}
|
||||
|
||||
public override void MouseDown(float x, float y, int32 btn, int32 btnCount)
|
||||
{
|
||||
int line = GetLineAt(y);
|
||||
|
@ -5191,10 +5219,13 @@ namespace IDE.ui
|
|||
embed.MouseDown(GetEmbedRect(line, embed), x, y, btn, btnCount);
|
||||
if (btn == 0)
|
||||
{
|
||||
if (btnCount % 2 == 0)
|
||||
bool hasCtrl = mWidgetWindow.IsKeyDown(.Control);
|
||||
if ((btnCount % 2 == 0) || (hasCtrl))
|
||||
{
|
||||
if (var collapseSummary = embed as SourceEditWidgetContent.CollapseSummary)
|
||||
SetCollapseOpen(collapseSummary.mCollapseIndex, true);
|
||||
{
|
||||
SetCollapseLineOpen(line, true, hasCtrl);
|
||||
}
|
||||
else if (var emitEmbed = embed as EmitEmbed)
|
||||
{
|
||||
emitEmbed.mIsOpen = !emitEmbed.mIsOpen;
|
||||
|
@ -5202,6 +5233,28 @@ namespace IDE.ui
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (btn == 1)
|
||||
{
|
||||
float useX = x;
|
||||
float useY = y;
|
||||
|
||||
Menu menu = new Menu();
|
||||
|
||||
var menuItem = menu.AddItem("Expand");
|
||||
menuItem.mOnMenuItemSelected.Add(new (evt) =>
|
||||
{
|
||||
SetCollapseLineOpen(line, true, false);
|
||||
});
|
||||
|
||||
menuItem = menu.AddItem("Expand All|Ctrl+Click");
|
||||
menuItem.mOnMenuItemSelected.Add(new (evt) =>
|
||||
{
|
||||
SetCollapseLineOpen(line, true, true);
|
||||
});
|
||||
|
||||
MenuWidget menuWidget = DarkTheme.sDarkTheme.CreateMenuWidget(menu);
|
||||
menuWidget.Init(this, useX, useY);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -6547,7 +6600,6 @@ namespace IDE.ui
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public void SetCollapseOpen(int collapseIdx, bool wantOpen, bool immediate = false, bool keepCursorVisible = false)
|
||||
{
|
||||
var entry = mOrderedCollapseEntries[collapseIdx];
|
||||
|
|
|
@ -7364,7 +7364,13 @@ namespace IDE.ui
|
|||
int collapseIndex = collapseVal & CollapseRegionView.cIdMask;
|
||||
|
||||
var entry = ewc.mOrderedCollapseEntries[collapseIndex];
|
||||
ewc.SetCollapseOpen(collapseIndex, !entry.mIsOpen);
|
||||
|
||||
if ((mWidgetWindow.IsKeyDown(.Control)))
|
||||
{
|
||||
ewc.[Friend]SetCollapseLineOpen(lineClick, !entry.mIsOpen, true);
|
||||
}
|
||||
else
|
||||
ewc.SetCollapseOpen(collapseIndex, !entry.mIsOpen);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue