From c3687d0e59632dd97645ea3c67478437ba8adb5a Mon Sep 17 00:00:00 2001 From: Morten Sorvig Date: Thu, 13 Aug 2009 15:00:28 +0200 Subject: Fix crash/assert on Mac when painting "small" QPushButtons. A QPushButton with a height if (say) three pixels would cause HIThemeGetButtonContentBounds ot return a rect with dimentions {int_min, int_min, 0, 0}. Detect that case and return the button rect instead. Reviewed-by: Trust Me --- src/gui/styles/qmacstyle_mac.mm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm index 8d6b593..b2923f6 100644 --- a/src/gui/styles/qmacstyle_mac.mm +++ b/src/gui/styles/qmacstyle_mac.mm @@ -1020,6 +1020,13 @@ HIRect QMacStylePrivate::pushButtonContentBounds(const QStyleOptionButton *btn, HIRect contentBounds; HIThemeGetButtonContentBounds(&outerBounds, bdi, &contentBounds); + + // Return the button rect if the rect returned by HIThemeGetButtonContentBounds + // is invalid. This avoids passing around bad rects to code that does not expect it. + if (contentBounds.size.height == 0 && contentBounds.size.width == 0) { + return qt_hirectForQRect(btn->rect); + } + return contentBounds; } -- cgit v0.12