The documentation for Rectangle::isEmpty() says the function is checking to see if the width AND height are BOTH 0 or less. It is actually checking of width OR height are 0 or less.
I actually found this by narrowing down an issue I’m having to the Rectangle::getUnion() method which is rejecting my rectangles that have a width or height of 0 when I expected them to be add to the union.