mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-20 09:59:09 +02:00
LCL, fix recursion on getting default paper name, issue #16496
git-svn-id: trunk@25492 -
This commit is contained in:
parent
99acaf9013
commit
94774d56fb
@ -155,6 +155,7 @@ type
|
|||||||
function GetSupportedPapers: TStrings;
|
function GetSupportedPapers: TStrings;
|
||||||
procedure SetPaperName(const AName: string);
|
procedure SetPaperName(const AName: string);
|
||||||
function PaperRectOfName(const AName: string) : TPaperRect;
|
function PaperRectOfName(const AName: string) : TPaperRect;
|
||||||
|
procedure CheckSupportedPapers;
|
||||||
private
|
private
|
||||||
fInternalPapers : array of TPaperItem;
|
fInternalPapers : array of TPaperItem;
|
||||||
fDefaultPapers : boolean;
|
fDefaultPapers : boolean;
|
||||||
@ -885,6 +886,8 @@ end;
|
|||||||
|
|
||||||
function TPaperSize.GetDefaultPaperName: string;
|
function TPaperSize.GetDefaultPaperName: string;
|
||||||
begin
|
begin
|
||||||
|
CheckSupportedPapers;
|
||||||
|
|
||||||
if fDefaultPapers then
|
if fDefaultPapers then
|
||||||
Result := FSupportedPapers[0]
|
Result := FSupportedPapers[0]
|
||||||
else
|
else
|
||||||
@ -924,6 +927,8 @@ end;
|
|||||||
|
|
||||||
function TPaperSize.GetPaperName: string;
|
function TPaperSize.GetPaperName: string;
|
||||||
begin
|
begin
|
||||||
|
CheckSupportedPapers;
|
||||||
|
|
||||||
if fDefaultPapers then
|
if fDefaultPapers then
|
||||||
Result := SupportedPapers[FDefaultPaperIndex]
|
Result := SupportedPapers[FDefaultPaperIndex]
|
||||||
else
|
else
|
||||||
@ -945,21 +950,8 @@ end;
|
|||||||
|
|
||||||
function TPaperSize.GetSupportedPapers: TStrings;
|
function TPaperSize.GetSupportedPapers: TStrings;
|
||||||
begin
|
begin
|
||||||
if (fSupportedPapers.Count=0) or
|
CheckSupportedPapers;
|
||||||
(fLastPrinterIndex<>fOwnedPrinter.PrinterIndex) then
|
|
||||||
begin
|
|
||||||
fOwnedPrinter.SelectCurrentPrinterOrDefault;
|
|
||||||
|
|
||||||
fSupportedPapers.Clear;
|
|
||||||
fDefaultPapers := false;
|
|
||||||
//DebugLn(['TPaperSize.GetSupportedPapers ',dbgsName(fOwnedPrinter),' ',dbgsName(Printer),' ',fOwnedPrinter=Printer]);
|
|
||||||
fOwnedPrinter.DoEnumPapers(fSupportedPapers);
|
|
||||||
|
|
||||||
if fSupportedPapers.Count=0 then
|
|
||||||
FillDefaultPapers;
|
|
||||||
|
|
||||||
fLastPrinterIndex:=fOwnedPrinter.PrinterIndex;
|
|
||||||
end;
|
|
||||||
Result:=fSupportedPapers;
|
Result:=fSupportedPapers;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1016,6 +1008,25 @@ begin
|
|||||||
else raise EPrinter.Create(Format('Paper "%s" not supported !',[aName]));
|
else raise EPrinter.Create(Format('Paper "%s" not supported !',[aName]));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPaperSize.CheckSupportedPapers;
|
||||||
|
begin
|
||||||
|
if (fSupportedPapers.Count=0) or
|
||||||
|
(fLastPrinterIndex<>fOwnedPrinter.PrinterIndex) then
|
||||||
|
begin
|
||||||
|
fOwnedPrinter.SelectCurrentPrinterOrDefault;
|
||||||
|
|
||||||
|
fSupportedPapers.Clear;
|
||||||
|
fDefaultPapers := false;
|
||||||
|
//DebugLn(['TPaperSize.GetSupportedPapers ',dbgsName(fOwnedPrinter),' ',dbgsName(Printer),' ',fOwnedPrinter=Printer]);
|
||||||
|
fOwnedPrinter.DoEnumPapers(fSupportedPapers);
|
||||||
|
|
||||||
|
if fSupportedPapers.Count=0 then
|
||||||
|
FillDefaultPapers;
|
||||||
|
|
||||||
|
fLastPrinterIndex:=fOwnedPrinter.PrinterIndex;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
constructor TPaperSize.Create(aOwner: TPrinter);
|
constructor TPaperSize.Create(aOwner: TPrinter);
|
||||||
begin
|
begin
|
||||||
if not assigned(aOwner) then
|
if not assigned(aOwner) then
|
||||||
|
Loading…
Reference in New Issue
Block a user