mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-14 22:34:09 +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;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Text;
|
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)
|
public override void MouseDown(float x, float y, int32 btn, int32 btnCount)
|
||||||
{
|
{
|
||||||
int line = GetLineAt(y);
|
int line = GetLineAt(y);
|
||||||
|
@ -5191,10 +5219,13 @@ namespace IDE.ui
|
||||||
embed.MouseDown(GetEmbedRect(line, embed), x, y, btn, btnCount);
|
embed.MouseDown(GetEmbedRect(line, embed), x, y, btn, btnCount);
|
||||||
if (btn == 0)
|
if (btn == 0)
|
||||||
{
|
{
|
||||||
if (btnCount % 2 == 0)
|
bool hasCtrl = mWidgetWindow.IsKeyDown(.Control);
|
||||||
|
if ((btnCount % 2 == 0) || (hasCtrl))
|
||||||
{
|
{
|
||||||
if (var collapseSummary = embed as SourceEditWidgetContent.CollapseSummary)
|
if (var collapseSummary = embed as SourceEditWidgetContent.CollapseSummary)
|
||||||
SetCollapseOpen(collapseSummary.mCollapseIndex, true);
|
{
|
||||||
|
SetCollapseLineOpen(line, true, hasCtrl);
|
||||||
|
}
|
||||||
else if (var emitEmbed = embed as EmitEmbed)
|
else if (var emitEmbed = embed as EmitEmbed)
|
||||||
{
|
{
|
||||||
emitEmbed.mIsOpen = !emitEmbed.mIsOpen;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6547,7 +6600,6 @@ namespace IDE.ui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void SetCollapseOpen(int collapseIdx, bool wantOpen, bool immediate = false, bool keepCursorVisible = false)
|
public void SetCollapseOpen(int collapseIdx, bool wantOpen, bool immediate = false, bool keepCursorVisible = false)
|
||||||
{
|
{
|
||||||
var entry = mOrderedCollapseEntries[collapseIdx];
|
var entry = mOrderedCollapseEntries[collapseIdx];
|
||||||
|
|
|
@ -7364,6 +7364,12 @@ namespace IDE.ui
|
||||||
int collapseIndex = collapseVal & CollapseRegionView.cIdMask;
|
int collapseIndex = collapseVal & CollapseRegionView.cIdMask;
|
||||||
|
|
||||||
var entry = ewc.mOrderedCollapseEntries[collapseIndex];
|
var entry = ewc.mOrderedCollapseEntries[collapseIndex];
|
||||||
|
|
||||||
|
if ((mWidgetWindow.IsKeyDown(.Control)))
|
||||||
|
{
|
||||||
|
ewc.[Friend]SetCollapseLineOpen(lineClick, !entry.mIsOpen, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
ewc.SetCollapseOpen(collapseIndex, !entry.mIsOpen);
|
ewc.SetCollapseOpen(collapseIndex, !entry.mIsOpen);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue