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

Merge pull request #1359 from disarray2077/dragdrop

Add support for file drag drop
This commit is contained in:
Brian Fiete 2022-01-08 12:30:05 +01:00 committed by GitHub
commit da9bb1dc38
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 94 additions and 18 deletions

View file

@ -846,6 +846,17 @@ namespace IDE
public void DoOpenFile()
{
#if !CLI
if (mDeferredOpenFileName != null)
{
for (let filePath in mDeferredOpenFileName.Split('|'))
{
AddRecentFile(.OpenedFile, filePath);
ShowSourceFile(scope String()..Reference(filePath));
}
DeleteAndNullify!(mDeferredOpenFileName);
return;
}
String fullDir = scope .();
let sourceViewPanel = GetActiveSourceViewPanel();
if (sourceViewPanel != null)
@ -7093,6 +7104,11 @@ namespace IDE
public override void UnhandledCommandLine(String key, String value)
{
if (File.Exists(key))
{
DragDropFile(key);
return;
}
Fail(StackStringFormat!("Unhandled command line param: {0}", key));
}
@ -7238,13 +7254,7 @@ namespace IDE
else
mWorkspace.mDir = fullDir;
case "-file":
String.NewOrSet!(mDeferredOpenFileName, value);
if (mDeferredOpenFileName.EndsWith(".bfdbg", .OrdinalIgnoreCase))
mDeferredOpen = .DebugSession;
else if (mDeferredOpenFileName.EndsWith(".dmp", .OrdinalIgnoreCase))
mDeferredOpen = .CrashDump;
else
mDeferredOpen = .File;
DragDropFile(value);
default:
return false;
}
@ -7252,6 +7262,34 @@ namespace IDE
}
}
public void DragDropFile(StringView filePath)
{
let prevDeferredOpen = mDeferredOpen;
if (filePath.EndsWith(".bfdbg", .OrdinalIgnoreCase))
mDeferredOpen = .DebugSession;
else if (filePath.EndsWith(".dmp", .OrdinalIgnoreCase))
mDeferredOpen = .CrashDump;
else
mDeferredOpen = .File;
if (prevDeferredOpen == .File && mDeferredOpen == .File)
{
if (String.IsNullOrEmpty(mDeferredOpenFileName))
String.NewOrSet!(mDeferredOpenFileName, filePath);
else
mDeferredOpenFileName.AppendF("|{}", filePath);
}
else if (prevDeferredOpen != .None && prevDeferredOpen != mDeferredOpen)
{
mDeferredOpen = prevDeferredOpen;
}
else
{
String.NewOrSet!(mDeferredOpenFileName, filePath);
}
}
class Board : Widget
{
public override void Draw(Graphics g)
@ -11498,7 +11536,7 @@ namespace IDE
//
{
BFWindow.Flags flags = .Border | .ThickFrame | .Resizable | .SysMenu |
.Caption | .Minimize | .Maximize | .QuitOnClose | .Menu | .PopupPosition;
.Caption | .Minimize | .Maximize | .QuitOnClose | .Menu | .PopupPosition | .AcceptFiles;
if (mRunningTestScript)
flags |= .NoActivate;
@ -11528,6 +11566,7 @@ namespace IDE
mMainWindow.mOnMouseUp.Add(new => MouseUp);
mMainWindow.mOnWindowKeyDown.Add(new => SysKeyDown);
mMainWindow.mOnWindowCloseQuery.Add(new => AllowClose);
mMainWindow.mOnDragDropFile.Add(new => DragDropFile);
CreateMenu();
UpdateRecentDisplayedFilesMenuItems();
if (mRecentlyDisplayedFiles.Count > 0)