Advance Wayland and KDE package bring-up

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-14 10:51:06 +01:00
parent 51f3c21121
commit cf12defd28
15214 changed files with 20594243 additions and 269 deletions
@@ -0,0 +1,106 @@
/*
This file is part of the KDE libraries
SPDX-FileCopyrightText: 1999, 2000, 2001 Carsten Pfeiffer <pfeiffer@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "kcompletionmatches.h"
#include <kcompletion.h>
#include <kcompletion_p.h> // for KCompletionMatchesWrapper
class KCompletionMatchesPrivate
{
public:
KCompletionMatchesPrivate(bool sort, KCompletionMatches *parent)
: sorting(sort)
, q_ptr(parent)
{
}
bool sorting;
KCompletionMatches *const q_ptr;
Q_DECLARE_PUBLIC(KCompletionMatches)
};
KCompletionMatches::KCompletionMatches(const KCompletionMatches &o)
: KSortableList<QString, int>()
, d_ptr(new KCompletionMatchesPrivate(o.sorting(), this))
{
*this = KCompletionMatches::operator=(o);
}
KCompletionMatches &KCompletionMatches::operator=(const KCompletionMatches &o)
{
Q_D(KCompletionMatches);
if (*this == o) {
return *this;
}
KCompletionMatchesList::operator=(o);
d->sorting = o.sorting();
return *this;
}
KCompletionMatches::KCompletionMatches(bool sort_P)
: d_ptr(new KCompletionMatchesPrivate(sort_P, this))
{
}
KCompletionMatches::KCompletionMatches(const KCompletionMatchesWrapper &matches)
: d_ptr(new KCompletionMatchesPrivate(matches.sorting(), this))
{
if (matches.m_sortedListPtr) {
KCompletionMatchesList::operator=(*matches.m_sortedListPtr);
} else {
const QStringList list = matches.list();
reserve(list.size());
std::transform(list.crbegin(), list.crend(), std::back_inserter(*this), [](const QString &str) {
return KSortableItem<QString, int>(1, str);
});
}
}
KCompletionMatches::~KCompletionMatches()
{
}
QStringList KCompletionMatches::list(bool sort_P) const
{
Q_D(const KCompletionMatches);
if (d->sorting && sort_P) {
const_cast<KCompletionMatches *>(this)->sort();
}
QStringList stringList;
stringList.reserve(size());
// high weight == sorted last -> reverse the sorting here
std::transform(crbegin(), crend(), std::back_inserter(stringList), [](const KSortableItem<QString> &item) {
return item.value();
});
return stringList;
}
bool KCompletionMatches::sorting() const
{
Q_D(const KCompletionMatches);
return d->sorting;
}
void KCompletionMatches::removeDuplicates()
{
for (auto it1 = begin(); it1 != end(); ++it1) {
auto it2 = it1;
++it2;
while (it2 != end()) {
if ((*it1).value() == (*it2).value()) {
// Use the max weight
(*it1).first = std::max((*it1).key(), (*it2).key());
it2 = erase(it2);
continue;
}
++it2;
}
}
}