diff --git a/BeefLibs/Beefy2D/src/widgets/KeyCode.bf b/BeefLibs/Beefy2D/src/widgets/KeyCode.bf index 9b185fa5..400b1c03 100644 --- a/BeefLibs/Beefy2D/src/widgets/KeyCode.bf +++ b/BeefLibs/Beefy2D/src/widgets/KeyCode.bf @@ -117,6 +117,10 @@ namespace Beefy.widgets return (KeyCode)c; if ((c >= 'a') && (c <= 'a')) return (KeyCode)(c.ToUpper); + if (c == '[') + return (KeyCode)LBracket; + if (c == ']') + return (KeyCode)RBracket; } if (str.StartsWith("0x")) @@ -137,6 +141,21 @@ namespace Beefy.widgets return; } + char8 c = 0; + switch (this) + { + case LBracket: + c = '['; + case RBracket: + c = ']'; + default: + } + if (c != 0) + { + strBuffer.Append(c); + return; + } + int buffStart = strBuffer.Length; base.ToString(strBuffer); if ((strBuffer.Length > buffStart) && (strBuffer[buffStart].IsDigit)) diff --git a/IDE/src/Commands.bf b/IDE/src/Commands.bf index 80e6faf2..7fa1de36 100644 --- a/IDE/src/Commands.bf +++ b/IDE/src/Commands.bf @@ -288,6 +288,7 @@ namespace IDE Add("Step Out", new => gApp.[Friend]StepOut); Add("Step Over", new => gApp.[Friend]StepOver); Add("Stop Debugging", new => gApp.[Friend]StopRunning); + Add("Sync With Workspace Panel", new => gApp.[Friend]SyncWithWorkspacePanel); Add("Tab First", new => gApp.[Friend]TabFirst); Add("Tab Last", new => gApp.[Friend]TabLast); Add("Tab Next", new => gApp.[Friend]TabNext); diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index beeda77b..9b9855c8 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -4900,6 +4900,13 @@ namespace IDE return activePanel.mParent as DarkTabbedView; } + void SyncWithWorkspacePanel() + { + var activeSourceViewPanel = GetActiveSourceViewPanel(); + if (activeSourceViewPanel != null) + activeSourceViewPanel.SyncWithWorkspacePanel(); + } + [IDECommand] void TabFirst() { @@ -13537,6 +13544,7 @@ namespace IDE [Import("user32.lib"), CLink, CallingConvention(.Stdcall)] public static extern bool MessageBeep(MessageBeepType type); #endif + } static diff --git a/IDE/src/Settings.bf b/IDE/src/Settings.bf index 34c55dce..e9ab5668 100644 --- a/IDE/src/Settings.bf +++ b/IDE/src/Settings.bf @@ -599,6 +599,7 @@ namespace IDE public bool mFreeCursorMovement; public FileRecoveryKind mEnableFileRecovery = .Yes; public bool mFormatOnSave = false; + public bool mSyncWithWorkspacePanel = false; public void Serialize(StructuredData sd) { @@ -623,6 +624,7 @@ namespace IDE sd.Add("FreeCursorMovement", mFreeCursorMovement); sd.Add("EnableFileRecovery", mEnableFileRecovery); sd.Add("FormatOnSave", mFormatOnSave); + sd.Add("SyncWithWorkspacePanel", mSyncWithWorkspacePanel); } public void Deserialize(StructuredData sd) @@ -651,6 +653,7 @@ namespace IDE sd.Get("FreeCursorMovement", ref mFreeCursorMovement); sd.GetEnum("EnableFileRecovery", ref mEnableFileRecovery); sd.Get("FormatOnSave", ref mFormatOnSave); + sd.Get("SyncWithWorkspacePanel", ref mSyncWithWorkspacePanel); } public void SetDefaults() @@ -796,6 +799,7 @@ namespace IDE Add("Step Out", "Shift+F11"); Add("Step Over", "F10"); Add("Stop Debugging", "Shift+F5"); + Add("Sync With Workspace Panel", "Ctrl+[, S"); Add("Tab First", "Ctrl+Alt+Home"); Add("Tab Last", "Ctrl+Alt+End"); Add("Tab Next", "Ctrl+Alt+PageDown"); diff --git a/IDE/src/ui/SettingsDialog.bf b/IDE/src/ui/SettingsDialog.bf index 1ea37e26..6add48a8 100644 --- a/IDE/src/ui/SettingsDialog.bf +++ b/IDE/src/ui/SettingsDialog.bf @@ -124,6 +124,7 @@ namespace IDE.ui AddPropertiesItem(category, "Free Cursor Movement", "mFreeCursorMovement"); AddPropertiesItem(category, "Enable File Recovery", "mEnableFileRecovery"); AddPropertiesItem(category, "Format on Save", "mFormatOnSave"); + AddPropertiesItem(category, "Sync with Workspace Panel", "mSyncWithWorkspacePanel"); category.Open(true, true); } diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index 387a0b04..d25fed70 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -2445,6 +2445,22 @@ namespace IDE.ui return false; } + public void SyncWithWorkspacePanel() + { + if (gApp.mProjectPanel.[Friend]mProjectToListViewMap.TryGet(mProjectSource, var matchKey, var projectListViewItem)) + { + var checkLVItem = projectListViewItem.mParentItem; + while (checkLVItem != null) + { + checkLVItem.Open(true); + checkLVItem = (ProjectListViewItem)checkLVItem.mParentItem; + } + + projectListViewItem.mListView.GetRoot().SelectItemExclusively(projectListViewItem); + projectListViewItem.mListView.EnsureItemVisible(projectListViewItem, false); + } + } + public override void EditGotFocus() { if (mFilePath != null) @@ -2488,6 +2504,11 @@ namespace IDE.ui gApp.mLastActiveSourceViewPanel = this; gApp.mLastActivePanel = this; + + if ((gApp.mSettings.mEditorSettings.mSyncWithWorkspacePanel) && (mProjectSource != null)) + { + SyncWithWorkspacePanel(); + } } public override void EditLostFocus()