fix: 修复任务栏不响应信号的问题

后端服务的信号没有参数,而任务栏的服务的信号中是带参数的,因此将后端的接口中加上参数即可

Log:
Task: https://pms.uniontech.com/task-view-133075.html
Influence: 调整任务栏位置,查看任务栏位置是否变化
Change-Id: Ibe97dfdff487407d8e7680168bd5993aaeedeac2
This commit is contained in:
donghualin 2022-05-26 13:06:53 +08:00
parent fa3a508644
commit 2675e262e7
12 changed files with 58 additions and 197 deletions

View File

@ -31,7 +31,7 @@ PlasmaWindow::PlasmaWindow(const QString &service, const QString &path, const QD
: DBusExtendedAbstractInterface(service, path, staticInterfaceName(), connection, parent) : DBusExtendedAbstractInterface(service, path, staticInterfaceName(), connection, parent)
, d_ptr(new __WindowPrivate) , d_ptr(new __WindowPrivate)
{ {
if (QMetaType::type("Rect") == QMetaType::UnknownType) if (QMetaType::type("DockRect") == QMetaType::UnknownType)
registerRectMetaType(); registerRectMetaType();
} }

View File

@ -22,7 +22,7 @@
#include <DBusExtendedAbstractInterface> #include <DBusExtendedAbstractInterface>
#include <QtDBus/QtDBus> #include <QtDBus/QtDBus>
#include "types/rect.h" #include "types/dockrect.h"
/* /*
* Proxy class for interface com.deepin.daemon.KWayland.PlasmaWindow * Proxy class for interface com.deepin.daemon.KWayland.PlasmaWindow
@ -50,7 +50,7 @@ public Q_SLOTS: // METHODS
inline QDBusPendingReply<Rect> Geometry() inline QDBusPendingReply<DockRect> Geometry()
{ {
QList<QVariant> argumentList; QList<QVariant> argumentList;
return asyncCallWithArgumentList(QStringLiteral("Geometry"), argumentList); return asyncCallWithArgumentList(QStringLiteral("Geometry"), argumentList);

View File

@ -1,7 +1,7 @@
#include "rect.h" #include "dockrect.h"
#include <QDebug> #include <QDebug>
Rect::Rect() DockRect::DockRect()
: X(0) : X(0)
, Y(0) , Y(0)
, Width(0) , Width(0)
@ -10,7 +10,7 @@ Rect::Rect()
} }
QDebug operator<<(QDebug debug, const Rect &rect) QDebug operator<<(QDebug debug, const DockRect &rect)
{ {
debug << QString("Rect(%1, %2, %3, %4)").arg(rect.X) debug << QString("Rect(%1, %2, %3, %4)").arg(rect.X)
.arg(rect.Y) .arg(rect.Y)
@ -20,12 +20,12 @@ QDebug operator<<(QDebug debug, const Rect &rect)
return debug; return debug;
} }
Rect::operator QRect() const DockRect::operator QRect() const
{ {
return QRect(X, Y, Width, Height); return QRect(X, Y, Width, Height);
} }
QDBusArgument &operator<<(QDBusArgument &arg, const Rect &rect) QDBusArgument &operator<<(QDBusArgument &arg, const DockRect &rect)
{ {
arg.beginStructure(); arg.beginStructure();
arg << rect.X << rect.Y << rect.Width << rect.Height; arg << rect.X << rect.Y << rect.Width << rect.Height;
@ -34,7 +34,7 @@ QDBusArgument &operator<<(QDBusArgument &arg, const Rect &rect)
return arg; return arg;
} }
const QDBusArgument &operator>>(const QDBusArgument &arg, Rect &rect) const QDBusArgument &operator>>(const QDBusArgument &arg, DockRect &rect)
{ {
arg.beginStructure(); arg.beginStructure();
arg >> rect.X >> rect.Y >> rect.Width >> rect.Height; arg >> rect.X >> rect.Y >> rect.Width >> rect.Height;
@ -45,6 +45,6 @@ const QDBusArgument &operator>>(const QDBusArgument &arg, Rect &rect)
void registerRectMetaType() void registerRectMetaType()
{ {
qRegisterMetaType<Rect>("Rect"); qRegisterMetaType<DockRect>("DockRect");
qDBusRegisterMetaType<Rect>(); qDBusRegisterMetaType<DockRect>();
} }

View File

@ -4,20 +4,20 @@
#include <QRect> #include <QRect>
#include <QDBusMetaType> #include <QDBusMetaType>
struct Rect struct DockRect
{ {
public: public:
Rect(); DockRect();
operator QRect() const; operator QRect() const;
friend QDebug operator<<(QDebug debug, const Rect &rect); friend QDebug operator<<(QDebug debug, const DockRect &rect);
friend const QDBusArgument &operator>>(const QDBusArgument &arg, Rect &rect); friend const QDBusArgument &operator>>(const QDBusArgument &arg, DockRect &rect);
friend QDBusArgument &operator<<(QDBusArgument &arg, const Rect &rect); friend QDBusArgument &operator<<(QDBusArgument &arg, const DockRect &rect);
qint32 X, Y, Width, Height; qint32 X, Y, Width, Height;
}; };
Q_DECLARE_METATYPE(Rect) Q_DECLARE_METATYPE(DockRect)
void registerRectMetaType(); void registerRectMetaType();

View File

@ -53,7 +53,7 @@ void DBusAdaptorDock::setDisplayMode(int value)
{ {
if (displayMode() != value) { if (displayMode() != value) {
parent()->setDisplayMode(value); parent()->setDisplayMode(value);
Q_EMIT DisplayModeChanged(); Q_EMIT DisplayModeChanged(value);
} }
} }
@ -78,8 +78,8 @@ int DBusAdaptorDock::hideMode() const
void DBusAdaptorDock::setHideMode(int value) void DBusAdaptorDock::setHideMode(int value)
{ {
if (hideMode() != value) { if (hideMode() != value) {
parent()->setHideMode(HideMode(value)); parent()->setHideMode(static_cast<HideMode>(value));
Q_EMIT HideModeChanged(); Q_EMIT HideModeChanged(value);
} }
} }
@ -97,7 +97,7 @@ void DBusAdaptorDock::setHideTimeout(uint value)
{ {
if (hideTimeout() != value) { if (hideTimeout() != value) {
parent()->setHideTimeout(value); parent()->setHideTimeout(value);
Q_EMIT HideTimeoutChanged(); Q_EMIT HideTimeoutChanged(value);
} }
} }
@ -110,7 +110,7 @@ void DBusAdaptorDock::setWindowSizeEfficient(uint value)
{ {
if (windowSizeEfficient() != value) { if (windowSizeEfficient() != value) {
parent()->setWindowSizeEfficient(value); parent()->setWindowSizeEfficient(value);
Q_EMIT WindowSizeEfficientChanged(); Q_EMIT WindowSizeEfficientChanged(value);
} }
} }
@ -123,7 +123,7 @@ void DBusAdaptorDock::setWindowSizeFashion(uint value)
{ {
if (windowSizeFashion() != value) { if (windowSizeFashion() != value) {
parent()->setWindowSizeFashion(value); parent()->setWindowSizeFashion(value);
Q_EMIT WindowSizeFashionChanged(); Q_EMIT WindowSizeFashionChanged(value);
} }
} }
@ -146,7 +146,7 @@ void DBusAdaptorDock::setIconSize(uint value)
{ {
if (iconSize() != value) { if (iconSize() != value) {
parent()->setIconSize(value); parent()->setIconSize(value);
Q_EMIT IconSizeChanged(); Q_EMIT IconSizeChanged(value);
} }
} }
@ -159,7 +159,7 @@ void DBusAdaptorDock::setPosition(int value)
{ {
if (position() != value) { if (position() != value) {
parent()->setPosition(value); parent()->setPosition(value);
Q_EMIT PositionChanged(); Q_EMIT PositionChanged(value);
} }
} }
@ -172,7 +172,7 @@ void DBusAdaptorDock::setShowTimeout(uint value)
{ {
if (showTimeout() != value) { if (showTimeout() != value) {
parent()->setShowTimeout(value); parent()->setShowTimeout(value);
Q_EMIT ShowTimeoutChanged(); Q_EMIT ShowTimeoutChanged(value);
} }
} }

View File

@ -34,6 +34,7 @@
#include <QtCore/QString> #include <QtCore/QString>
#include <QtCore/QStringList> #include <QtCore/QStringList>
#include <QtCore/QVariant> #include <QtCore/QVariant>
#include <QDBusObjectPath>
#include <QRect> #include <QRect>
/* /*
@ -196,19 +197,19 @@ Q_SIGNALS: // SIGNALS
void EntryAdded(const QDBusObjectPath &path, int index); void EntryAdded(const QDBusObjectPath &path, int index);
void EntryRemoved(const QString &entryId); void EntryRemoved(const QString &entryId);
void DisplayModeChanged(); void DisplayModeChanged(int value) const;
void DockedAppsChanged(); void DockedAppsChanged(const QStringList &value) const;
void OpacityChanged(); void EntriesChanged(const QList<QDBusObjectPath> &value) const;
void EntriesChanged(); void FrontendWindowRectChanged() const;
void HideModeChanged(); void HideModeChanged(int value) const;
void WindowSizeEfficientChanged(); void HideStateChanged(int value) const;
void WindowSizeFashionChanged(); void HideTimeoutChanged(uint value) const;
void HideStateChanged(); void IconSizeChanged(uint value) const;
void FrontendWindowRectChanged(); void OpacityChanged(double value) const;
void HideTimeoutChanged(); void PositionChanged(int value) const;
void IconSizeChanged(); void ShowTimeoutChanged(uint value) const;
void PositionChanged(); void WindowSizeEfficientChanged(uint value) const;
void ShowTimeoutChanged(); void WindowSizeFashionChanged(uint value) const;
}; };
#endif #endif

View File

@ -792,7 +792,7 @@ bool Dock::isWindowDockOverlapK(WindowInfoBase *info)
return false; return false;
} }
Rect rect = infoK->getGeometry(); DockRect rect = infoK->getGeometry();
bool isActiveWin = infoK->getPlasmaWindow()->IsActive(); bool isActiveWin = infoK->getPlasmaWindow()->IsActive();
QString appId = infoK->getAppId(); QString appId = infoK->getAppId();
if (!isActiveWin) { if (!isActiveWin) {
@ -815,7 +815,7 @@ bool Dock::isWindowDockOverlapK(WindowInfoBase *info)
* @param dockRect * @param dockRect
* @return * @return
*/ */
bool Dock::hasInterSectionK(const Rect &windowRect, QRect dockRect) bool Dock::hasInterSectionK(const DockRect &windowRect, QRect dockRect)
{ {
int position = getPosition(); int position = getPosition();
int ltX = MAX(windowRect.X, dockRect.x()); int ltX = MAX(windowRect.X, dockRect.x());
@ -825,7 +825,7 @@ bool Dock::hasInterSectionK(const Rect &windowRect, QRect dockRect)
if (position == int(PositionMode::Left) || position == int(PositionMode::Right)) { if (position == int(PositionMode::Left) || position == int(PositionMode::Right)) {
return ltX <= rbX && ltY < rbY; return ltX <= rbX && ltY < rbY;
} else if (position == int(PositionMode::TOP) || position == int(PositionMode::Bottom)) { } else if (position == int(PositionMode::Top) || position == int(PositionMode::Bottom)) {
return ltX < rbX && ltY <= rbY; return ltX < rbX && ltY <= rbY;
} else { } else {
return ltX < rbX && ltY < rbY; return ltX < rbX && ltY < rbY;
@ -979,7 +979,7 @@ void Dock::setPropHideState(HideState state)
if (state != hideState) { if (state != hideState) {
hideState = state; hideState = state;
Q_EMIT hideStateChanged(); Q_EMIT hideStateChanged(static_cast<int>(hideState));
} }
} }

View File

@ -26,6 +26,7 @@
#include "docksettings.h" #include "docksettings.h"
#include "entries.h" #include "entries.h"
#include "dbusplasmawindow.h" #include "dbusplasmawindow.h"
#include "dockrect.h"
#include <QStringList> #include <QStringList>
#include <QTimer> #include <QTimer>
@ -149,7 +150,7 @@ Q_SIGNALS:
void serviceRestarted(); void serviceRestarted();
void entryAdded(QString entryObjPath, int32_t index); void entryAdded(QString entryObjPath, int32_t index);
void entryRemoved(QString id); void entryRemoved(QString id);
void hideStateChanged(); void hideStateChanged(int);
void frontendWindowRectChanged(); void frontendWindowRectChanged();
private Q_SLOTS: private Q_SLOTS:
@ -166,7 +167,7 @@ private:
bool isWindowDockOverlapX(XWindow xid); bool isWindowDockOverlapX(XWindow xid);
bool hasInterSectionX(const Geometry &windowRect, QRect dockRect); bool hasInterSectionX(const Geometry &windowRect, QRect dockRect);
bool isWindowDockOverlapK(WindowInfoBase *info); bool isWindowDockOverlapK(WindowInfoBase *info);
bool hasInterSectionK(const Rect &windowRect, QRect dockRect); bool hasInterSectionK(const DockRect &windowRect, QRect dockRect);
Entry *getDockedEntryByDesktopFile(const QString &desktopFile); Entry *getDockedEntryByDesktopFile(const QString &desktopFile);
bool shouldHideOnSmartHideMode(); bool shouldHideOnSmartHideMode();
QVector<XWindow> getActiveWinGroup(XWindow xid); QVector<XWindow> getActiveWinGroup(XWindow xid);

View File

@ -103,7 +103,7 @@ public:
// 显示位置 // 显示位置
enum class PositionMode { enum class PositionMode {
TOP, // 上 Top, // 上
Right, // 右 Right, // 右
Bottom, // 下 Bottom, // 下
Left, // 左 Left, // 左
@ -123,7 +123,7 @@ public:
QString toString() { QString toString() {
switch (modeEnum) { switch (modeEnum) {
case PositionMode::TOP: case PositionMode::Top:
return "top"; return "top";
case PositionMode::Right: case PositionMode::Right:
return "right"; return "right";
@ -136,7 +136,7 @@ public:
PositionMode toEnum() { PositionMode toEnum() {
if (modeStr == "top") if (modeStr == "top")
return PositionMode::TOP; return PositionMode::Top;
if (modeStr == "right") if (modeStr == "right")
return PositionMode::Right; return PositionMode::Right;
if (modeStr == "bottom") if (modeStr == "bottom")

View File

@ -132,7 +132,7 @@ PlasmaWindow *WindowInfoK::getPlasmaWindow()
bool WindowInfoK::updateGeometry() bool WindowInfoK::updateGeometry()
{ {
Rect rect = plasmaWindow->Geometry(); DockRect rect = plasmaWindow->Geometry();
if (geometry == rect) if (geometry == rect)
return false; return false;
@ -180,7 +180,7 @@ void WindowInfoK::updateProcessInfo()
* @brief WindowInfoK::getGeometry * @brief WindowInfoK::getGeometry
* @return * @return
*/ */
Rect WindowInfoK::getGeometry() DockRect WindowInfoK::getGeometry()
{ {
return geometry; return geometry;
} }

View File

@ -64,7 +64,7 @@ public:
void updateInternalId(); void updateInternalId();
void updateCloseable(); void updateCloseable();
void updateProcessInfo(); void updateProcessInfo();
Rect getGeometry(); DockRect getGeometry();
private: private:
bool updateCalled; bool updateCalled;
@ -74,7 +74,7 @@ private:
bool closeable; bool closeable;
bool minimized; bool minimized;
PlasmaWindow *plasmaWindow; PlasmaWindow *plasmaWindow;
Rect geometry; DockRect geometry;
}; };
#endif // WINDOWINFOK_H #endif // WINDOWINFOK_H

View File

@ -26,151 +26,10 @@ qt5_add_dbus_adaptor(ADAPTER_SOURCES
add_definitions(-DUSE_QT) add_definitions(-DUSE_QT)
set(SRCS ${PROJECT_BINARY_DIR}/src/define.h) file(GLOB_RECURSE SRCS "*.h" "*.cpp" "../frameworkdbus/*.h" "../frameworkdbus/*.cpp"
"../lib/*.h" "../lib/*.cpp" "../lib/*.hpp"
set(SRCS "../modules/*.h" "../modules/*.cpp" "../modules/*.hpp"
./applicationhelper.h "../utils.h" "../utils/*.cpp")
./main.cpp
./impl/application_manager.h
./impl/application_manager.cpp
./impl/application.h
./impl/application.cpp
./impl/application_instance.h
./impl/application_instance.cpp
../modules/tools/desktop_deconstruction.hpp
../modules/socket/server.h
../modules/socket/server.cpp
../modules/methods/basic.h
../modules/methods/task.hpp
../modules/methods/instance.hpp
../modules/methods/quit.hpp
../modules/methods/registe.hpp
../lib/desktopinfo.h
../lib/desktopinfo.cpp
../lib/dlocale.h
../lib/dlocale.cpp
../lib/dstring.h
../lib/dstring.cpp
../lib/keyfile.h
../lib/keyfile.cpp
../lib/lang.h
../lib/macro.h
../lib/process.h
../lib/process.cpp
../lib/dfile.h
../lib/dfile.cpp
../lib/basedir.h
../lib/basedir.cpp
../lib/xcbutils.h
../lib/xcbutils.cpp
../lib/applaunchcontext.h
../lib/applaunchcontext.cpp
../lib/meminfo.h
../lib/meminfo.cpp
../lib/gsetting.h
../lib/gsetting.cpp
../utils/settings.h
../utils/settings.cpp
../utils/synmodulebase.h
../utils/synmodule.h
../utils/synconfig.h
../utils/synconfig.cpp
../modules/apps/alrecorder.h
../modules/apps/alrecorder.cpp
../modules/apps/appmanager.h
../modules/apps/appmanager.cpp
../modules/apps/dfwatcher.h
../modules/apps/dfwatcher.cpp
../modules/apps/dbusalrecorderadaptor.h
../modules/apps/dbusalrecorderadaptor.cpp
../modules/launcher/common.h
../modules/launcher/launcher.h
../modules/launcher/launcher.cpp
../modules/launcher/launchermanager.h
../modules/launcher/launchermanager.cpp
../modules/launcher/category.h
../modules/launcher/category.cpp
../modules/launcher/launchersettings.h
../modules/launcher/launchersettings.cpp
../modules/launcher/dbusadaptorlauncher.h
../modules/launcher/dbusadaptorlauncher.cpp
../modules/dock/dock.h
../modules/dock/dock.cpp
../modules/dock/dockmanager.h
../modules/dock/dockmanager.cpp
../modules/dock/windowidentify.h
../modules/dock/windowidentify.cpp
../modules/dock/windowinfobase.h
../modules/dock/windowinfox.h
../modules/dock/windowinfox.cpp
../modules/dock/windowinfok.h
../modules/dock/windowinfok.cpp
../modules/dock/dbushandler.h
../modules/dock/dbushandler.cpp
../modules/dock/docksettings.h
../modules/dock/docksettings.cpp
../modules/dock/common.h
../modules/dock/appinfo.h
../modules/dock/appinfo.cpp
../modules/dock/entry.h
../modules/dock/entry.cpp
../modules/dock/entries.h
../modules/dock/entries.cpp
../modules/dock/appmenu.h
../modules/dock/appmenu.cpp
../modules/dock/processinfo.h
../modules/dock/processinfo.cpp
../modules/dock/windowpatterns.h
../modules/dock/windowpatterns.cpp
../modules/dock/waylandmanager.h
../modules/dock/waylandmanager.cpp
../modules/dock/x11manager.h
../modules/dock/x11manager.cpp
../modules/dock/dbusadaptordock.h
../modules/dock/dbusadaptordock.cpp
../modules/dock/dbusadaptorentry.h
../modules/dock/dbusadaptorentry.cpp
../modules/startmanager/common.h
../modules/startmanager/startmanager.h
../modules/startmanager/startmanager.cpp
../modules/startmanager/startmanagersettings.h
../modules/startmanager/startmanagersettings.cpp
../modules/startmanager/startmanagerdbushandler.h
../modules/startmanager/startmanagerdbushandler.cpp
../frameworkdbus/types/launcheriteminfo.h
../frameworkdbus/types/launcheriteminfo.cpp
../frameworkdbus/types/launcheriteminfolist.h
../frameworkdbus/types/launcheriteminfolist.cpp
../frameworkdbus/types/rect.h
../frameworkdbus/types/rect.cpp
../frameworkdbus/types/unlaunchedappmap.h
../frameworkdbus/types/unlaunchedappmap.cpp
../frameworkdbus/dbuslauncherfront.h
../frameworkdbus/dbuslauncherfront.cpp
../frameworkdbus/dbuslauncher.h
../frameworkdbus/dbuslauncher.cpp
../frameworkdbus/dbuswm.h
../frameworkdbus/dbuswm.cpp
../frameworkdbus/dbuswmswitcher.h
../frameworkdbus/dbuswmswitcher.cpp
../frameworkdbus/dbuskwaylandwindowmanager.h
../frameworkdbus/dbuskwaylandwindowmanager.cpp
../frameworkdbus/dbusplasmawindow.h
../frameworkdbus/dbusplasmawindow.cpp
../frameworkdbus/dbuskwaylandoutput.h
../frameworkdbus/dbuskwaylandoutput.cpp
../frameworkdbus/dbusbamfapplication.h
../frameworkdbus/dbusbamfapplication.cpp
../frameworkdbus/dbusbamfmatcher.h
../frameworkdbus/dbusbamfmatcher.cpp
../frameworkdbus/qtdbusextended/dbusextended.h
../frameworkdbus/qtdbusextended/dbusextendedabstractinterface.h
../frameworkdbus/qtdbusextended/dbusextendedpendingcallwatcher_p.h
../frameworkdbus/qtdbusextended/dbusextendedabstractinterface.cpp
../frameworkdbus/qtdbusextended/dbusextendedpendingcallwatcher.cpp
../frameworkdbus/qtdbusextended/DBusExtended
../frameworkdbus/qtdbusextended/DBusExtendedAbstractInterface
)
add_executable(deepin-application-manager add_executable(deepin-application-manager
${SRCS} ${SRCS}