Skip to content

Commit

Permalink
fix: Stuck in dbus data acquisition
Browse files Browse the repository at this point in the history
log: as title
  • Loading branch information
tsic404 authored and deepin-bot[bot] committed Sep 2, 2024
1 parent 40f08ae commit 70a2ea3
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions panels/dock/clipboarditem/clipboarditem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

#include <QGuiApplication>
#include <QBuffer>
#include <QDBusServiceWatcher>
#include <QDBusConnectionInterface>

DGUI_USE_NAMESPACE

Expand All @@ -29,17 +31,34 @@ static DDBusSender clipboardDbus()
.interface(clipboardInterface);
}

static QDBusServiceWatcher dbusWatcher(clipboardService, QDBusConnection::sessionBus(),
QDBusServiceWatcher::WatchForOwnerChange);

ClipboardItem::ClipboardItem(QObject *parent)
: DApplet(parent)
, m_visible(true)
, m_clipboardVisible(false)
{
QDBusConnection::sessionBus().connect(clipboardService, clipboardPath, clipboardInterface,
"clipboardVisibleChanged", this, SLOT(onClipboardVisibleChanged(bool)));
QDBusInterface clipboardInter(clipboardService, clipboardPath, clipboardInterface, QDBusConnection::sessionBus());
if (clipboardInter.isValid()) {
m_clipboardVisible = clipboardInter.property("clipboardVisible").toBool();

auto func = [this](){
QDBusInterface clipboardInter(clipboardService, clipboardPath, clipboardInterface, QDBusConnection::sessionBus());
if (clipboardInter.isValid()) {
m_clipboardVisible = clipboardInter.property("clipboardVisible").toBool();
}
};
if (QDBusConnection::sessionBus().interface()->isServiceRegistered(clipboardService)) {
func();
}

connect(&dbusWatcher, &QDBusServiceWatcher::serviceRegistered, this, [this, func](){
func();
});

connect(&dbusWatcher, &QDBusServiceWatcher::serviceUnregistered, this, [this](){
m_clipboardVisible = false;
});
}

void ClipboardItem::toggleClipboard()
Expand Down

0 comments on commit 70a2ea3

Please sign in to comment.