mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 18:39:10 +02:00
lcl menus: fix regression and bugs from r51466 #62ef2702b3. remove OnDrawItem and keep OnAdvancedDrawItem only. Issue #26969
git-svn-id: trunk@51467 -
This commit is contained in:
parent
62ef2702b3
commit
bd20aff9d3
@ -842,12 +842,18 @@ var
|
||||
ParentMenu: TMenu;
|
||||
begin
|
||||
ParentMenu := AMenuItem.GetParentMenu;
|
||||
if (ParentMenu<>nil) and ParentMenu.OwnerDraw and Assigned(AMenuItem.OnMeasureItem) then
|
||||
if (ParentMenu<>nil) and ParentMenu.OwnerDraw
|
||||
and (Assigned(ParentMenu.OnMeasureItem) or Assigned(AMenuItem.OnMeasureItem)) then
|
||||
begin
|
||||
CC := TControlCanvas.Create;
|
||||
try
|
||||
CC.Handle := AHDC;
|
||||
AMenuItem.OnMeasureItem(AMenuItem, CC, Result.cx, Result.cy);
|
||||
Result.cx := 0;
|
||||
Result.cy := 0;
|
||||
if Assigned(ParentMenu.OnMeasureItem) then
|
||||
ParentMenu.OnMeasureItem(AMenuItem, CC, Result.cx, Result.cy);
|
||||
if Assigned(AMenuItem.OnMeasureItem) then
|
||||
AMenuItem.OnMeasureItem(AMenuItem, CC, Result.cx, Result.cy);
|
||||
finally
|
||||
CC.Free;
|
||||
end;
|
||||
@ -861,7 +867,7 @@ begin
|
||||
Result := VistaPopupMenuItemSize(AMenuItem, AHDC);
|
||||
end
|
||||
else
|
||||
ClassicMenuItemSize(AMenuItem, AHDC);
|
||||
Result := ClassicMenuItemSize(AMenuItem, AHDC);
|
||||
end;
|
||||
|
||||
function IsFlatMenus: Boolean; inline;
|
||||
@ -1210,6 +1216,7 @@ var
|
||||
B: Bool;
|
||||
ParentMenu: TMenu;
|
||||
CC: TControlCanvas;
|
||||
ItemDrawState: LCLType.TOwnerDrawState;
|
||||
begin
|
||||
ASelected := (ItemState and ODS_SELECTED) <> 0;
|
||||
ANoAccel := (ItemState and ODS_NOACCEL) <> 0;
|
||||
@ -1222,15 +1229,16 @@ begin
|
||||
|
||||
ParentMenu := AMenuItem.GetParentMenu;
|
||||
if (ParentMenu<>nil) and ParentMenu.OwnerDraw
|
||||
and (Assigned(AMenuItem.OnDrawItem) or Assigned(AMenuItem.OnAdvancedDrawItem)) then
|
||||
and (Assigned(ParentMenu.OnAdvancedDrawItem) or Assigned(AMenuItem.OnAdvancedDrawItem)) then
|
||||
begin
|
||||
CC := TControlCanvas.Create;
|
||||
try
|
||||
CC.Handle := AHDC;
|
||||
if Assigned(AMenuItem.OnDrawItem) then
|
||||
AMenuItem.OnDrawItem(AMenuItem, CC, ARect, ASelected);
|
||||
ItemDrawState := ItemStateToDrawState(ItemState);
|
||||
if Assigned(ParentMenu.OnAdvancedDrawItem) then
|
||||
ParentMenu.OnAdvancedDrawItem(AMenuItem, CC, ARect, ItemDrawState);
|
||||
if Assigned(AMenuItem.OnAdvancedDrawItem) then
|
||||
AMenuItem.OnAdvancedDrawItem(AMenuItem, CC, ARect, ItemStateToDrawState(ItemState));
|
||||
AMenuItem.OnAdvancedDrawItem(AMenuItem, CC, ARect, ItemDrawState);
|
||||
finally
|
||||
CC.Free;
|
||||
end;
|
||||
|
@ -108,8 +108,6 @@ type
|
||||
mihtDestroy
|
||||
);
|
||||
|
||||
TMenuDrawItemEvent = procedure(Sender: TObject; ACanvas: TCanvas;
|
||||
ARect: TRect; ASelected: Boolean) of object;
|
||||
TAdvancedMenuDrawItemEvent = procedure(Sender: TObject; ACanvas: TCanvas;
|
||||
ARect: TRect; AState: TOwnerDrawState) of object;
|
||||
TMenuMeasureItemEvent = procedure(Sender: TObject; ACanvas: TCanvas;
|
||||
@ -131,7 +129,6 @@ type
|
||||
FOnAdvancedDrawItem: TAdvancedMenuDrawItemEvent;
|
||||
FOnChange: TMenuChangeEvent;
|
||||
FOnClick: TNotifyEvent;
|
||||
FOnDrawItem: TMenuDrawItemEvent;
|
||||
FOnMeasureItem: TMenuMeasureItemEvent;
|
||||
FParent: TMenuItem;
|
||||
FMenuItemHandlers: array[TMenuItemHandlerType] of TMethodList;
|
||||
@ -293,7 +290,6 @@ type
|
||||
property Visible: Boolean read FVisible write SetVisible
|
||||
stored IsVisibleStored default True;
|
||||
property OnClick: TNotifyEvent read FOnClick write FOnClick;
|
||||
property OnDrawItem: TMenuDrawItemEvent read FOnDrawItem write FOnDrawItem;
|
||||
property OnAdvancedDrawItem: TAdvancedMenuDrawItemEvent read FOnAdvancedDrawItem write FOnAdvancedDrawItem;
|
||||
property OnMeasureItem: TMenuMeasureItemEvent read FOnMeasureItem write FOnMeasureItem;
|
||||
end;
|
||||
@ -312,7 +308,6 @@ type
|
||||
FItems: TMenuItem;
|
||||
FOnAdvancedDrawItem: TAdvancedMenuDrawItemEvent;
|
||||
FOnChange: TMenuChangeEvent;
|
||||
FOnDrawItem: TMenuDrawItemEvent;
|
||||
FOnMeasureItem: TMenuMeasureItemEvent;
|
||||
FOwnerDraw: Boolean;
|
||||
FParent: TComponent;
|
||||
@ -368,6 +363,8 @@ type
|
||||
property Items: TMenuItem read FItems;
|
||||
property Images: TCustomImageList read FImages write SetImages;
|
||||
property OwnerDraw: Boolean read FOwnerDraw write FOwnerDraw;
|
||||
property OnAdvancedDrawItem: TAdvancedMenuDrawItemEvent read FOnAdvancedDrawItem write FOnAdvancedDrawItem;
|
||||
property OnMeasureItem: TMenuMeasureItemEvent read FOnMeasureItem write FOnMeasureItem;
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user