QScreen manual test: don't crash when a QScreen is null

Need to survive having screens detached/reattached on X11.

Task-number: QTBUG-42985
Change-Id: I81cf9721f0cb61a29180c60d44d588063266e651
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
This commit is contained in:
Shawn Rutledge 2015-09-10 20:39:10 +02:00 committed by Shawn Rutledge
parent d0ca16eae1
commit 61b608dfb5

View File

@ -131,10 +131,19 @@ static inline QString msgScreenChange(const QWidget *w, const QScreen *oldScreen
QString result;
const QRect geometry = w->geometry();
const QPoint pos = QCursor::pos();
QTextStream(&result) << "Screen changed \"" << oldScreen->name() << "\" --> \""
<< newScreen->name() << "\" at " << pos.x() << ',' << pos.y() << " geometry: "
<< geometry.width() << 'x' << geometry.height() << forcesign << geometry.x()
<< geometry.y() << '.';
if (!newScreen) {
result = QLatin1String("Screen changed --> null");
} else if (!oldScreen) {
QTextStream(&result) << "Screen changed null --> \""
<< newScreen->name() << "\" at " << pos.x() << ',' << pos.y() << " geometry: "
<< geometry.width() << 'x' << geometry.height() << forcesign << geometry.x()
<< geometry.y() << '.';
} else {
QTextStream(&result) << "Screen changed \"" << oldScreen->name() << "\" --> \""
<< newScreen->name() << "\" at " << pos.x() << ',' << pos.y() << " geometry: "
<< geometry.width() << 'x' << geometry.height() << forcesign << geometry.x()
<< geometry.y() << '.';
}
return result;
}