Streamline code in QDesktopWidget.
Task-number: QTBUG-44070 Task-number: QTBUG-44213 Change-Id: Icbf0547eb521b9f3fcc725066ee4903226ecc630 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>bb10
parent
b1b262559c
commit
2e1a76a594
|
|
@ -72,29 +72,22 @@ void QDesktopWidgetPrivate::_q_updateScreens()
|
|||
const QList<QScreen *> screenList = QGuiApplication::screens();
|
||||
const int targetLength = screenList.length();
|
||||
const int oldLength = screens.length();
|
||||
int currentLength = oldLength;
|
||||
|
||||
// Add or remove screen widgets as necessary
|
||||
if(currentLength > targetLength) {
|
||||
QDesktopScreenWidget *screen;
|
||||
while (currentLength-- > targetLength) {
|
||||
screen = screens.takeLast();
|
||||
delete screen;
|
||||
}
|
||||
}
|
||||
else if (currentLength < targetLength) {
|
||||
while (currentLength < targetLength) {
|
||||
QScreen *qScreen = screenList.at(currentLength);
|
||||
QDesktopScreenWidget *screenWidget = new QDesktopScreenWidget(currentLength++);
|
||||
screenWidget->setGeometry(qScreen->geometry());
|
||||
QObject::connect(qScreen, SIGNAL(geometryChanged(QRect)),
|
||||
q, SLOT(_q_updateScreens()), Qt::QueuedConnection);
|
||||
QObject::connect(qScreen, SIGNAL(availableGeometryChanged(QRect)),
|
||||
q, SLOT(_q_availableGeometryChanged()), Qt::QueuedConnection);
|
||||
QObject::connect(qScreen, SIGNAL(destroyed()),
|
||||
q, SLOT(_q_updateScreens()), Qt::QueuedConnection);
|
||||
screens.append(screenWidget);
|
||||
}
|
||||
while (screens.size() > targetLength)
|
||||
delete screens.takeLast();
|
||||
|
||||
for (int currentLength = screens.size(); currentLength < targetLength; ++currentLength) {
|
||||
QScreen *qScreen = screenList.at(currentLength);
|
||||
QDesktopScreenWidget *screenWidget = new QDesktopScreenWidget(currentLength);
|
||||
screenWidget->setGeometry(qScreen->geometry());
|
||||
QObject::connect(qScreen, SIGNAL(geometryChanged(QRect)),
|
||||
q, SLOT(_q_updateScreens()), Qt::QueuedConnection);
|
||||
QObject::connect(qScreen, SIGNAL(availableGeometryChanged(QRect)),
|
||||
q, SLOT(_q_availableGeometryChanged()), Qt::QueuedConnection);
|
||||
QObject::connect(qScreen, SIGNAL(destroyed()),
|
||||
q, SLOT(_q_updateScreens()), Qt::QueuedConnection);
|
||||
screens.append(screenWidget);
|
||||
}
|
||||
|
||||
QRegion virtualGeometry;
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ class QDesktopWidgetPrivate : public QWidgetPrivate {
|
|||
Q_DECLARE_PUBLIC(QDesktopWidget)
|
||||
|
||||
public:
|
||||
~QDesktopWidgetPrivate() {foreach(QDesktopScreenWidget *s, screens) delete s; }
|
||||
~QDesktopWidgetPrivate() { qDeleteAll(screens); }
|
||||
void _q_updateScreens();
|
||||
void _q_availableGeometryChanged();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue