Just came across some omission, the ConnectedOnTop and ConnectedOnBottom flags are ignored:
One possible solution:
if (button.isConnectedOnLeft() || button.isConnectedOnRight() || button.isConnectedOnTop() || button.isConnectedOnBottom())
{
Path path;
path.addRoundedRectangle (bounds.getX(), bounds.getY(),
bounds.getWidth(), bounds.getHeight(),
cornerSize, cornerSize,
! (button.isConnectedOnLeft() || button.isConnectedOnTop()),
! (button.isConnectedOnRight() || button.isConnectedOnTop()),
! (button.isConnectedOnLeft() || button.isConnectedOnBottom()),
! (button.isConnectedOnRight() || button.isConnectedOnBottom()));
// ...
Cheers!