mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-02 15:45:21 +00:00
fix: update daemonDockInterface when the dde-daemon dock interface init after dde-dock
当dock比dde-daemon的dockInterface启动更早,dock会delete该interface指针后重新new 但是在menuworker里面,还是使用的未更新的dockInterface对象,即野指针 因此会导致调用接口后崩溃 Log: Update daemonDockInterface when daemon init behind dock Influence: 注销右键点击出现菜单栏 Bug: https://pms.uniontech.com/bug-view-155357.html Change-Id: I666c3e66f3bfbdbd66c230d8d5ea72175b355289
This commit is contained in:
parent
458ade5359
commit
1c57108dc1
@ -196,3 +196,8 @@ void MenuWorker::setAutoHide(const bool autoHide)
|
||||
m_autoHide = autoHide;
|
||||
emit autoHideChanged(m_autoHide);
|
||||
}
|
||||
|
||||
void MenuWorker::onNotifyDaemonInterfaceUpdate(DBusDock *dockInter)
|
||||
{
|
||||
m_dockInter = dockInter;
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ signals:
|
||||
|
||||
public slots:
|
||||
void setAutoHide(const bool autoHide);
|
||||
void onNotifyDaemonInterfaceUpdate(DBusDock *dockInter);
|
||||
|
||||
private:
|
||||
QMenu *createMenu(QMenu *settingsMenu);
|
||||
|
@ -1371,6 +1371,7 @@ void MultiScreenWorker::checkDaemonDockService()
|
||||
FREE_POINT(m_dockInter);
|
||||
|
||||
m_dockInter = new DBusDock(serverName, "/com/deepin/dde/daemon/Dock", QDBusConnection::sessionBus(), this);
|
||||
Q_EMIT notifyDaemonInterfaceUpdate();
|
||||
// connect
|
||||
connectionInit(m_dockInter);
|
||||
|
||||
|
@ -169,6 +169,7 @@ signals:
|
||||
void requestStopHideAni();
|
||||
|
||||
void requestUpdateDockEntry();
|
||||
void notifyDaemonInterfaceUpdate();
|
||||
|
||||
public slots:
|
||||
void onAutoHideChanged(bool autoHide);
|
||||
|
@ -378,6 +378,10 @@ void MainWindow::initConnections()
|
||||
// 响应后端触控屏拖拽任务栏高度长按信号
|
||||
connect(TouchSignalManager::instance(), &TouchSignalManager::middleTouchPress, this, &MainWindow::touchRequestResizeDock);
|
||||
connect(TouchSignalManager::instance(), &TouchSignalManager::touchMove, m_dragWidget, &DragWidget::onTouchMove);
|
||||
|
||||
connect(m_multiScreenWorker, &MultiScreenWorker::notifyDaemonInterfaceUpdate, m_menuWorker, [this]() {
|
||||
m_menuWorker->onNotifyDaemonInterfaceUpdate(m_multiScreenWorker->dockInter());
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user