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,120 @@
/*
This file is part of the KDE libraries
SPDX-FileCopyrightText: 2002 Carsten Pfeiffer <pfeiffer@kde.org>
SPDX-FileCopyrightText: 2005 Michael Brade <brade@kde.org>
SPDX-FileCopyrightText: 2012 Laurent Montel <montel@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef KTEXTEDIT_P_H
#define KTEXTEDIT_P_H
#include "kfind.h"
#include "kfinddialog.h"
#include "kreplace.h"
#include "kreplacedialog.h"
#include <Sonnet/SpellCheckDecorator>
#include <Sonnet/Speller>
#include <QSettings>
#include <QTextDocumentFragment>
#ifdef HAVE_SPEECH
#include <QTextToSpeech>
#endif
class KTextEditPrivate
{
Q_DECLARE_PUBLIC(KTextEdit)
public:
explicit KTextEditPrivate(KTextEdit *qq)
: q_ptr(qq)
, customPalette(false)
, spellCheckingEnabled(false)
, findReplaceEnabled(true)
, showTabAction(true)
, showAutoCorrectionButton(false)
{
// Check the default sonnet settings to see if spellchecking should be enabled.
QSettings settings(QStringLiteral("KDE"), QStringLiteral("Sonnet"));
spellCheckingEnabled = settings.value(QStringLiteral("checkerEnabledByDefault"), false).toBool();
}
virtual ~KTextEditPrivate()
{
delete decorator;
delete findDlg;
delete find;
delete replace;
delete repDlg;
delete speller;
#ifdef HAVE_SPEECH
delete textToSpeech;
#endif
}
/**
* Checks whether we should/should not consume a key used as a shortcut.
* This makes it possible to handle shortcuts in the focused widget before any
* window-global QAction is triggered.
*/
bool overrideShortcut(const QKeyEvent *e);
/**
* Actually handle a shortcut event.
*/
bool handleShortcut(const QKeyEvent *e);
void spellCheckerMisspelling(const QString &text, int pos);
void spellCheckerCorrected(const QString &, int, const QString &);
void spellCheckerAutoCorrect(const QString &, const QString &);
void spellCheckerCanceled();
void spellCheckerFinished();
void toggleAutoSpellCheck();
void slotFindHighlight(const QString &text, int matchingIndex, int matchingLength);
void slotReplaceText(const QString &text, int replacementIndex, int /*replacedLength*/, int matchedLength);
/**
* Similar to QTextEdit::clear(), only that it is possible to undo this
* action.
*/
void undoableClear();
void slotAllowTab();
void menuActivated(QAction *action);
void init();
void checkSpelling(bool force);
KTextEdit *const q_ptr;
QAction *autoSpellCheckAction;
QAction *allowTab;
QAction *spellCheckAction;
QMenu *languagesMenu = nullptr;
bool customPalette : 1;
bool spellCheckingEnabled : 1;
bool findReplaceEnabled : 1;
bool showTabAction : 1;
bool showAutoCorrectionButton : 1;
QTextDocumentFragment originalDoc;
QString spellCheckingLanguage;
Sonnet::SpellCheckDecorator *decorator = nullptr;
Sonnet::Speller *speller = nullptr;
KFindDialog *findDlg = nullptr;
KFind *find = nullptr;
KReplaceDialog *repDlg = nullptr;
KReplace *replace = nullptr;
#ifdef HAVE_SPEECH
QTextToSpeech *textToSpeech = nullptr;
#endif
int findIndex = 0;
int repIndex = 0;
int lastReplacedPosition = -1;
};
#endif