From 705506f719d74af737f8bfcda6d3771aff4ad6e9 Mon Sep 17 00:00:00 2001 From: pei-jiankang Date: Fri, 11 Feb 2022 12:03:48 +0800 Subject: [PATCH] modify ukui-kwin compile error --- decorations/decoratedclient.cpp | 5 +- decorations/decoratedclient.h | 2 +- decorations/decorationbridge.cpp | 11 +--- decorations/decorationbridge.h | 2 +- effects.cpp | 5 +- .../declarative-plugin/previewbridge.cpp | 61 +++++++++++-------- .../declarative-plugin/previewbridge.h | 4 +- .../declarative-plugin/previewclient.cpp | 3 +- .../declarative-plugin/previewclient.h | 2 +- .../platforms/x11/common/eglonxbackend.cpp | 1 + plugins/platforms/x11/common/eglonxbackend.h | 3 + .../platforms/x11/standalone/x11_platform.h | 1 + .../x11/windowed/x11windowed_backend.cpp | 2 +- po/tr/{kwin.po => ukui-kwin.po} | 0 workspace.cpp | 2 +- 15 files changed, 55 insertions(+), 49 deletions(-) rename po/tr/{kwin.po => ukui-kwin.po} (100%) diff --git a/decorations/decoratedclient.cpp b/decorations/decoratedclient.cpp index 6e150d8..a708d3c 100644 --- a/decorations/decoratedclient.cpp +++ b/decorations/decoratedclient.cpp @@ -238,10 +238,9 @@ void DecoratedClientImpl::requestHideToolTip() m_toolTipShowing = false; } -void DecoratedClientImpl::requestShowWindowMenu() +void DecoratedClientImpl::requestShowWindowMenu(const QRect &rect) { - // TODO: add rect to requestShowWindowMenu - Workspace::self()->showWindowMenu(QRect(Cursor::pos(), Cursor::pos()), m_client); + Workspace::self()->showWindowMenu(QRect(m_client->pos() + rect.topLeft(), m_client->pos() + rect.bottomRight()), m_client); } void DecoratedClientImpl::requestShowApplicationMenu(const QRect &rect, int actionId) diff --git a/decorations/decoratedclient.h b/decorations/decoratedclient.h index 576b62c..1675751 100644 --- a/decorations/decoratedclient.h +++ b/decorations/decoratedclient.h @@ -81,7 +81,7 @@ public: void requestContextHelp() override; void requestToggleMaximization(Qt::MouseButtons buttons) override; void requestMinimize() override; - void requestShowWindowMenu() override; + void requestShowWindowMenu(const QRect &rect) override; void requestShowApplicationMenu(const QRect &rect, int actionId) override; void requestToggleKeepAbove() override; void requestToggleKeepBelow() override; diff --git a/decorations/decorationbridge.cpp b/decorations/decorationbridge.cpp index fc0265a..0abe08d 100644 --- a/decorations/decorationbridge.cpp +++ b/decorations/decorationbridge.cpp @@ -45,6 +45,7 @@ along with this program. If not, see . #include // Frameworks +#include #include #include @@ -339,16 +340,6 @@ std::unique_ptr DecorationBridge::setti return std::unique_ptr(new SettingsImpl(parent)); } -void DecorationBridge::update(KDecoration2::Decoration *decoration, const QRect &geometry) -{ - // TODO: remove check once all compositors implement it - if (AbstractClient *c = Workspace::self()->findAbstractClient([decoration] (const AbstractClient *client) { return client->decoration() == decoration; })) { - if (Renderer *renderer = c->decoratedClient()->renderer()) { - renderer->schedule(geometry); - } - } -} - KDecoration2::Decoration *DecorationBridge::createDecoration(AbstractClient *client) { if (m_noPlugin) { diff --git a/decorations/decorationbridge.h b/decorations/decorationbridge.h index 6f51a3f..6f2b1ed 100644 --- a/decorations/decorationbridge.h +++ b/decorations/decorationbridge.h @@ -56,12 +56,12 @@ class UKUI_KWIN_EXPORT DecorationBridge : public KDecoration2::DecorationBridge public: ~DecorationBridge() override; + void init(); KDecoration2::Decoration *createDecoration(AbstractClient *client); std::unique_ptr createClient(KDecoration2::DecoratedClient *client, KDecoration2::Decoration *decoration) override; std::unique_ptr settings(KDecoration2::DecorationSettings *parent) override; - void update(KDecoration2::Decoration *decoration, const QRect &geometry) override; bool needsBlur() const { return m_blur; diff --git a/effects.cpp b/effects.cpp index 9f765aa..86b1638 100644 --- a/effects.cpp +++ b/effects.cpp @@ -49,7 +49,8 @@ along with this program. If not, see . #include "kwineffectquickview.h" #include - +#include +#include #include #include "composite.h" @@ -86,7 +87,7 @@ static QByteArray readWindowProperty(xcb_window_t win, xcb_atom_t atom, xcb_atom } } -static void deleteWindowProperty(Window win, long int atom) +static void deleteWindowProperty(xcb_window_t win, long int atom) { if (win == XCB_WINDOW_NONE) { return; diff --git a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp index 41fe317..68962ef 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp +++ b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.cpp @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include #include @@ -42,7 +42,11 @@ #include #include #include +#include +#include +#include #include +#include namespace KDecoration2 { @@ -69,17 +73,6 @@ std::unique_ptr PreviewBridge::createClient(DecoratedCli return ptr; } -void PreviewBridge::update(Decoration *decoration, const QRect &geometry) -{ - Q_UNUSED(geometry) - auto it = std::find_if(m_previewItems.constBegin(), m_previewItems.constEnd(), [decoration](PreviewItem *item) { - return item->decoration() == decoration; - }); - if (it != m_previewItems.constEnd()) { - (*it)->update(); - } -} - std::unique_ptr PreviewBridge::settings(DecorationSettings *parent) { auto ptr = std::unique_ptr(new PreviewSettings(parent)); @@ -135,11 +128,11 @@ void PreviewBridge::createFactory() return; } - const auto offers = KPluginTrader::self()->query(s_pluginName, s_pluginName); - auto item = std::find_if(offers.constBegin(), offers.constEnd(), [this](const auto &plugin) { return plugin.pluginName() == m_plugin; }); + const auto offers = KPluginLoader::findPlugins(s_pluginName); + auto item = std::find_if(offers.constBegin(), offers.constEnd(), [this](const auto &plugin) { return plugin.pluginId() == m_plugin; }); if (item != offers.constEnd()) { - KPluginLoader loader(item->libraryPath()); - m_factory = loader.factory(); + KPluginLoader loader(item->fileName()); + m_factory = loader.factory(); } setValid(!m_factory.isNull()); @@ -179,15 +172,16 @@ DecorationButton *PreviewBridge::createButton(KDecoration2::Decoration *decorati return m_factory->create(QStringLiteral("button"), parent, QVariantList({QVariant::fromValue(type), QVariant::fromValue(decoration)})); } -void PreviewBridge::configure() +void PreviewBridge::configure(QQuickItem *ctx) { if (!m_valid) { return; } //setup the UI - QDialog dialog; + QDialog *dialog = new QDialog(); + dialog->setAttribute(Qt::WA_DeleteOnClose); if (m_lastCreatedClient) { - dialog.setWindowTitle(m_lastCreatedClient->caption()); + dialog->setWindowTitle(m_lastCreatedClient->caption()); } // create the KCModule through the plugintrader @@ -195,7 +189,15 @@ void PreviewBridge::configure() if (!m_theme.isNull()) { args.insert(QStringLiteral("theme"), m_theme); } - KCModule *kcm = m_factory->create(QStringLiteral("kcmodule"), &dialog, QVariantList({args})); + + KCModule *kcm = nullptr; + + kcm = m_factory->create(dialog, QVariantList({args})); + + if (!kcm) { + kcm = m_factory->create(QStringLiteral("kcmodule"), dialog, QVariantList({args})); + } + if (!kcm) { return; } @@ -211,28 +213,35 @@ void PreviewBridge::configure() QStringLiteral("reloadConfig")); QDBusConnection::sessionBus().send(message); }; - connect(&dialog, &QDialog::accepted, this, save); + connect(dialog, &QDialog::accepted, this, save); QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel | QDialogButtonBox::RestoreDefaults | QDialogButtonBox::Reset, - &dialog); + dialog); QPushButton *reset = buttons->button(QDialogButtonBox::Reset); reset->setEnabled(false); // Here we connect our buttons with the dialog - connect(buttons, &QDialogButtonBox::accepted, &dialog, &QDialog::accept); - connect(buttons, &QDialogButtonBox::rejected, &dialog, &QDialog::reject); + connect(buttons, &QDialogButtonBox::accepted, dialog, &QDialog::accept); + connect(buttons, &QDialogButtonBox::rejected, dialog, &QDialog::reject); connect(reset, &QPushButton::clicked, kcm, &KCModule::load); auto changedSignal = static_cast(&KCModule::changed); connect(kcm, changedSignal, reset, &QPushButton::setEnabled); connect(buttons->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, kcm, &KCModule::defaults); - QVBoxLayout *layout = new QVBoxLayout(&dialog); + QVBoxLayout *layout = new QVBoxLayout(dialog); layout->addWidget(kcm); layout->addWidget(buttons); - dialog.exec(); + + if (ctx->window()) { + dialog->winId(); // so it creates windowHandle + dialog->windowHandle()->setTransientParent(QQuickRenderControl::renderWindowFor(ctx->window())); + dialog->setModal(true); + } + + dialog->show(); } BridgeItem::BridgeItem(QObject *parent) diff --git a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.h b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.h index 7e1d8f3..079333b 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/previewbridge.h +++ b/kcmkwin/kwindecoration/declarative-plugin/previewbridge.h @@ -26,6 +26,7 @@ #include #include +class QQuickItem; class KPluginFactory; namespace KDecoration2 @@ -47,7 +48,6 @@ public: explicit PreviewBridge(QObject *parent = nullptr); ~PreviewBridge() override; std::unique_ptr createClient(DecoratedClient *client, Decoration *decoration) override; - void update(Decoration* decoration, const QRect& geometry) override; std::unique_ptr settings(DecorationSettings *parent) override; PreviewClient *lastCreatedClient() { @@ -70,7 +70,7 @@ public: KDecoration2::DecorationButton *createButton(KDecoration2::Decoration *decoration, KDecoration2::DecorationButtonType type, QObject *parent = nullptr); public Q_SLOTS: - void configure(); + void configure(QQuickItem *ctx); Q_SIGNALS: void pluginChanged(); diff --git a/kcmkwin/kwindecoration/declarative-plugin/previewclient.cpp b/kcmkwin/kwindecoration/declarative-plugin/previewclient.cpp index 8319ccb..d214b1b 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/previewclient.cpp +++ b/kcmkwin/kwindecoration/declarative-plugin/previewclient.cpp @@ -405,8 +405,9 @@ void PreviewClient::requestToggleKeepBelow() setKeepBelow(!isKeepBelow()); } -void PreviewClient::requestShowWindowMenu() +void PreviewClient::requestShowWindowMenu(const QRect &rect) { + Q_UNUSED(rect) emit showWindowMenuRequested(); } diff --git a/kcmkwin/kwindecoration/declarative-plugin/previewclient.h b/kcmkwin/kwindecoration/declarative-plugin/previewclient.h index c37db74..fe043db 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/previewclient.h +++ b/kcmkwin/kwindecoration/declarative-plugin/previewclient.h @@ -107,7 +107,7 @@ public: void requestToggleKeepAbove() override; void requestToggleKeepBelow() override; void requestToggleShade() override; - void requestShowWindowMenu() override; + void requestShowWindowMenu(const QRect &rect) override; void requestShowApplicationMenu(const QRect &rect, int actionId) override; void requestToggleOnAllDesktops() override; diff --git a/plugins/platforms/x11/common/eglonxbackend.cpp b/plugins/platforms/x11/common/eglonxbackend.cpp index 0bb109d..92cf5ed 100644 --- a/plugins/platforms/x11/common/eglonxbackend.cpp +++ b/plugins/platforms/x11/common/eglonxbackend.cpp @@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . *********************************************************************/ #include "eglonxbackend.h" +#include // kwin #include "main.h" #include "options.h" diff --git a/plugins/platforms/x11/common/eglonxbackend.h b/plugins/platforms/x11/common/eglonxbackend.h index bd9c69b..f12ce5f 100644 --- a/plugins/platforms/x11/common/eglonxbackend.h +++ b/plugins/platforms/x11/common/eglonxbackend.h @@ -29,6 +29,9 @@ along with this program. If not, see . #include "swap_profiler.h" #include +#include +#include +#include "../windowed/x11windowed_backend.h" namespace KWin { diff --git a/plugins/platforms/x11/standalone/x11_platform.h b/plugins/platforms/x11/standalone/x11_platform.h index 5b75af3..0de0bd8 100644 --- a/plugins/platforms/x11/standalone/x11_platform.h +++ b/plugins/platforms/x11/standalone/x11_platform.h @@ -33,6 +33,7 @@ along with this program. If not, see . #include +#include "../windowed/x11windowed_backend.h" namespace KWin { class SyncFilter; diff --git a/plugins/platforms/x11/windowed/x11windowed_backend.cpp b/plugins/platforms/x11/windowed/x11windowed_backend.cpp index be48ca2..2e0dbee 100644 --- a/plugins/platforms/x11/windowed/x11windowed_backend.cpp +++ b/plugins/platforms/x11/windowed/x11windowed_backend.cpp @@ -237,7 +237,7 @@ void X11WindowedBackend::handleEvent(xcb_generic_event_t *e) m_keySymbols = xcb_key_symbols_alloc(m_connection); } const xcb_keysym_t kc = xcb_key_symbols_get_keysym(m_keySymbols, event->detail, 0); - if (kc == XK_Control_R) { + if (kc == 0xffe4) { grabKeyboard(event->time); } keyboardKeyPressed(event->detail - 8, event->time); diff --git a/po/tr/kwin.po b/po/tr/ukui-kwin.po similarity index 100% rename from po/tr/kwin.po rename to po/tr/ukui-kwin.po diff --git a/workspace.cpp b/workspace.cpp index 2c682af..7172771 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -455,7 +455,7 @@ void Workspace::initWithX11() } // TODO: better value - rootInfo->setActiveWindow(None); + rootInfo->setActiveWindow(XCB_WINDOW_NONE); focusToNull(); if (!qApp->isSessionRestored()) -- 2.33.0