diff --git a/backends/kwayland/waylandoutput.cpp b/backends/kwayland/waylandoutput.cpp --- a/backends/kwayland/waylandoutput.cpp +++ b/backends/kwayland/waylandoutput.cpp @@ -60,10 +60,12 @@ QString WaylandOutput::toKScreenModeId(int kwaylandmodeid) const { - if (!m_modeIdMap.values().contains(kwaylandmodeid)) { + auto it = std::find(m_modeIdMap.cbegin(), m_modeIdMap.cend(), kwaylandmodeid); + if (it == m_modeIdMap.cend()) { qCWarning(KSCREEN_WAYLAND) << "Invalid kwayland mode id:" << kwaylandmodeid << m_modeIdMap; + return QStringLiteral("invalid_mode_id"); } - return m_modeIdMap.key(kwaylandmodeid, QStringLiteral("invalid_mode_id")); + return it.key(); } int WaylandOutput::toKWaylandModeId(const QString &kscreenmodeid) const @@ -143,7 +145,7 @@ qCDebug(KSCREEN_WAYLAND) << "Could not create mode id from" << m.id << ", using" << modename << "instead."; modeid = modename; } - if (m_modeIdMap.keys().contains(modeid)) { + if (m_modeIdMap.contains(modeid)) { qCWarning(KSCREEN_WAYLAND) << "Mode id already in use:" << modeid; } diff --git a/backends/qscreen/qscreenconfig.cpp b/backends/qscreen/qscreenconfig.cpp --- a/backends/qscreen/qscreenconfig.cpp +++ b/backends/qscreen/qscreenconfig.cpp @@ -44,7 +44,7 @@ QScreenConfig::~QScreenConfig() { - foreach(auto output, m_outputMap.values()) { + foreach(auto output, m_outputMap) { delete output; } } @@ -60,7 +60,7 @@ int QScreenConfig::outputId(const QScreen *qscreen) { QList ids; - foreach(auto output, m_outputMap.values()) { + foreach(auto output, m_outputMap) { if (qscreen == output->qscreen()) { return output->id(); } @@ -86,7 +86,7 @@ qCDebug(KSCREEN_QSCREEN) << "Screen removed" << qscreen << QGuiApplication::screens().count(); // Find output matching the QScreen object and remove it int removedOutputId = -1; - foreach(auto output, m_outputMap.values()) { + foreach(auto output, m_outputMap) { if (output->qscreen() == qscreen) { removedOutputId = output->id(); m_outputMap.remove(removedOutputId); @@ -105,14 +105,14 @@ //Removing removed outputs KScreen::OutputList outputs = config->outputs(); Q_FOREACH(const KScreen::OutputPtr &output, outputs) { - if (!m_outputMap.keys().contains(output->id())) { + if (!m_outputMap.contains(output->id())) { config->removeOutput(output->id()); } } // Add KScreen::Outputs that aren't in the list yet, handle primaryOutput KScreen::OutputList kscreenOutputs = config->outputs(); - foreach(QScreenOutput *output, m_outputMap.values()) { + foreach(QScreenOutput *output, m_outputMap) { KScreen::OutputPtr kscreenOutput = kscreenOutputs[output->id()]; if (!kscreenOutput) { diff --git a/src/output.cpp b/src/output.cpp --- a/src/output.cpp +++ b/src/output.cpp @@ -98,12 +98,17 @@ bool Output::Private::compareModeList(const ModeList& before, const ModeList &after) { - if (before.keys() != after.keys()) { + if (before.size() != after.size()) { return false; } - for (const QString &key : before.keys()) { - const auto mb = before.value(key); - const auto ma = after.value(key); + + for (auto itb = before.cbegin(); itb != before.cend(); ++itb) { + auto ita = after.constFind(itb.key()); + if (ita == after.cend()) { + return false; + } + const auto &mb = itb.value(); + const auto &ma = ita.value(); if (mb->id() != ma->id()) { return false; } diff --git a/tests/kwayland/waylandconfigreader.cpp b/tests/kwayland/waylandconfigreader.cpp --- a/tests/kwayland/waylandconfigreader.cpp +++ b/tests/kwayland/waylandconfigreader.cpp @@ -113,7 +113,7 @@ OutputDeviceInterface::Mode m0; const QSize _size = sizeFromJson(mode[QStringLiteral("size")]); - if (mode.keys().contains(QStringLiteral("refreshRate"))) { + if (mode.contains(QStringLiteral("refreshRate"))) { m0.refreshRate = qRound(mode[QStringLiteral("refreshRate")].toReal() * 1000); // config has it in Hz } bool isCurrent = currentModeId == mode[QStringLiteral("id")].toInt(); @@ -128,7 +128,7 @@ flags = OutputDeviceInterface::ModeFlags(OutputDeviceInterface::ModeFlag::Preferred); } - if (mode.keys().contains(QLatin1String("id"))) { + if (mode.contains(QLatin1String("id"))) { m0.id = mode[QStringLiteral("id")].toInt(); } else { m0.id = mode_id; diff --git a/tests/kwayland/waylandtestserver.cpp b/tests/kwayland/waylandtestserver.cpp --- a/tests/kwayland/waylandtestserver.cpp +++ b/tests/kwayland/waylandtestserver.cpp @@ -126,8 +126,9 @@ Q_EMIT configReceived(); auto changes = configurationInterface->changes(); - Q_FOREACH (const auto &outputdevice, changes.keys()) { - auto c = changes[outputdevice]; + for (auto it = changes.cbegin(); it != changes.cend(); ++it) { + auto outputdevice = it.key(); + auto c = it.value(); if (c->enabledChanged()) { qCDebug(KSCREEN_WAYLAND_TESTSERVER) << "Setting enabled:"; outputdevice->setEnabled(c->enabled());