diff options
Diffstat (limited to 'src/plugins/platforminputcontexts')
14 files changed, 222 insertions, 66 deletions
diff --git a/src/plugins/platforminputcontexts/CMakeLists.txt b/src/plugins/platforminputcontexts/CMakeLists.txt index e31a24aae1..78b3ec99d9 100644 --- a/src/plugins/platforminputcontexts/CMakeLists.txt +++ b/src/plugins/platforminputcontexts/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: BSD-3-Clause -# Generated from platforminputcontexts.pro. - if(QT_FEATURE_xkbcommon) add_subdirectory(compose) endif() diff --git a/src/plugins/platforminputcontexts/compose/CMakeLists.txt b/src/plugins/platforminputcontexts/compose/CMakeLists.txt index 3f967bba06..9e71a7a07c 100644 --- a/src/plugins/platforminputcontexts/compose/CMakeLists.txt +++ b/src/plugins/platforminputcontexts/compose/CMakeLists.txt @@ -1,14 +1,12 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: BSD-3-Clause -# Generated from compose.pro. - ##################################################################### ## QComposePlatformInputContextPlugin Plugin: ##################################################################### -qt_find_package(XKB) # special case -pkg_get_variable(PKG_X11_PREFIX x11 prefix) # special case +qt_find_package(XKB) +pkg_get_variable(PKG_X11_PREFIX x11 prefix) qt_internal_add_plugin(QComposePlatformInputContextPlugin OUTPUT_NAME composeplatforminputcontextplugin @@ -24,7 +22,3 @@ qt_internal_add_plugin(QComposePlatformInputContextPlugin Qt::GuiPrivate XKB::XKB ) - -#### Keys ignored in scope 1:.:.:compose.pro:<TRUE>: -# OTHER_FILES = "$$PWD/compose.json" -# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforminputcontexts/ibus/CMakeLists.txt b/src/plugins/platforminputcontexts/ibus/CMakeLists.txt index fa28289bc8..54847e86fd 100644 --- a/src/plugins/platforminputcontexts/ibus/CMakeLists.txt +++ b/src/plugins/platforminputcontexts/ibus/CMakeLists.txt @@ -1,8 +1,6 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: BSD-3-Clause -# Generated from ibus.pro. - ##################################################################### ## QIbusPlatformInputContextPlugin Plugin: ##################################################################### @@ -25,7 +23,3 @@ qt_internal_add_plugin(QIbusPlatformInputContextPlugin Qt::GuiPrivate XKB::XKB ) - -#### Keys ignored in scope 1:.:.:ibus.pro:<TRUE>: -# OTHER_FILES = "$$PWD/ibus.json" -# PLUGIN_EXTENDS = "-" diff --git a/src/plugins/platforminputcontexts/ibus/interfaces/org.freedesktop.IBus.InputContext.xml b/src/plugins/platforminputcontexts/ibus/interfaces/org.freedesktop.IBus.InputContext.xml index 9c67a38c57..30fa7431c3 100644 --- a/src/plugins/platforminputcontexts/ibus/interfaces/org.freedesktop.IBus.InputContext.xml +++ b/src/plugins/platforminputcontexts/ibus/interfaces/org.freedesktop.IBus.InputContext.xml @@ -2,6 +2,12 @@ "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> <node> <interface name="org.freedesktop.IBus.InputContext"> + <property name="ClientCommitPreedit" type="(b)" access="readwrite"> + <annotation name="org.qtproject.QtDBus.QtTypeName" value="QIBusPropTypeClientCommitPreedit"/> + </property> + <property name='ContentType' type='(uu)' access='readwrite'> + <annotation name="org.qtproject.QtDBus.QtTypeName" value="QIBusPropTypeContentType"/> + </property> <method name="ProcessKeyEvent"> <arg name="keyval" direction="in" type="u"/> <arg name="keycode" direction="in" type="u"/> @@ -14,6 +20,12 @@ <arg name="w" direction="in" type="i"/> <arg name="h" direction="in" type="i"/> </method> + <method name='SetCursorLocationRelative'> + <arg name="x" direction="in" type="i"/> + <arg name="y" direction="in" type="i"/> + <arg name="w" direction="in" type="i"/> + <arg name="h" direction="in" type="i"/> + </method> <method name="FocusIn"/> <method name="FocusOut"/> <method name="Reset"/> @@ -56,6 +68,12 @@ <arg name="cursor_pos" type="u"/> <arg name="visible" type="b"/> </signal> + <signal name="UpdatePreeditTextWithMode"> + <arg name="text" type="v"/> + <arg name="cursor_pos" type="u"/> + <arg name="visible" type="b"/> + <arg name="mode" type="u"/> + </signal> <signal name="ShowPreeditText"/> <signal name="HidePreeditText"/> <signal name="UpdateAuxiliaryText"> diff --git a/src/plugins/platforminputcontexts/ibus/main.cpp b/src/plugins/platforminputcontexts/ibus/main.cpp index a0036db31e..d74be4bedf 100644 --- a/src/plugins/platforminputcontexts/ibus/main.cpp +++ b/src/plugins/platforminputcontexts/ibus/main.cpp @@ -28,6 +28,8 @@ QIBusPlatformInputContext *QIbusPlatformInputContextPlugin::create(const QString qDBusRegisterMetaType<QIBusAttribute>(); qDBusRegisterMetaType<QIBusAttributeList>(); qDBusRegisterMetaType<QIBusText>(); + qDBusRegisterMetaType<QIBusPropTypeClientCommitPreedit>(); + qDBusRegisterMetaType<QIBusPropTypeContentType>(); return new QIBusPlatformInputContext; } diff --git a/src/plugins/platforminputcontexts/ibus/qibusinputcontextproxy.cpp b/src/plugins/platforminputcontexts/ibus/qibusinputcontextproxy.cpp index 8e2027272a..248abbc32b 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusinputcontextproxy.cpp +++ b/src/plugins/platforminputcontexts/ibus/qibusinputcontextproxy.cpp @@ -2,7 +2,7 @@ * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -N -p qibusinputcontextproxy -c QIBusInputContextProxy interfaces/org.freedesktop.IBus.InputContext.xml * - * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. + * qdbusxml2cpp is Copyright (C) 2023 The Qt Company Ltd and other contributors. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments @@ -24,4 +24,3 @@ QIBusInputContextProxy::~QIBusInputContextProxy() { } -#include "moc_qibusinputcontextproxy.cpp" diff --git a/src/plugins/platforminputcontexts/ibus/qibusinputcontextproxy.h b/src/plugins/platforminputcontexts/ibus/qibusinputcontextproxy.h index 3d11706c06..82e78aa35b 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusinputcontextproxy.h +++ b/src/plugins/platforminputcontexts/ibus/qibusinputcontextproxy.h @@ -2,25 +2,26 @@ * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -N -p qibusinputcontextproxy -c QIBusInputContextProxy interfaces/org.freedesktop.IBus.InputContext.xml * - * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. + * qdbusxml2cpp is Copyright (C) 2023 The Qt Company Ltd and other contributors. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ -#ifndef QIBUSINPUTCONTEXTPROXY_H_1394889529 -#define QIBUSINPUTCONTEXTPROXY_H_1394889529 +#ifndef QIBUSINPUTCONTEXTPROXY_H +#define QIBUSINPUTCONTEXTPROXY_H -#include <QObject> -#include <QByteArray> -#include <QList> -#include <QMap> -#include <QString> -#include <QStringList> -#include <QVariant> -#include <QDBusAbstractInterface> -#include <QDBusPendingReply> +#include <QtCore/QObject> +#include <QtCore/QByteArray> +#include <QtCore/QList> +#include <QtCore/QMap> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QVariant> +#include <QtDBus/QtDBus> +// Added for QIBusPropTypeClientCommitPreedit and QIBusPropTypeContentType +#include "qibustypes.h" /* * Proxy class for interface org.freedesktop.IBus.InputContext @@ -37,95 +38,114 @@ public: ~QIBusInputContextProxy(); + Q_PROPERTY(QIBusPropTypeClientCommitPreedit ClientCommitPreedit READ clientCommitPreedit WRITE setClientCommitPreedit) + inline QIBusPropTypeClientCommitPreedit clientCommitPreedit() const + { return qvariant_cast< QIBusPropTypeClientCommitPreedit >(property("ClientCommitPreedit")); } + inline void setClientCommitPreedit(const QIBusPropTypeClientCommitPreedit &value) + { setProperty("ClientCommitPreedit", QVariant::fromValue(value)); } + + Q_PROPERTY(QIBusPropTypeContentType ContentType READ contentType WRITE setContentType) + inline QIBusPropTypeContentType contentType() const + { return qvariant_cast< QIBusPropTypeContentType >(property("ContentType")); } + inline void setContentType(const QIBusPropTypeContentType &value) + { setProperty("ContentType", QVariant::fromValue(value)); } + public Q_SLOTS: // METHODS inline QDBusPendingReply<> Destroy() { QList<QVariant> argumentList; - return asyncCallWithArgumentList(QLatin1String("Destroy"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("Destroy"), argumentList); } inline QDBusPendingReply<> Disable() { QList<QVariant> argumentList; - return asyncCallWithArgumentList(QLatin1String("Disable"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("Disable"), argumentList); } inline QDBusPendingReply<> Enable() { QList<QVariant> argumentList; - return asyncCallWithArgumentList(QLatin1String("Enable"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("Enable"), argumentList); } inline QDBusPendingReply<> FocusIn() { QList<QVariant> argumentList; - return asyncCallWithArgumentList(QLatin1String("FocusIn"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("FocusIn"), argumentList); } inline QDBusPendingReply<> FocusOut() { QList<QVariant> argumentList; - return asyncCallWithArgumentList(QLatin1String("FocusOut"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("FocusOut"), argumentList); } inline QDBusPendingReply<QDBusVariant> GetEngine() { QList<QVariant> argumentList; - return asyncCallWithArgumentList(QLatin1String("GetEngine"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("GetEngine"), argumentList); } inline QDBusPendingReply<bool> IsEnabled() { QList<QVariant> argumentList; - return asyncCallWithArgumentList(QLatin1String("IsEnabled"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("IsEnabled"), argumentList); } inline QDBusPendingReply<bool> ProcessKeyEvent(uint keyval, uint keycode, uint state) { QList<QVariant> argumentList; argumentList << QVariant::fromValue(keyval) << QVariant::fromValue(keycode) << QVariant::fromValue(state); - return asyncCallWithArgumentList(QLatin1String("ProcessKeyEvent"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("ProcessKeyEvent"), argumentList); } inline QDBusPendingReply<> PropertyActivate(const QString &name, int state) { QList<QVariant> argumentList; argumentList << QVariant::fromValue(name) << QVariant::fromValue(state); - return asyncCallWithArgumentList(QLatin1String("PropertyActivate"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("PropertyActivate"), argumentList); } inline QDBusPendingReply<> Reset() { QList<QVariant> argumentList; - return asyncCallWithArgumentList(QLatin1String("Reset"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("Reset"), argumentList); } inline QDBusPendingReply<> SetCapabilities(uint caps) { QList<QVariant> argumentList; argumentList << QVariant::fromValue(caps); - return asyncCallWithArgumentList(QLatin1String("SetCapabilities"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("SetCapabilities"), argumentList); } inline QDBusPendingReply<> SetCursorLocation(int x, int y, int w, int h) { QList<QVariant> argumentList; argumentList << QVariant::fromValue(x) << QVariant::fromValue(y) << QVariant::fromValue(w) << QVariant::fromValue(h); - return asyncCallWithArgumentList(QLatin1String("SetCursorLocation"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("SetCursorLocation"), argumentList); + } + + inline QDBusPendingReply<> SetCursorLocationRelative(int x, int y, int w, int h) + { + QList<QVariant> argumentList; + argumentList << QVariant::fromValue(x) << QVariant::fromValue(y) << QVariant::fromValue(w) << QVariant::fromValue(h); + return asyncCallWithArgumentList(QStringLiteral("SetCursorLocationRelative"), argumentList); } inline QDBusPendingReply<> SetEngine(const QString &name) { QList<QVariant> argumentList; argumentList << QVariant::fromValue(name); - return asyncCallWithArgumentList(QLatin1String("SetEngine"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("SetEngine"), argumentList); } inline QDBusPendingReply<> SetSurroundingText(const QDBusVariant &text, uint cursor_pos, uint anchor_pos) { QList<QVariant> argumentList; argumentList << QVariant::fromValue(text) << QVariant::fromValue(cursor_pos) << QVariant::fromValue(anchor_pos); - return asyncCallWithArgumentList(QLatin1String("SetSurroundingText"), argumentList); + return asyncCallWithArgumentList(QStringLiteral("SetSurroundingText"), argumentList); } Q_SIGNALS: // SIGNALS @@ -149,6 +169,7 @@ Q_SIGNALS: // SIGNALS void UpdateAuxiliaryText(const QDBusVariant &text, bool visible); void UpdateLookupTable(const QDBusVariant &table, bool visible); void UpdatePreeditText(const QDBusVariant &text, uint cursor_pos, bool visible); + void UpdatePreeditTextWithMode(const QDBusVariant &text, uint cursor_pos, bool visible, uint mode); void UpdateProperty(const QDBusVariant &prop); }; diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp index 0860254726..00c7884cda 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp @@ -8,6 +8,7 @@ #include <QWindow> #include <QEvent> #include <QFile> +#include <QFileInfo> #include <QStandardPaths> #include <QDBusVariant> #include <QDBusPendingReply> @@ -50,6 +51,13 @@ class QIBusPlatformInputContextPrivate { Q_DISABLE_COPY_MOVE(QIBusPlatformInputContextPrivate) public: + // This enum might be synced with IBusPreeditFocusMode + // in ibustypes.h of IBUS project + enum PreeditFocusMode { + PREEDIT_CLEAR = 0, + PREEDIT_COMMIT = 1, + }; + QIBusPlatformInputContextPrivate(); ~QIBusPlatformInputContextPrivate() { @@ -79,6 +87,7 @@ public: QList<QInputMethodEvent::Attribute> attributes; bool needsSurroundingText; QLocale locale; + PreeditFocusMode preeditFocusMode = PREEDIT_COMMIT; // for backward compatibility }; @@ -170,10 +179,18 @@ void QIBusPlatformInputContext::commit() return; } - if (!d->predit.isEmpty()) { - QInputMethodEvent event; - event.setCommitString(d->predit); - QCoreApplication::sendEvent(input, &event); + if (d->preeditFocusMode == QIBusPlatformInputContextPrivate::PREEDIT_COMMIT) { + if (!d->predit.isEmpty()) { + QInputMethodEvent event; + event.setCommitString(d->predit); + QCoreApplication::sendEvent(input, &event); + } + } else { + if (!d->predit.isEmpty()) { + // Clear the existing preedit + QInputMethodEvent event; + QCoreApplication::sendEvent(input, &event); + } } d->context->Reset(); @@ -222,10 +239,31 @@ void QIBusPlatformInputContext::cursorRectChanged() QWindow *inputWindow = qApp->focusWindow(); if (!inputWindow) return; - r.moveTopLeft(inputWindow->mapToGlobal(r.topLeft())); + if (!inputWindow->screen()) + return; + + if (QGuiApplication::platformName().startsWith("wayland"_L1)) { + auto margins = inputWindow->frameMargins(); + r.translate(margins.left(), margins.top()); + qreal scale = inputWindow->devicePixelRatio(); + QRect newRect = QRect(r.x() * scale, r.y() * scale, r.width() * scale, r.height() * scale); + if (debug) + qDebug() << "microFocus" << newRect; + d->context->SetCursorLocationRelative(newRect.x(), newRect.y(), + newRect.width(), newRect.height()); + return; + } + + // x11/xcb + auto screenGeometry = inputWindow->screen()->geometry(); + auto point = inputWindow->mapToGlobal(r.topLeft()); + qreal scale = inputWindow->devicePixelRatio(); + auto native = (point - screenGeometry.topLeft()) * scale + screenGeometry.topLeft(); + QRect newRect(native, r.size() * scale); if (debug) - qDebug() << "microFocus" << r; - d->context->SetCursorLocation(r.x(), r.y(), r.width(), r.height()); + qDebug() << "microFocus" << newRect; + d->context->SetCursorLocation(newRect.x(), newRect.y(), + newRect.width(), newRect.height()); } void QIBusPlatformInputContext::setFocusObject(QObject *object) @@ -296,6 +334,15 @@ void QIBusPlatformInputContext::updatePreeditText(const QDBusVariant &text, uint d->predit = t.text; } +void QIBusPlatformInputContext::updatePreeditTextWithMode(const QDBusVariant &text, uint cursorPos, bool visible, uint mode) +{ + updatePreeditText(text, cursorPos, visible); + if (mode > 0) + d->preeditFocusMode = QIBusPlatformInputContextPrivate::PreeditFocusMode::PREEDIT_COMMIT; + else + d->preeditFocusMode = QIBusPlatformInputContextPrivate::PreeditFocusMode::PREEDIT_CLEAR; +} + void QIBusPlatformInputContext::forwardKeyEvent(uint keyval, uint keycode, uint state) { if (!qApp) @@ -565,6 +612,7 @@ void QIBusPlatformInputContext::connectToContextSignals() if (d->context) { connect(d->context.get(), SIGNAL(CommitText(QDBusVariant)), SLOT(commitText(QDBusVariant))); connect(d->context.get(), SIGNAL(UpdatePreeditText(QDBusVariant,uint,bool)), this, SLOT(updatePreeditText(QDBusVariant,uint,bool))); + connect(d->context.get(), SIGNAL(UpdatePreeditTextWithMode(QDBusVariant,uint,bool,uint)), this, SLOT(updatePreeditTextWithMode(QDBusVariant,uint,bool,uint))); connect(d->context.get(), SIGNAL(ForwardKeyEvent(uint,uint,uint)), this, SLOT(forwardKeyEvent(uint,uint,uint))); connect(d->context.get(), SIGNAL(DeleteSurroundingText(int,uint)), this, SLOT(deleteSurroundingText(int,uint))); connect(d->context.get(), SIGNAL(RequireSurroundingText()), this, SLOT(surroundingTextRequired())); @@ -575,8 +623,7 @@ void QIBusPlatformInputContext::connectToContextSignals() static inline bool checkNeedPortalSupport() { - return !QStandardPaths::locate(QStandardPaths::RuntimeLocation, "flatpak-info"_L1).isEmpty() - || qEnvironmentVariableIsSet("SNAP"); + return QFileInfo::exists("/.flatpak-info"_L1) || qEnvironmentVariableIsSet("SNAP"); } static bool shouldConnectIbusPortal() @@ -671,6 +718,8 @@ void QIBusPlatformInputContextPrivate::createBusProxy() }; context->SetCapabilities(IBUS_CAP_PREEDIT_TEXT|IBUS_CAP_FOCUS|IBUS_CAP_SURROUNDING_TEXT); + context->setClientCommitPreedit(QIBusPropTypeClientCommitPreedit(true)); + if (debug) qDebug(">>>> bus connected!"); busConnected = true; diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h index 33ddb7af5d..ef8c0b7c8f 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h @@ -14,6 +14,8 @@ #include <QTimer> #include <QWindow> +#include "qibustypes.h" + QT_BEGIN_NAMESPACE class QIBusPlatformInputContextPrivate; @@ -66,6 +68,7 @@ public: public Q_SLOTS: void commitText(const QDBusVariant &text); void updatePreeditText(const QDBusVariant &text, uint cursor_pos, bool visible); + void updatePreeditTextWithMode(const QDBusVariant &text, uint cursor_pos, bool visible, uint mode); void forwardKeyEvent(uint keyval, uint keycode, uint state); void cursorRectChanged(); void deleteSurroundingText(int offset, uint n_chars); diff --git a/src/plugins/platforminputcontexts/ibus/qibusproxy.h b/src/plugins/platforminputcontexts/ibus/qibusproxy.h index c66e900664..73aff1a3d9 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusproxy.h +++ b/src/plugins/platforminputcontexts/ibus/qibusproxy.h @@ -110,7 +110,7 @@ public Q_SLOTS: // METHODS #endif QIBusEngineDesc getGlobalEngine(); -private: +private Q_SLOTS: void globalEngineChanged(const QString &engine_name); Q_SIGNALS: // SIGNALS diff --git a/src/plugins/platforminputcontexts/ibus/qibusproxyportal.cpp b/src/plugins/platforminputcontexts/ibus/qibusproxyportal.cpp index 54d8f731fb..dc5b37aa6e 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusproxyportal.cpp +++ b/src/plugins/platforminputcontexts/ibus/qibusproxyportal.cpp @@ -2,7 +2,7 @@ * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -N -p qibusproxyportal -c QIBusProxyPortal interfaces/org.freedesktop.IBus.Portal.xml * - * qdbusxml2cpp is Copyright (C) 2017 The Qt Company Ltd. + * qdbusxml2cpp is Copyright (C) 2023 The Qt Company Ltd and other contributors. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments @@ -24,4 +24,3 @@ QIBusProxyPortal::~QIBusProxyPortal() { } -#include "moc_qibusproxyportal.cpp" diff --git a/src/plugins/platforminputcontexts/ibus/qibusproxyportal.h b/src/plugins/platforminputcontexts/ibus/qibusproxyportal.h index 4b921db814..450205f12a 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusproxyportal.h +++ b/src/plugins/platforminputcontexts/ibus/qibusproxyportal.h @@ -2,7 +2,7 @@ * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp -N -p qibusproxyportal -c QIBusProxyPortal interfaces/org.freedesktop.IBus.Portal.xml * - * qdbusxml2cpp is Copyright (C) 2017 The Qt Company Ltd. + * qdbusxml2cpp is Copyright (C) 2023 The Qt Company Ltd and other contributors. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. @@ -11,15 +11,14 @@ #ifndef QIBUSPROXYPORTAL_H #define QIBUSPROXYPORTAL_H -#include <QObject> -#include <QByteArray> -#include <QList> -#include <QMap> -#include <QString> -#include <QStringList> -#include <QVariant> -#include <QDBusAbstractInterface> -#include <QDBusPendingReply> +#include <QtCore/QObject> +#include <QtCore/QByteArray> +#include <QtCore/QList> +#include <QtCore/QMap> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QVariant> +#include <QtDBus/QtDBus> /* * Proxy class for interface org.freedesktop.IBus.Portal diff --git a/src/plugins/platforminputcontexts/ibus/qibustypes.cpp b/src/plugins/platforminputcontexts/ibus/qibustypes.cpp index 9d61d61eb3..ab1a244b6d 100644 --- a/src/plugins/platforminputcontexts/ibus/qibustypes.cpp +++ b/src/plugins/platforminputcontexts/ibus/qibustypes.cpp @@ -322,4 +322,44 @@ newest: argument.endStructure(); } +QIBusPropTypeClientCommitPreedit::QIBusPropTypeClientCommitPreedit(bool inClientCommitPreedit) + : clientCommitPreedit(inClientCommitPreedit) +{ +} + +void QIBusPropTypeClientCommitPreedit::serializeTo(QDBusArgument &argument) const +{ + argument.beginStructure(); + argument << clientCommitPreedit; + argument.endStructure(); +} + +void QIBusPropTypeClientCommitPreedit::deserializeFrom(const QDBusArgument &argument) +{ + argument.beginStructure(); + argument >> clientCommitPreedit; + argument.endStructure(); +} + +QIBusPropTypeContentType::QIBusPropTypeContentType(unsigned int inPurpose, unsigned int inHints) + : purpose(inPurpose) + , hints(inHints) +{ +} + +void QIBusPropTypeContentType::serializeTo(QDBusArgument &argument) const +{ + argument.beginStructure(); + argument << purpose << hints; + argument.endStructure(); +} + +void QIBusPropTypeContentType::deserializeFrom(const QDBusArgument &argument) +{ + argument.beginStructure(); + argument >> purpose; + argument >> hints; + argument.endStructure(); +} + QT_END_NAMESPACE diff --git a/src/plugins/platforminputcontexts/ibus/qibustypes.h b/src/plugins/platforminputcontexts/ibus/qibustypes.h index 60f24bcf54..b697e432a0 100644 --- a/src/plugins/platforminputcontexts/ibus/qibustypes.h +++ b/src/plugins/platforminputcontexts/ibus/qibustypes.h @@ -133,6 +133,44 @@ inline QDBusArgument &operator<<(QDBusArgument &argument, const QIBusEngineDesc inline const QDBusArgument &operator>>(const QDBusArgument &argument, QIBusEngineDesc &desc) { desc.deserializeFrom(argument); return argument; } +class QIBusPropTypeClientCommitPreedit +{ +public: + QIBusPropTypeClientCommitPreedit() {}; + + QIBusPropTypeClientCommitPreedit(bool inClientCommitPreedit); + + void serializeTo(QDBusArgument &argument) const; + void deserializeFrom(const QDBusArgument &argument); + + bool clientCommitPreedit; +}; +inline QDBusArgument &operator<<(QDBusArgument &argument, const QIBusPropTypeClientCommitPreedit &data) +{ data.serializeTo(argument); return argument; } +inline const QDBusArgument &operator>>(const QDBusArgument &argument, QIBusPropTypeClientCommitPreedit &data) +{ data.deserializeFrom(argument); return argument; } + +class QIBusPropTypeContentType +{ +public: + QIBusPropTypeContentType() {}; + + QIBusPropTypeContentType(unsigned int inPurpose, unsigned int inHint); + + void serializeTo(QDBusArgument &argument) const; + void deserializeFrom(const QDBusArgument &argument); + + unsigned int purpose; + unsigned int hints; +}; +inline QDBusArgument &operator<<(QDBusArgument &argument, const QIBusPropTypeContentType &data) +{ data.serializeTo(argument); return argument; } +inline const QDBusArgument &operator>>(const QDBusArgument &argument, QIBusPropTypeContentType &data) +{ data.deserializeFrom(argument); return argument; } + +Q_DECLARE_TYPEINFO(QIBusPropTypeClientCommitPreedit, Q_RELOCATABLE_TYPE); +Q_DECLARE_TYPEINFO(QIBusPropTypeContentType, Q_RELOCATABLE_TYPE); + QT_END_NAMESPACE Q_DECLARE_METATYPE(QIBusAttribute) @@ -140,4 +178,6 @@ Q_DECLARE_METATYPE(QIBusAttributeList) Q_DECLARE_METATYPE(QIBusText) Q_DECLARE_METATYPE(QIBusEngineDesc) +Q_DECLARE_METATYPE(QIBusPropTypeClientCommitPreedit) +Q_DECLARE_METATYPE(QIBusPropTypeContentType) #endif |