mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-11 05:40:45 +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);
|
||||
begin
|
||||
OnSrcNotebookEditorDoSetBookmark(SourceEditorManager.ActiveEditor, -1, False);
|
||||
OnSrcNotebookEditorDoSetBookmark(SourceEditorManager.SenderToEditor(Sender), -1, False);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuSaveClicked(Sender: TObject);
|
||||
var
|
||||
SrcEdit: TSourceEditor;
|
||||
begin
|
||||
if SourceEditorManager.ActiveEditor = nil then exit;
|
||||
DoSaveEditorFile(SourceEditorManager.ActiveEditor, [sfCheckAmbiguousFiles]);
|
||||
SrcEdit:=SourceEditorManager.SenderToEditor(Sender);
|
||||
if SrcEdit = nil then exit;
|
||||
DoSaveEditorFile(SrcEdit, [sfCheckAmbiguousFiles]);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuSaveAsClicked(Sender: TObject);
|
||||
var
|
||||
SrcEdit: TSourceEditor;
|
||||
begin
|
||||
if SourceEditorManager.ActiveEditor = nil then exit;
|
||||
DoSaveEditorFile(SourceEditorManager.ActiveEditor, [sfSaveAs, sfCheckAmbiguousFiles]);
|
||||
SrcEdit:=SourceEditorManager.SenderToEditor(Sender);
|
||||
if SrcEdit = nil then exit;
|
||||
DoSaveEditorFile(SrcEdit, [sfSaveAs, sfCheckAmbiguousFiles]);
|
||||
end;
|
||||
|
||||
procedure TMainIDE.mnuSaveAllClicked(Sender: TObject);
|
||||
@ -10508,6 +10514,7 @@ var
|
||||
begin
|
||||
GetCurrentUnit(ActiveSrcEdit,ActiveUnitInfo);
|
||||
if ActiveSrcEdit=nil then exit;
|
||||
debugln(['TMainIDE.DoFindDeclarationAtCursor ',ActiveSrcEdit.Filename,' ',GetParentForm(ActiveSrcEdit.EditorComponent).Name]);
|
||||
DoFindDeclarationAtCaret(ActiveSrcEdit.EditorComponent.LogicalCaretXY);
|
||||
end;
|
||||
|
||||
@ -11218,16 +11225,15 @@ var
|
||||
ActiveUnitInfo: TUnitInfo;
|
||||
ASrcEdit: TSourceEditor;
|
||||
begin
|
||||
if SourceEditorManager.SourceEditorCount = 0 then Exit;
|
||||
ASrcEdit := TSourceEditor(Sender);
|
||||
ASrcEdit := SourceEditorManager.SenderToEditor(Sender);
|
||||
if ASrcEdit=nil then exit;
|
||||
|
||||
if Sender <> nil then
|
||||
Project1.UpdateVisibleUnit(ASrcEdit,
|
||||
SourceEditorManager.IndexOfSourceWindow(ASrcEdit.SourceNotebook));
|
||||
Project1.UpdateVisibleUnit(ASrcEdit,
|
||||
SourceEditorManager.IndexOfSourceWindow(ASrcEdit.SourceNotebook));
|
||||
|
||||
ActiveUnitInfo := Project1.UnitWithEditorComponent(SourceEditorManager.ActiveEditor);
|
||||
ActiveUnitInfo := Project1.UnitWithEditorComponent(ASrcEdit);
|
||||
if ActiveUnitInfo = nil then Exit;
|
||||
ActiveUnitInfo.SetLastUsedEditor(SourceEditorManager.ActiveEditor);
|
||||
ActiveUnitInfo.SetLastUsedEditor(ASrcEdit);
|
||||
|
||||
UpdateSaveMenuItemsAndButtons(false);
|
||||
MainIDEBar.itmViewToggleFormUnit.Enabled := Assigned(ActiveUnitInfo.Component)
|
||||
@ -11402,10 +11408,10 @@ var
|
||||
AnEditorInfo: TUnitEditorInfo;
|
||||
NewXY: TPoint;
|
||||
begin
|
||||
AnEditor := SourceEditorManager.SenderToEditor(Sender);
|
||||
if ID < 0 then begin
|
||||
// ID < 0 => next/prev
|
||||
if Project1.BookMarks.Count = 0 then exit;
|
||||
AnEditor := SourceEditorManager.ActiveEditor;
|
||||
if AnEditor = nil then exit;
|
||||
|
||||
CurWin := SourceEditorManager.IndexOfSourceWindow(AnEditor.SourceNotebook);
|
||||
|
||||
@ -1080,6 +1080,7 @@ type
|
||||
destructor Destroy; override;
|
||||
function CreateNewWindow(Activate: Boolean= False;
|
||||
DoDisableAutoSizing: boolean = False): TSourceNotebook;
|
||||
function SenderToEditor(Sender: TObject): TSourceEditor;
|
||||
private
|
||||
// Context-Menu
|
||||
procedure CloseOtherPagesClicked(Sender: TObject);
|
||||
@ -1259,6 +1260,7 @@ var
|
||||
|
||||
procedure RegisterStandardSourceTabMenuItems;
|
||||
procedure RegisterStandardSourceEditorMenuItems;
|
||||
function dbgSourceNoteBook(snb: TSourceNotebook): string;
|
||||
|
||||
var
|
||||
Highlighters: array[TLazSyntaxHighlighter] of TSynCustomHighlighter;
|
||||
@ -1586,6 +1588,25 @@ begin
|
||||
'EditorProperties', dlgFROpts, nil, nil, nil, 'menu_environment_options');
|
||||
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 }
|
||||
|
||||
@ -8335,14 +8356,19 @@ end;
|
||||
|
||||
procedure TSourceEditorManagerBase.SetActiveSourceWindow(
|
||||
const AValue: TSourceEditorWindowInterface);
|
||||
var
|
||||
NewWindow: TSourceNotebook;
|
||||
begin
|
||||
if AValue = FActiveWindow then exit;
|
||||
if (FActiveWindow <> nil) and (AValue <> nil) and (FActiveWindow.Focused) then
|
||||
AValue.SetFocus;
|
||||
NewWindow:= AValue as TSourceNotebook;
|
||||
if NewWindow = FActiveWindow then exit;
|
||||
|
||||
FActiveWindow := AValue as TSourceNotebook;
|
||||
FSourceWindowByFocusList.Remove(AValue);
|
||||
FSourceWindowByFocusList.Insert(0, AValue);
|
||||
//debugln(['TSourceEditorManagerBase.SetActiveSourceWindow ',dbgSourceNoteBook(FActiveWindow),' ',dbgSourceNoteBook(NewWindow)]);
|
||||
if (FActiveWindow <> nil) and (NewWindow <> nil) and (FActiveWindow.Focused) then
|
||||
NewWindow.SetFocus;
|
||||
|
||||
FActiveWindow := NewWindow;
|
||||
FSourceWindowByFocusList.Remove(NewWindow);
|
||||
FSourceWindowByFocusList.Insert(0, NewWindow);
|
||||
|
||||
if Assigned(OnCurrentCodeBufferChanged) then
|
||||
OnCurrentCodeBufferChanged(nil);
|
||||
@ -9882,6 +9908,16 @@ begin
|
||||
Result.EnableAutoSizing;
|
||||
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);
|
||||
var
|
||||
i: Integer;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user