1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-15 06:44:10 +02:00

Fixed issues with multi-window editing

This commit is contained in:
Brian Fiete 2020-05-20 06:44:21 -07:00
parent 387ba470d4
commit cce45dbc15
3 changed files with 49 additions and 11 deletions

View file

@ -313,7 +313,7 @@ namespace Beefy.widgets
else else
{ {
// Create new tabbed view to put this in // Create new tabbed view to put this in
TabbedView tabbedView = ThemeFactory.mDefault.CreateTabbedView(mTabbedView.mSharedData); TabbedView tabbedView = mTabbedView.CreateTabbedView(mTabbedView.mSharedData);
//tabbedView.mSharedData = mTabbedView.mSharedData.Ref(); //tabbedView.mSharedData = mTabbedView.mSharedData.Ref();
//tabbedView.mSharedData.mOpenNewWindowDelegate = mTabbedView.mSharedData.mOpenNewWindowDelegate; //tabbedView.mSharedData.mOpenNewWindowDelegate = mTabbedView.mSharedData.mOpenNewWindowDelegate;
tabbedView.SetRequestedSize(mTabbedView.mWidth, mTabbedView.mHeight); tabbedView.SetRequestedSize(mTabbedView.mWidth, mTabbedView.mHeight);
@ -385,6 +385,11 @@ namespace Beefy.widgets
Widget.RemoveAndDelete(tab); Widget.RemoveAndDelete(tab);
} }
public virtual TabbedView CreateTabbedView(TabbedView.SharedData sharedData)
{
return ThemeFactory.mDefault.CreateTabbedView(sharedData);
}
public void Closed() public void Closed()
{ {
mSharedData.mTabbedViewClosed(this); mSharedData.mTabbedViewClosed(this);

View file

@ -105,7 +105,8 @@ namespace IDE
{ {
None = 0, None = 0,
MainWindow = 1, MainWindow = 1,
Editor = 2, WorkWindow = 2,
Editor = 4,
} }
public String mName ~ delete _; public String mName ~ delete _;
@ -159,7 +160,7 @@ namespace IDE
}; };
public CommandMap mKeyMap = new .() ~ delete _; public CommandMap mKeyMap = new .() ~ delete _;
void Add(StringView name, Action act, IDECommand.ContextFlags contextFlags = .MainWindow) void Add(StringView name, Action act, IDECommand.ContextFlags contextFlags = .WorkWindow)
{ {
let cmd = new IDECommand(); let cmd = new IDECommand();
cmd.mName = new String(name); cmd.mName = new String(name);

View file

@ -90,11 +90,30 @@ namespace IDE
public class IDETabbedView : DarkTabbedView public class IDETabbedView : DarkTabbedView
{ {
public this(SharedData sharedData) : base(sharedData)
{
if (sharedData == null)
{
mSharedData.mOpenNewWindowDelegate.Add(new (fromTabbedView, newWindow) => gApp.SetupNewWindow(newWindow, true));
mSharedData.mTabbedViewClosed.Add(new (tabbedView) =>
{
if (tabbedView == gApp.mActiveDocumentsTabbedView)
gApp.mActiveDocumentsTabbedView = null;
});
}
}
public ~this() public ~this()
{ {
if (gApp.mActiveDocumentsTabbedView == this) if (gApp.mActiveDocumentsTabbedView == this)
gApp.mActiveDocumentsTabbedView = null; gApp.mActiveDocumentsTabbedView = null;
} }
public override TabbedView CreateTabbedView(SharedData sharedData)
{
IDETabbedView tabbedView = new IDETabbedView(sharedData);
return tabbedView;
}
} }
public class IDEApp : BFApp public class IDEApp : BFApp
@ -3396,8 +3415,15 @@ namespace IDE
nextTabbedView = firstTabbedView; nextTabbedView = firstTabbedView;
if (nextTabbedView != null) if (nextTabbedView != null)
{ {
if (!nextTabbedView.mWidgetWindow.mHasFocus)
nextTabbedView.mWidgetWindow.SetForeground();
var activeTab = nextTabbedView.GetActiveTab(); var activeTab = nextTabbedView.GetActiveTab();
activeTab.Activate(); activeTab.Activate();
if (let sourceViewPanel = activeTab.mContent as SourceViewPanel)
{
sourceViewPanel.HilitePosition(.Always);
}
} }
} }
@ -5151,14 +5177,7 @@ namespace IDE
IDETabbedView CreateTabbedView() IDETabbedView CreateTabbedView()
{ {
var tabbedView = new IDETabbedView(); return new IDETabbedView(null);
tabbedView.mSharedData.mOpenNewWindowDelegate.Add(new (fromTabbedView, newWindow) => SetupNewWindow(newWindow, true));
tabbedView.mSharedData.mTabbedViewClosed.Add(new (tabbedView) =>
{
if (tabbedView == mActiveDocumentsTabbedView)
mActiveDocumentsTabbedView = null;
});
return tabbedView;
} }
public void SetupNewWindow(WidgetWindow window, bool isMainWindow) public void SetupNewWindow(WidgetWindow window, bool isMainWindow)
@ -6935,6 +6954,7 @@ namespace IDE
IDECommand.ContextFlags useFlags = .None; IDECommand.ContextFlags useFlags = .None;
var activeWindow = GetActiveWindow(); var activeWindow = GetActiveWindow();
bool isMainWindow = activeWindow.mRootWidget is MainFrame; bool isMainWindow = activeWindow.mRootWidget is MainFrame;
bool isWorkWindow = isMainWindow || (activeWindow.mRootWidget is DarkDockingFrame);
var activePanel = GetActivePanel() as Panel; var activePanel = GetActivePanel() as Panel;
if (activePanel is SourceViewPanel) if (activePanel is SourceViewPanel)
@ -6944,6 +6964,8 @@ namespace IDE
if (isMainWindow) if (isMainWindow)
useFlags |= .MainWindow; useFlags |= .MainWindow;
if (isWorkWindow)
useFlags |= .WorkWindow;
if (evt.mKeyCode == .Tab) if (evt.mKeyCode == .Tab)
{ {
@ -6989,6 +7011,8 @@ namespace IDE
matches |= useFlags.HasFlag(.Editor); matches |= useFlags.HasFlag(.Editor);
if (checkCommand.mContextFlags.HasFlag(.MainWindow)) if (checkCommand.mContextFlags.HasFlag(.MainWindow))
matches |= useFlags.HasFlag(.MainWindow); matches |= useFlags.HasFlag(.MainWindow);
if (checkCommand.mContextFlags.HasFlag(.WorkWindow))
matches |= useFlags.HasFlag(.WorkWindow);
if (matches) if (matches)
{ {
@ -12171,6 +12195,14 @@ namespace IDE
} }
} }
if ((mFileChangedDialog != null) && (mFileChangedDialog.mDialogKind == .Deleted))
{
for (let fileName in mFileChangedDialog.mFileNames)
{
mFileWatcher.RemoveChangedFile(fileName);
}
}
while (/*(appHasFocus) && */((mFileChangedDialog == null) || (mFileChangedDialog.mClosed))) while (/*(appHasFocus) && */((mFileChangedDialog == null) || (mFileChangedDialog.mClosed)))
{ {
while (mExternalChangeDeferredOpen.Count > 0) while (mExternalChangeDeferredOpen.Count > 0)