mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-15 14:54:09 +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
|
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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue