mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-12 12:40:36 +01:00
IDE: use Sender sourceeditor instead of last active sourceeditor
git-svn-id: trunk@39707 -
This commit is contained in:
parent
aa5d98ecb4
commit
9f25516ea6
32
ide/main.pp
32
ide/main.pp
@ -2887,19 +2887,25 @@ end;
|
|||||||
|
|
||||||
procedure TMainIDE.mnuSetFreeBookmark(Sender: TObject);
|
procedure TMainIDE.mnuSetFreeBookmark(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
OnSrcNotebookEditorDoSetBookmark(SourceEditorManager.ActiveEditor, -1, False);
|
OnSrcNotebookEditorDoSetBookmark(SourceEditorManager.SenderToEditor(Sender), -1, False);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.mnuSaveClicked(Sender: TObject);
|
procedure TMainIDE.mnuSaveClicked(Sender: TObject);
|
||||||
|
var
|
||||||
|
SrcEdit: TSourceEditor;
|
||||||
begin
|
begin
|
||||||
if SourceEditorManager.ActiveEditor = nil then exit;
|
SrcEdit:=SourceEditorManager.SenderToEditor(Sender);
|
||||||
DoSaveEditorFile(SourceEditorManager.ActiveEditor, [sfCheckAmbiguousFiles]);
|
if SrcEdit = nil then exit;
|
||||||
|
DoSaveEditorFile(SrcEdit, [sfCheckAmbiguousFiles]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.mnuSaveAsClicked(Sender: TObject);
|
procedure TMainIDE.mnuSaveAsClicked(Sender: TObject);
|
||||||
|
var
|
||||||
|
SrcEdit: TSourceEditor;
|
||||||
begin
|
begin
|
||||||
if SourceEditorManager.ActiveEditor = nil then exit;
|
SrcEdit:=SourceEditorManager.SenderToEditor(Sender);
|
||||||
DoSaveEditorFile(SourceEditorManager.ActiveEditor, [sfSaveAs, sfCheckAmbiguousFiles]);
|
if SrcEdit = nil then exit;
|
||||||
|
DoSaveEditorFile(SrcEdit, [sfSaveAs, sfCheckAmbiguousFiles]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainIDE.mnuSaveAllClicked(Sender: TObject);
|
procedure TMainIDE.mnuSaveAllClicked(Sender: TObject);
|
||||||
@ -10508,6 +10514,7 @@ var
|
|||||||
begin
|
begin
|
||||||
GetCurrentUnit(ActiveSrcEdit,ActiveUnitInfo);
|
GetCurrentUnit(ActiveSrcEdit,ActiveUnitInfo);
|
||||||
if ActiveSrcEdit=nil then exit;
|
if ActiveSrcEdit=nil then exit;
|
||||||
|
debugln(['TMainIDE.DoFindDeclarationAtCursor ',ActiveSrcEdit.Filename,' ',GetParentForm(ActiveSrcEdit.EditorComponent).Name]);
|
||||||
DoFindDeclarationAtCaret(ActiveSrcEdit.EditorComponent.LogicalCaretXY);
|
DoFindDeclarationAtCaret(ActiveSrcEdit.EditorComponent.LogicalCaretXY);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -11218,16 +11225,15 @@ var
|
|||||||
ActiveUnitInfo: TUnitInfo;
|
ActiveUnitInfo: TUnitInfo;
|
||||||
ASrcEdit: TSourceEditor;
|
ASrcEdit: TSourceEditor;
|
||||||
begin
|
begin
|
||||||
if SourceEditorManager.SourceEditorCount = 0 then Exit;
|
ASrcEdit := SourceEditorManager.SenderToEditor(Sender);
|
||||||
ASrcEdit := TSourceEditor(Sender);
|
if ASrcEdit=nil then exit;
|
||||||
|
|
||||||
if Sender <> nil then
|
Project1.UpdateVisibleUnit(ASrcEdit,
|
||||||
Project1.UpdateVisibleUnit(ASrcEdit,
|
SourceEditorManager.IndexOfSourceWindow(ASrcEdit.SourceNotebook));
|
||||||
SourceEditorManager.IndexOfSourceWindow(ASrcEdit.SourceNotebook));
|
|
||||||
|
|
||||||
ActiveUnitInfo := Project1.UnitWithEditorComponent(SourceEditorManager.ActiveEditor);
|
ActiveUnitInfo := Project1.UnitWithEditorComponent(ASrcEdit);
|
||||||
if ActiveUnitInfo = nil then Exit;
|
if ActiveUnitInfo = nil then Exit;
|
||||||
ActiveUnitInfo.SetLastUsedEditor(SourceEditorManager.ActiveEditor);
|
ActiveUnitInfo.SetLastUsedEditor(ASrcEdit);
|
||||||
|
|
||||||
UpdateSaveMenuItemsAndButtons(false);
|
UpdateSaveMenuItemsAndButtons(false);
|
||||||
MainIDEBar.itmViewToggleFormUnit.Enabled := Assigned(ActiveUnitInfo.Component)
|
MainIDEBar.itmViewToggleFormUnit.Enabled := Assigned(ActiveUnitInfo.Component)
|
||||||
@ -11402,10 +11408,10 @@ var
|
|||||||
AnEditorInfo: TUnitEditorInfo;
|
AnEditorInfo: TUnitEditorInfo;
|
||||||
NewXY: TPoint;
|
NewXY: TPoint;
|
||||||
begin
|
begin
|
||||||
|
AnEditor := SourceEditorManager.SenderToEditor(Sender);
|
||||||
if ID < 0 then begin
|
if ID < 0 then begin
|
||||||
// ID < 0 => next/prev
|
// ID < 0 => next/prev
|
||||||
if Project1.BookMarks.Count = 0 then exit;
|
if Project1.BookMarks.Count = 0 then exit;
|
||||||
AnEditor := SourceEditorManager.ActiveEditor;
|
|
||||||
if AnEditor = nil then exit;
|
if AnEditor = nil then exit;
|
||||||
|
|
||||||
CurWin := SourceEditorManager.IndexOfSourceWindow(AnEditor.SourceNotebook);
|
CurWin := SourceEditorManager.IndexOfSourceWindow(AnEditor.SourceNotebook);
|
||||||
|
|||||||
@ -1080,6 +1080,7 @@ type
|
|||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
function CreateNewWindow(Activate: Boolean= False;
|
function CreateNewWindow(Activate: Boolean= False;
|
||||||
DoDisableAutoSizing: boolean = False): TSourceNotebook;
|
DoDisableAutoSizing: boolean = False): TSourceNotebook;
|
||||||
|
function SenderToEditor(Sender: TObject): TSourceEditor;
|
||||||
private
|
private
|
||||||
// Context-Menu
|
// Context-Menu
|
||||||
procedure CloseOtherPagesClicked(Sender: TObject);
|
procedure CloseOtherPagesClicked(Sender: TObject);
|
||||||
@ -1259,6 +1260,7 @@ var
|
|||||||
|
|
||||||
procedure RegisterStandardSourceTabMenuItems;
|
procedure RegisterStandardSourceTabMenuItems;
|
||||||
procedure RegisterStandardSourceEditorMenuItems;
|
procedure RegisterStandardSourceEditorMenuItems;
|
||||||
|
function dbgSourceNoteBook(snb: TSourceNotebook): string;
|
||||||
|
|
||||||
var
|
var
|
||||||
Highlighters: array[TLazSyntaxHighlighter] of TSynCustomHighlighter;
|
Highlighters: array[TLazSyntaxHighlighter] of TSynCustomHighlighter;
|
||||||
@ -1586,6 +1588,25 @@ begin
|
|||||||
'EditorProperties', dlgFROpts, nil, nil, nil, 'menu_environment_options');
|
'EditorProperties', dlgFROpts, nil, nil, nil, 'menu_environment_options');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function dbgSourceNoteBook(snb: TSourceNotebook): string;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
Result:='';
|
||||||
|
if snb=nil then begin
|
||||||
|
Result:='nil';
|
||||||
|
end else if snb.Count=0 then begin
|
||||||
|
Result:='empty';
|
||||||
|
end else begin
|
||||||
|
for i:=0 to 4 do begin
|
||||||
|
if i>=snb.Count then break;
|
||||||
|
Result+='"'+ExtractFilename(snb.Items[i].FileName)+'",';
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if RightStr(Result,1)=',' then Result:=LeftStr(Result,length(Result)-1);
|
||||||
|
Result:='['+Result+']';
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ TSourceEditCompletion }
|
{ TSourceEditCompletion }
|
||||||
|
|
||||||
@ -8335,14 +8356,19 @@ end;
|
|||||||
|
|
||||||
procedure TSourceEditorManagerBase.SetActiveSourceWindow(
|
procedure TSourceEditorManagerBase.SetActiveSourceWindow(
|
||||||
const AValue: TSourceEditorWindowInterface);
|
const AValue: TSourceEditorWindowInterface);
|
||||||
|
var
|
||||||
|
NewWindow: TSourceNotebook;
|
||||||
begin
|
begin
|
||||||
if AValue = FActiveWindow then exit;
|
NewWindow:= AValue as TSourceNotebook;
|
||||||
if (FActiveWindow <> nil) and (AValue <> nil) and (FActiveWindow.Focused) then
|
if NewWindow = FActiveWindow then exit;
|
||||||
AValue.SetFocus;
|
|
||||||
|
|
||||||
FActiveWindow := AValue as TSourceNotebook;
|
//debugln(['TSourceEditorManagerBase.SetActiveSourceWindow ',dbgSourceNoteBook(FActiveWindow),' ',dbgSourceNoteBook(NewWindow)]);
|
||||||
FSourceWindowByFocusList.Remove(AValue);
|
if (FActiveWindow <> nil) and (NewWindow <> nil) and (FActiveWindow.Focused) then
|
||||||
FSourceWindowByFocusList.Insert(0, AValue);
|
NewWindow.SetFocus;
|
||||||
|
|
||||||
|
FActiveWindow := NewWindow;
|
||||||
|
FSourceWindowByFocusList.Remove(NewWindow);
|
||||||
|
FSourceWindowByFocusList.Insert(0, NewWindow);
|
||||||
|
|
||||||
if Assigned(OnCurrentCodeBufferChanged) then
|
if Assigned(OnCurrentCodeBufferChanged) then
|
||||||
OnCurrentCodeBufferChanged(nil);
|
OnCurrentCodeBufferChanged(nil);
|
||||||
@ -9882,6 +9908,16 @@ begin
|
|||||||
Result.EnableAutoSizing;
|
Result.EnableAutoSizing;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TSourceEditorManager.SenderToEditor(Sender: TObject): TSourceEditor;
|
||||||
|
begin
|
||||||
|
if Sender is TSourceEditor then
|
||||||
|
Result:=TSourceEditor(Sender)
|
||||||
|
else if Sender is TSourceNotebook then
|
||||||
|
Result:=TSourceNotebook(Sender).ActiveEditor as TSourceEditor
|
||||||
|
else
|
||||||
|
Result:=ActiveEditor;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TSourceEditorManager.RemoveWindow(AWindow: TSourceNotebook);
|
procedure TSourceEditorManager.RemoveWindow(AWindow: TSourceNotebook);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user