The code of TJvPopupMenu.DefaultDrawItem is absolutely identical to TJvPopupMenu.DrawItem.

Originally this method was used in OwnerDraw-mode to get the "normal" paint-behaviour (=to get the text drawn) and do some custom painting afterwards, typically it was called from the FOnDrawItem-event.

If you now call that method from the OnDrawItem-Event your code is stuck in an endless loop.

If you look into the original Rx-code from that the TJvPopupMenu
origins, you'll see a line
if Assigned(FOnDrawItem) then FOnDrawItem(Self, Item, Rect, State)
in .DrawItem but this line is missing on .DefaultDrawItem.

As the TJvPopupMenu has extended draw-modes with painters calling the "original" paint routine doesn't work at all, you have to create and use a painter yourself.

So I think that the complete method DefaultDrawItem is deprecated and has to be removed.

And as the function is identical to DrawItem users could call DrawItem instead if they - for some reason - really wanted to call it.