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:
parent
387ba470d4
commit
cce45dbc15
3 changed files with 49 additions and 11 deletions
|
@ -313,7 +313,7 @@ namespace Beefy.widgets
|
|||
else
|
||||
{
|
||||
// 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.mOpenNewWindowDelegate = mTabbedView.mSharedData.mOpenNewWindowDelegate;
|
||||
tabbedView.SetRequestedSize(mTabbedView.mWidth, mTabbedView.mHeight);
|
||||
|
@ -385,6 +385,11 @@ namespace Beefy.widgets
|
|||
Widget.RemoveAndDelete(tab);
|
||||
}
|
||||
|
||||
public virtual TabbedView CreateTabbedView(TabbedView.SharedData sharedData)
|
||||
{
|
||||
return ThemeFactory.mDefault.CreateTabbedView(sharedData);
|
||||
}
|
||||
|
||||
public void Closed()
|
||||
{
|
||||
mSharedData.mTabbedViewClosed(this);
|
||||
|
|
|
@ -105,7 +105,8 @@ namespace IDE
|
|||
{
|
||||
None = 0,
|
||||
MainWindow = 1,
|
||||
Editor = 2,
|
||||
WorkWindow = 2,
|
||||
Editor = 4,
|
||||
}
|
||||
|
||||
public String mName ~ delete _;
|
||||
|
@ -159,7 +160,7 @@ namespace IDE
|
|||
};
|
||||
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();
|
||||
cmd.mName = new String(name);
|
||||
|
|
|
@ -90,11 +90,30 @@ namespace IDE
|
|||
|
||||
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()
|
||||
{
|
||||
if (gApp.mActiveDocumentsTabbedView == this)
|
||||
gApp.mActiveDocumentsTabbedView = null;
|
||||
}
|
||||
|
||||
public override TabbedView CreateTabbedView(SharedData sharedData)
|
||||
{
|
||||
IDETabbedView tabbedView = new IDETabbedView(sharedData);
|
||||
return tabbedView;
|
||||
}
|
||||
}
|
||||
|
||||
public class IDEApp : BFApp
|
||||
|
@ -3396,8 +3415,15 @@ namespace IDE
|
|||
nextTabbedView = firstTabbedView;
|
||||
if (nextTabbedView != null)
|
||||
{
|
||||
if (!nextTabbedView.mWidgetWindow.mHasFocus)
|
||||
nextTabbedView.mWidgetWindow.SetForeground();
|
||||
var activeTab = nextTabbedView.GetActiveTab();
|
||||
activeTab.Activate();
|
||||
|
||||
if (let sourceViewPanel = activeTab.mContent as SourceViewPanel)
|
||||
{
|
||||
sourceViewPanel.HilitePosition(.Always);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5151,14 +5177,7 @@ namespace IDE
|
|||
|
||||
IDETabbedView CreateTabbedView()
|
||||
{
|
||||
var tabbedView = new IDETabbedView();
|
||||
tabbedView.mSharedData.mOpenNewWindowDelegate.Add(new (fromTabbedView, newWindow) => SetupNewWindow(newWindow, true));
|
||||
tabbedView.mSharedData.mTabbedViewClosed.Add(new (tabbedView) =>
|
||||
{
|
||||
if (tabbedView == mActiveDocumentsTabbedView)
|
||||
mActiveDocumentsTabbedView = null;
|
||||
});
|
||||
return tabbedView;
|
||||
return new IDETabbedView(null);
|
||||
}
|
||||
|
||||
public void SetupNewWindow(WidgetWindow window, bool isMainWindow)
|
||||
|
@ -6935,6 +6954,7 @@ namespace IDE
|
|||
IDECommand.ContextFlags useFlags = .None;
|
||||
var activeWindow = GetActiveWindow();
|
||||
bool isMainWindow = activeWindow.mRootWidget is MainFrame;
|
||||
bool isWorkWindow = isMainWindow || (activeWindow.mRootWidget is DarkDockingFrame);
|
||||
|
||||
var activePanel = GetActivePanel() as Panel;
|
||||
if (activePanel is SourceViewPanel)
|
||||
|
@ -6944,6 +6964,8 @@ namespace IDE
|
|||
|
||||
if (isMainWindow)
|
||||
useFlags |= .MainWindow;
|
||||
if (isWorkWindow)
|
||||
useFlags |= .WorkWindow;
|
||||
|
||||
if (evt.mKeyCode == .Tab)
|
||||
{
|
||||
|
@ -6989,6 +7011,8 @@ namespace IDE
|
|||
matches |= useFlags.HasFlag(.Editor);
|
||||
if (checkCommand.mContextFlags.HasFlag(.MainWindow))
|
||||
matches |= useFlags.HasFlag(.MainWindow);
|
||||
if (checkCommand.mContextFlags.HasFlag(.WorkWindow))
|
||||
matches |= useFlags.HasFlag(.WorkWindow);
|
||||
|
||||
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 (mExternalChangeDeferredOpen.Count > 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue