Merged revision 50680 #dd154546c3,50681 #ac89c87e02 from /trunk.

------------------------------------------------------------------------
r50680 | ondrej | 2015-12-06 09:23:21 +0100 (So, 06 Dez 2015) | 1 line

IDE: focus editor window when file is opened from command line in IDEInstances (issue on MS Windows)
------------------------------------------------------------------------
r50681 | ondrej | 2015-12-06 11:09:35 +0100 (So, 06 Dez 2015) | 1 line

packagetabs: fix bug with duplicate file names in tabs.
------------------------------------------------------------------------

git-svn-id: branches/fixes_1_6@50682 -
This commit is contained in:
ondrej 2015-12-06 10:32:42 +00:00
parent f2509d0cde
commit 6c9e4a802f
3 changed files with 13 additions and 6 deletions

View File

@ -483,6 +483,7 @@ begin
Package := APackage;
Files := TStringList.Create;
Files.Sorted := True;
Files.Duplicates := dupAccept;
end;
destructor TPackageItem.Destroy;
@ -727,7 +728,7 @@ begin
xPkgIndex := xPackages.IndexOf(xPackageName);
if xPkgIndex < 0 then
xPkgIndex := xPackages.AddObject(xPackageName, TPackageItem.Create(xPackage));
TPackageItem(xPackages.Objects[xPkgIndex]).Files.AddObject(ExtractFileNameOnly(xEditor.FileName), xEditor);
TPackageItem(xPackages.Objects[xPkgIndex]).Files.AddObject(xEditor.PageCaption, xEditor);
end;
xNewIndex := 0;

View File

@ -51,7 +51,7 @@ type
TStartNewInstanceResult = (ofrStartNewInstance, ofrDoNotStart, ofrModalError,
ofrForceSingleInstanceModalError, ofrNotResponding);
TStartNewInstanceEvent = procedure(const aFiles: TStrings;
var outResult: TStartNewInstanceResult) of object;
var outResult: TStartNewInstanceResult; var outSourceWindowHandle: HWND) of object;
TGetCurrentProjectEvent = procedure(var outProjectFileName: string) of object;
TMessageParam = record
@ -737,6 +737,7 @@ var
xResult: TStartNewInstanceResult;
xFiles: TStrings;
xParams: TMessageParams;
xSourceWindowHandle: HWND = 0;
begin
xResult := ofrStartNewInstance;
if Assigned(FStartNewInstanceEvent) then
@ -744,7 +745,7 @@ begin
xFiles := TStringList.Create;
try
TIDEInstances.AddFilesFromParams(aInParams, xFiles);
FStartNewInstanceEvent(xFiles, xResult);
FStartNewInstanceEvent(xFiles, xResult, xSourceWindowHandle);
finally
xFiles.Free;
end;
@ -752,7 +753,7 @@ begin
SetLength(xParams, 5);
xParams[0] := TIDEInstances.MessageParam(PARAM_RESULT, IntToStr(Ord(xResult)));
xParams[1] := TIDEInstances.MessageParam(PARAM_HANDLEBRINGTOFRONT, IntToStr(Application.MainFormHandle));
xParams[1] := TIDEInstances.MessageParam(PARAM_HANDLEBRINGTOFRONT, IntToStr(xSourceWindowHandle)); // do not use Application.MainFormHandle here - it steals focus from active source editor
xParams[2] := TIDEInstances.MessageParam(PARAM_MODALERRORMESSAGE, dlgRunningInstanceModalError);
xParams[3] := TIDEInstances.MessageParam(PARAM_FORCEUNIQUEMODALERRORMESSAGE, dlgForceUniqueInstanceModalError);
xParams[4] := TIDEInstances.MessageParam(PARAM_NOTRESPONDINGERRORMESSAGE, dlgRunningInstanceNotRespondingError);

View File

@ -186,7 +186,7 @@ type
procedure HandleSelectFrame(Sender: TObject; var AComponentClass: TComponentClass);
procedure OIChangedTimerTimer(Sender: TObject);
procedure LazInstancesStartNewInstance(const aFiles: TStrings;
var Result: TStartNewInstanceResult);
var Result: TStartNewInstanceResult; var outSourceWindowHandle: HWND);
procedure LazInstancesGetOpenedProjectFileName(var outProjectFileName: string);
public
// file menu
@ -9400,7 +9400,7 @@ begin
end;
procedure TMainIDE.LazInstancesStartNewInstance(const aFiles: TStrings;
var Result: TStartNewInstanceResult);
var Result: TStartNewInstanceResult; var outSourceWindowHandle: HWND);
var
xParams: TDoDropFilesAsyncParams;
I: Integer;
@ -9433,6 +9433,11 @@ begin
Result := ofrStartNewInstance;
end;
if (SourceEditorManager.ActiveSourceWindow <> nil)
and (SourceEditorManager.ActiveSourceWindow.HandleAllocated)
then
outSourceWindowHandle := SourceEditorManager.ActiveSourceWindow.Handle;
if Result in [ofrStartNewInstance, ofrModalError, ofrForceSingleInstanceModalError] then
Exit;