mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-19 00:19:26 +02:00
LCL/Menus: Fix owner-drawn menu having zero item size if not specified by OnMeasureItem. Issue #35972, patch by dmz73.
(cherry picked from commit e6e2178ca7
)
This commit is contained in:
parent
6bad22c954
commit
08c83b5352
@ -25,7 +25,7 @@ uses
|
|||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
// I M P O R T A N T
|
// I M P O R T A N T
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
// To get as little as posible circles,
|
// To get as little as possible circles,
|
||||||
// uncomment only when needed for registration
|
// uncomment only when needed for registration
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
LCLType, Graphics, GraphType, ImgList, Menus, Forms,
|
LCLType, Graphics, GraphType, ImgList, Menus, Forms,
|
||||||
@ -908,24 +908,22 @@ function MenuItemSize(AMenuItem: TMenuItem; AHDC: HDC): TSize;
|
|||||||
var
|
var
|
||||||
CC: TControlCanvas;
|
CC: TControlCanvas;
|
||||||
begin
|
begin
|
||||||
|
Result.cx := 0;
|
||||||
|
Result.cy := 0;
|
||||||
|
|
||||||
CC := TControlCanvas.Create;
|
CC := TControlCanvas.Create;
|
||||||
try
|
try
|
||||||
CC.Handle := AHDC;
|
CC.Handle := AHDC;
|
||||||
Result.cx := 0;
|
if IsVistaMenu then
|
||||||
Result.cy := 0;
|
|
||||||
|
|
||||||
if not AMenuItem.MeasureItem(CC, Result.cx, Result.cy) then
|
|
||||||
begin
|
begin
|
||||||
if IsVistaMenu then
|
if AMenuItem.IsInMenuBar then
|
||||||
begin
|
Result := VistaBarMenuItemSize(AMenuItem, AHDC)
|
||||||
if AMenuItem.IsInMenuBar then
|
|
||||||
Result := VistaBarMenuItemSize(AMenuItem, AHDC)
|
|
||||||
else
|
|
||||||
Result := VistaPopupMenuItemSize(AMenuItem, AHDC);
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
Result := ClassicMenuItemSize(AMenuItem, AHDC);
|
Result := VistaPopupMenuItemSize(AMenuItem, AHDC);
|
||||||
end;
|
end
|
||||||
|
else
|
||||||
|
Result := ClassicMenuItemSize(AMenuItem, AHDC);
|
||||||
|
AMenuItem.MeasureItem(CC, Result.cx, Result.cy);
|
||||||
finally
|
finally
|
||||||
CC.Free;
|
CC.Free;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user