diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index cafb6bf54..dfbd86c73 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -95,6 +95,11 @@ bool DockItemManager::appIsOnDock(const QString &appDesktop) const void DockItemManager::startLoadPlugins() const { + if (!QGSettings::isSchemaInstalled("com.deepin.dde.dock")) { + qWarning("com.deepin.dde.dock is not installed"); + return; + } + QGSettings gsetting("com.deepin.dde.dock", "/com/deepin/dde/dock/"); QTimer::singleShot(gsetting.get("delay-plugins-time").toUInt(), m_pluginsInter, &DockPluginsController::startLoader); diff --git a/frame/item/components/appdragwidget.cpp b/frame/item/components/appdragwidget.cpp index 5c58554ae..6fe5af49a 100644 --- a/frame/item/components/appdragwidget.cpp +++ b/frame/item/components/appdragwidget.cpp @@ -197,7 +197,7 @@ void AppDragWidget::dropEvent(QDropEvent *event) m_followMouseTimer->stop(); m_bDragDrop = false; - if (isRemoveAble()) { + if (isRemoveAble(QCursor::pos())) { if (DWindowManagerHelper::instance()->hasComposite()) { showRemoveAnimation(); } else { @@ -270,19 +270,12 @@ void AppDragWidget::initAnimations() void AppDragWidget::initConfigurations() { - const QString &cschema = "com.deepin.dde.dock.distancemultiple"; - const QString &cpath = "/com/deepin/dde/dock/distancemultiple/"; - - const QByteArray &schema_id { - cschema.toUtf8() - }; - - const QByteArray &path_id { - cpath.toUtf8() - }; - - QGSettings gsetting(schema_id, path_id); - m_distanceMultiple = gsetting.get("distance-multiple").toDouble(); + if (QGSettings::isSchemaInstalled("com.deepin.dde.dock.distancemultiple")) { + QGSettings gsetting("com.deepin.dde.dock.distancemultiple", "/com/deepin/dde/dock/distancemultiple/"); + m_distanceMultiple = gsetting.get("distance-multiple").toDouble(); + } else { + m_distanceMultiple = 1.5; + } } void AppDragWidget::showRemoveAnimation() @@ -312,13 +305,13 @@ void AppDragWidget::onRemoveAnimationStateChanged(QAbstractAnimation::State newS /** * @brief 判断图标拖到一定高度后是否可以移除 - * + * @param curPos 当前鼠标所在位置 * @return true * @return false */ -bool AppDragWidget::isRemoveAble() +bool AppDragWidget::isRemoveAble(const QPoint &curPos) { - const QPoint &p = QCursor::pos(); + const QPoint &p = curPos; switch (m_dockPosition) { case Dock::Position::Left: if ((p.x() - m_dockGeometry.topRight().x()) > (m_dockGeometry.width() * m_distanceMultiple)) { @@ -394,7 +387,7 @@ void AppDragWidget::showRemoveTips() Dock::Position pos = Dock::Position::Bottom; DockPopupWindow *popup = m_popupWindow; - if (isRemoveAble()) { + if (isRemoveAble(QCursor::pos())) { QWidget *lastContent = popup->getContent(); if (lastContent) lastContent->setVisible(false); diff --git a/frame/item/components/appdragwidget.h b/frame/item/components/appdragwidget.h index 556fdb451..e5204f210 100644 --- a/frame/item/components/appdragwidget.h +++ b/frame/item/components/appdragwidget.h @@ -47,7 +47,7 @@ public: void setAppPixmap(const QPixmap &pix); void setDockInfo(Dock::Position dockPosition, const QRect &dockGeometry); void setOriginPos(const QPoint position); - bool isRemoveAble(); + bool isRemoveAble(const QPoint &curPos); signals: void requestRemoveItem();