From 5e4c288cea4092eeaad6927361d3409f138df09a Mon Sep 17 00:00:00 2001 From: donghualin Date: Mon, 12 Dec 2022 09:52:52 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E4=B8=8B=E5=88=87=E6=8D=A2=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=94=99=E4=B9=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原因:在切换模式的时候,需要重新计算任务栏的大小,但是由于时尚模式和高效模式下的尺寸不一样,所以在计算图标的时候会以切换之前的尺寸为参考来进行计算,导致计算的结果错误 修复:在切换模式的时候,提前设置任务栏的尺寸(上下为高度,左右为宽度),这样在下次计算图标的时候获取到的尺寸始终是以正确的尺寸进行计算,任务栏显示正常 Log: 修复智能隐藏下切换模式显示错乱 Influence: 任务栏设置为智能隐藏,从高效模式切换到时尚模式,观察任务栏显示是否正常 Bug: https://pms.uniontech.com/bug-view-176321.html Change-Id: Ia66cb3e96d4f42c42acc921315e9457d582a82c1 --- frame/util/multiscreenworker.cpp | 2 +- frame/util/multiscreenworker.h | 1 - frame/util/utils.h | 13 ++++ frame/window/components/datetimedisplayer.cpp | 10 --- frame/window/components/datetimedisplayer.h | 1 - frame/window/docktraywindow.cpp | 2 +- frame/window/mainpanelcontrol.cpp | 10 +-- frame/window/mainwindowbase.cpp | 4 +- frame/window/systempluginwindow.cpp | 76 ++++++++++++------- frame/window/systempluginwindow.h | 8 +- frame/window/traymanagerwindow.cpp | 59 +++++++++----- frame/window/traymanagerwindow.h | 3 +- frame/window/windowmanager.cpp | 2 +- interfaces/constants.h | 1 + 14 files changed, 118 insertions(+), 74 deletions(-) diff --git a/frame/util/multiscreenworker.cpp b/frame/util/multiscreenworker.cpp index c86cf5c68..5dc7b38ef 100644 --- a/frame/util/multiscreenworker.cpp +++ b/frame/util/multiscreenworker.cpp @@ -674,7 +674,7 @@ void MultiScreenWorker::resetDockScreen() if (testState(ChangePositionAnimationStart) || testState(HideAnimationStart) || testState(ShowAnimationStart) - || testState(DockIsDraging)) + || Utils::isDraging()) return; DOCK_SCREEN->updateDockedScreen(getValidScreen(position())); diff --git a/frame/util/multiscreenworker.h b/frame/util/multiscreenworker.h index 283cc379f..7f0fcaf27 100644 --- a/frame/util/multiscreenworker.h +++ b/frame/util/multiscreenworker.h @@ -86,7 +86,6 @@ public: MousePress = 0x10, // 当前鼠标是否被按下 TouchPress = 0x20, // 当前触摸屏下是否按下 LauncherDisplay = 0x40, // 启动器是否显示 - DockIsDraging = 0x80, // 任务栏正在拖拽 // 如果要添加新的状态,可以在上面添加 RunState_Mask = 0xffffffff, diff --git a/frame/util/utils.h b/frame/util/utils.h index 57da80219..d758b2b77 100644 --- a/frame/util/utils.h +++ b/frame/util/utils.h @@ -35,6 +35,19 @@ namespace Utils { const bool IS_WAYLAND_DISPLAY = !qgetenv("WAYLAND_DISPLAY").isEmpty(); +inline bool isDraging() +{ + if (!qApp->property("isDraging").isValid()) + return false; + + return qApp->property("isDraging").toBool(); +} + +inline void setIsDraging(bool isDraging) +{ + qApp->setProperty("isDraging", isDraging); +} + /** * @brief SettingsPtr 根据给定信息返回一个QGSettings指针 * @param schema_id The id of the schema diff --git a/frame/window/components/datetimedisplayer.cpp b/frame/window/components/datetimedisplayer.cpp index 13a7c1482..a459ff034 100644 --- a/frame/window/components/datetimedisplayer.cpp +++ b/frame/window/components/datetimedisplayer.cpp @@ -392,16 +392,6 @@ void DateTimeDisplayer::leaveEvent(QEvent *event) m_tipPopupWindow->hide(); } -void DateTimeDisplayer::resizeEvent(QResizeEvent *event) -{ - QWidget::resizeEvent(event); - - int oldSize = m_currentSize; - m_currentSize = (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) ? width() : height(); - if (oldSize != m_currentSize) - Q_EMIT requestUpdate(); -} - void DateTimeDisplayer::updateLastData(const DateTimeInfo &info) { m_lastDateString = info.m_date; diff --git a/frame/window/components/datetimedisplayer.h b/frame/window/components/datetimedisplayer.h index d21ea6cdd..a0e92b12e 100644 --- a/frame/window/components/datetimedisplayer.h +++ b/frame/window/components/datetimedisplayer.h @@ -64,7 +64,6 @@ protected: void paintEvent(QPaintEvent *e) override; void enterEvent(QEvent *event) override; void leaveEvent(QEvent *event) override; - void resizeEvent(QResizeEvent *event) override; private: void updatePolicy(); diff --git a/frame/window/docktraywindow.cpp b/frame/window/docktraywindow.cpp index a70fb1e9d..eadcc93d1 100644 --- a/frame/window/docktraywindow.cpp +++ b/frame/window/docktraywindow.cpp @@ -51,7 +51,7 @@ DockTrayWindow::DockTrayWindow(DockInter *dockInter, QWidget *parent) , m_toolLayout(new QBoxLayout(QBoxLayout::RightToLeft, m_toolWidget)) , m_toolLineLabel(new QLabel(this)) , m_dateTimeWidget(new DateTimeDisplayer(true, this)) - , m_systemPuginWidget(new SystemPluginWindow(this)) + , m_systemPuginWidget(new SystemPluginWindow(dockInter, this)) , m_quickIconWidget(new QuickPluginWindow(this)) , m_trayView(new TrayGridView(this)) , m_model(TrayModel::getDockModel()) diff --git a/frame/window/mainpanelcontrol.cpp b/frame/window/mainpanelcontrol.cpp index fcb206c33..40790035e 100755 --- a/frame/window/mainpanelcontrol.cpp +++ b/frame/window/mainpanelcontrol.cpp @@ -986,13 +986,9 @@ QSize MainPanelControl::suitableSize(const Position &position, int screenSize, d if (ratio <= 0) ratio = qApp->devicePixelRatio(); - int dockSize = ((position == Position::Top || position == Position::Bottom) ? height() : width()); - // 如果实际的尺寸超过了任务栏允许的最大尺寸,此时可能是在发生位置变换,这个时候使用接口获取的尺寸即可 - // 如果任务栏在隐藏状态,那么此时获取到的高度为0,此时从后端获取任务栏的实际高度 - HideState hideState = static_cast(qApp->property(PROP_HIDE_STATE).toInt()); - if (dockSize > DOCK_MAX_SIZE || hideState == HideState::Hide) - dockSize = static_cast((m_displayMode == DisplayMode::Efficient ? m_dockInter->windowSizeEfficient() : m_dockInter->windowSizeFashion()) * qApp->devicePixelRatio()); - + // 如果当前任务栏正在调整大小,就以当前任务栏的实际尺寸作为它的尺寸,否则,就以后端存储的尺寸作为它计算宽度(上下)或高度(左右)的参考 + int dockSize = Utils::isDraging() ? ((position == Position::Top || position == Position::Bottom) ? height() : width()) + : (static_cast((m_displayMode == DisplayMode::Efficient ? m_dockInter->windowSizeEfficient() : m_dockInter->windowSizeFashion()) * qApp->devicePixelRatio())); if (m_displayMode == DisplayMode::Efficient) { // 如果是高效模式 if (position == Position::Top || position == Position::Bottom) diff --git a/frame/window/mainwindowbase.cpp b/frame/window/mainwindowbase.cpp index 6d35ba432..2e8d3d822 100644 --- a/frame/window/mainwindowbase.cpp +++ b/frame/window/mainwindowbase.cpp @@ -129,7 +129,7 @@ void MainWindowBase::initConnection() connect(&m_platformWindowHandle, &DPlatformWindowHandle::windowRadiusChanged, m_shadowMaskOptimizeTimer, static_cast(&QTimer::start)); connect(m_dragWidget, &DragWidget::dragFinished, this, [ = ] { - m_multiScreenWorker->setStates(MultiScreenWorker::DockIsDraging, false); + Utils::setIsDraging(false); }); // -拖拽任务栏改变高度或宽度------------------------------------------------------------------------------- @@ -252,7 +252,7 @@ void MainWindowBase::onMainWindowSizeChanged(QPoint offset) break; } - m_multiScreenWorker->setStates(MultiScreenWorker::DockIsDraging, true); + Utils::setIsDraging(true); setFixedSize(newRect.size()); move(newRect.topLeft()); diff --git a/frame/window/systempluginwindow.cpp b/frame/window/systempluginwindow.cpp index f8d739348..4c19bff53 100644 --- a/frame/window/systempluginwindow.cpp +++ b/frame/window/systempluginwindow.cpp @@ -22,6 +22,7 @@ #include "systemplugincontroller.h" #include "systempluginitem.h" #include "quicksettingcontroller.h" +#include "utils.h" #include #include @@ -35,12 +36,13 @@ #define MINICONSIZE 24 #define ICONMARGIN 8 -SystemPluginWindow::SystemPluginWindow(QWidget *parent) +SystemPluginWindow::SystemPluginWindow(DockInter *dockInter, QWidget *parent) : QWidget(parent) , m_listView(new DListView(this)) , m_displayMode(Dock::DisplayMode::Efficient) , m_position(Dock::Position::Bottom) , m_mainLayout(new QBoxLayout(QBoxLayout::Direction::LeftToRight, this)) + , m_dockInter(dockInter) { initUi(); initConnection(); @@ -53,13 +55,20 @@ SystemPluginWindow::~SystemPluginWindow() void SystemPluginWindow::setDisplayMode(const DisplayMode &displayMode) { m_displayMode = displayMode; - QObjectList childObjects = children(); - for (QObject *childObject : childObjects) { - StretchPluginsItem *item = qobject_cast(childObject); - if (!item) - continue; - - item->setDisplayMode(displayMode); + QList items = stretchItems(); + switch (m_position) { + case Dock::Position::Top: + case Dock::Position::Bottom: { + for (StretchPluginsItem *item : items) + item->setDisplayMode(displayMode); + break; + } + case Dock::Position::Left: + case Dock::Position::Right: { + for (StretchPluginsItem *item : items) + item->setDisplayMode(displayMode); + break; + } } } @@ -94,28 +103,18 @@ QSize SystemPluginWindow::suitableSize() const QSize SystemPluginWindow::suitableSize(const Position &position) const { - QObjectList childs = children(); + QList items = stretchItems(); if (position == Dock::Position::Top || position == Dock::Position::Bottom) { int itemWidth = 0; - for (QObject *childObject : childs) { - StretchPluginsItem *childItem = qobject_cast(childObject); - if (!childItem) - continue; - - itemWidth += childItem->suitableSize(position).width(); - } + for (StretchPluginsItem *item : items) + itemWidth += item->suitableSize(position).width(); return QSize(itemWidth, QWIDGETSIZE_MAX); } int itemHeight = 0; - for (QObject *childObject : childs) { - StretchPluginsItem *item = qobject_cast(childObject); - if (!item) - continue; - + for (StretchPluginsItem *item : items) itemHeight += item->suitableSize(position).height(); - } return QSize(QWIDGETSIZE_MAX, itemHeight); } @@ -170,7 +169,7 @@ StretchPluginsItem *SystemPluginWindow::findPluginItemWidget(PluginsItemInterfac void SystemPluginWindow::pluginAdded(PluginsItemInterface *plugin) { - StretchPluginsItem *item = new StretchPluginsItem(plugin, QuickSettingController::instance()->itemKey(plugin)); + StretchPluginsItem *item = new StretchPluginsItem(m_dockInter, plugin, QuickSettingController::instance()->itemKey(plugin)); item->setDisplayMode(m_displayMode); item->setPosition(m_position); item->installEventFilter(this); @@ -180,6 +179,20 @@ void SystemPluginWindow::pluginAdded(PluginsItemInterface *plugin) Q_EMIT itemChanged(); } +QList SystemPluginWindow::stretchItems() const +{ + QList items; + QObjectList childObjects = children(); + for (QObject *childObject : childObjects) { + StretchPluginsItem *item = qobject_cast(childObject); + if (!item) + continue; + + items << item; + } + return items; +} + void SystemPluginWindow::onPluginItemRemoved(PluginsItemInterface *pluginItem) { StretchPluginsItem *item = findPluginItemWidget(pluginItem); @@ -204,11 +217,12 @@ void SystemPluginWindow::onPluginItemUpdated(PluginsItemInterface *pluginItem) Dock::Position StretchPluginsItem::m_position = Dock::Position::Bottom; -StretchPluginsItem::StretchPluginsItem(PluginsItemInterface * const pluginInter, const QString &itemKey, QWidget *parent) +StretchPluginsItem::StretchPluginsItem(DockInter *dockInter, PluginsItemInterface * const pluginInter, const QString &itemKey, QWidget *parent) : DockItem(parent) , m_pluginInter(pluginInter) , m_itemKey(itemKey) , m_displayMode(Dock::DisplayMode::Efficient) + , m_dockInter(dockInter) { } @@ -278,7 +292,6 @@ QSize StretchPluginsItem::suitableSize(const Position &position) const int textWidth = 0; if (needShowText()) textWidth = QFontMetrics(textFont(position)).boundingRect(m_pluginInter->pluginDisplayName()).width(); - return QSize(qMax(textWidth, iconSize) + (m_displayMode == Dock::DisplayMode::Efficient ? 5 : 10) * 2, -1); } @@ -318,9 +331,20 @@ bool StretchPluginsItem::needShowText() const // 如果是高效模式,则不需要显示下面的文本 if (m_displayMode == Dock::DisplayMode::Efficient) return false; + + // 图标的尺寸 +#define ICONSIZE 20 + // 图标与文本,图标距离上方和文本距离下方的尺寸 +#define SPACEMARGIN 6 + // 文本的高度 +#define TEXTSIZE 14 + // 当前插件父窗口与顶层窗口的上下边距 +#define OUTMARGIN 7 + // 任务栏在上方或者下方显示的时候,根据设计图,只有在当前区域高度大于50的时候才同时显示文本和图标 if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) - return height() >= 50; + return ((Utils::isDraging() ? topLevelWidget()->height() : m_dockInter->windowSizeFashion()) >= + (OUTMARGIN * 2 + SPACEMARGIN * 3 + ICONSIZE + TEXTSIZE)); return true; } diff --git a/frame/window/systempluginwindow.h b/frame/window/systempluginwindow.h index 4e5bdb6d5..e04ecb987 100644 --- a/frame/window/systempluginwindow.h +++ b/frame/window/systempluginwindow.h @@ -23,6 +23,7 @@ #include "constants.h" #include "dockitem.h" +#include "dbusutil.h" #include @@ -39,7 +40,7 @@ class SystemPluginWindow : public QWidget Q_OBJECT public: - explicit SystemPluginWindow(QWidget *parent = nullptr); + explicit SystemPluginWindow(DockInter *dockInter, QWidget *parent = nullptr); ~SystemPluginWindow() override; void setDisplayMode(const Dock::DisplayMode &displayMode); void setPositon(Dock::Position position); @@ -58,6 +59,7 @@ private: void initConnection(); StretchPluginsItem *findPluginItemWidget(PluginsItemInterface *pluginItem); void pluginAdded(PluginsItemInterface *plugin); + QList stretchItems() const; private Q_SLOTS: void onPluginItemRemoved(PluginsItemInterface *pluginItem); @@ -68,6 +70,7 @@ private: Dock::DisplayMode m_displayMode; Dock::Position m_position; QBoxLayout *m_mainLayout; + DockInter *m_dockInter; }; class StretchPluginsItem : public DockItem @@ -75,7 +78,7 @@ class StretchPluginsItem : public DockItem Q_OBJECT public: - StretchPluginsItem(PluginsItemInterface *const pluginInter, const QString &itemKey, QWidget *parent = nullptr); + StretchPluginsItem(DockInter *dockInter, PluginsItemInterface *const pluginInter, const QString &itemKey, QWidget *parent = nullptr); ~StretchPluginsItem() override; void setDisplayMode(const Dock::DisplayMode &displayMode); static void setPosition(Dock::Position position); @@ -108,6 +111,7 @@ private: Dock::DisplayMode m_displayMode; static Dock::Position m_position; QPoint m_mousePressPoint; + DockInter *m_dockInter; }; #endif // SYSTEMPLUGINWINDOW_H diff --git a/frame/window/traymanagerwindow.cpp b/frame/window/traymanagerwindow.cpp index bce900894..05c52d051 100644 --- a/frame/window/traymanagerwindow.cpp +++ b/frame/window/traymanagerwindow.cpp @@ -29,6 +29,7 @@ #include "datetimedisplayer.h" #include "expandiconwidget.h" #include "quickdragcore.h" +#include "utils.h" #include #include @@ -43,6 +44,7 @@ #define CRITLCALHEIGHT 42 #define CONTENTSPACE 7 +#define SINGLEROWSPACE 4 // 高度小于等于这个值的时候,间距最小值 #define MINHIGHT 46 // 最小值与最大值的差值 @@ -53,7 +55,8 @@ TrayManagerWindow::TrayManagerWindow(QWidget *parent) : QWidget(parent) , m_appPluginDatetimeWidget(new QWidget(this)) - , m_systemPluginWidget(new SystemPluginWindow(this)) + , m_dockInter(new DockInter(dockServiceName(), dockServicePath(), QDBusConnection::sessionBus(), this)) + , m_systemPluginWidget(new SystemPluginWindow(m_dockInter, this)) , m_appPluginWidget(new QWidget(m_appPluginDatetimeWidget)) , m_quickIconWidget(new QuickPluginWindow(m_appPluginWidget)) , m_dateTimeWidget(new DateTimeDisplayer(false, m_appPluginDatetimeWidget)) @@ -65,7 +68,6 @@ TrayManagerWindow::TrayManagerWindow(QWidget *parent) , m_position(Dock::Position::Bottom) , m_displayMode(Dock::DisplayMode::Fashion) , m_splitLine(new QLabel(m_appPluginDatetimeWidget)) - , m_dockInter(new DockInter(dockServiceName(), dockServicePath(), QDBusConnection::sessionBus(), this)) , m_singleShow(false) , m_borderRadius(0) { @@ -90,11 +92,33 @@ void TrayManagerWindow::updateBorderRadius(int borderRadius) void TrayManagerWindow::updateLayout() { + if (!isVisible()) + return; + + int dockSize = 0; + if (Utils::isDraging()) { + if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) + dockSize = topLevelWidget()->height(); + else + dockSize = topLevelWidget()->width(); + } else { + dockSize = m_dockInter->windowSizeFashion(); + } + bool lastIsSingle = m_singleShow; - if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) - m_singleShow = (height() <= CRITLCALHEIGHT); - else + updateItemLayout(dockSize); + // 当插件区域从单行变成两行或者两行变成单行的时候,发送该信号,通知外部重新调整区域大小 + if (lastIsSingle != m_singleShow) + Q_EMIT requestUpdate(); +} + +void TrayManagerWindow::updateItemLayout(int dockSize) +{ + if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) { + m_singleShow = (dockSize <= CRITLCALHEIGHT); + } else { m_singleShow = true; + } if (m_singleShow) resetSingleDirection(); @@ -104,10 +128,6 @@ void TrayManagerWindow::updateLayout() resetChildWidgetSize(); // 当尺寸发生变化的时候,通知托盘区域刷新尺寸,让托盘图标始终保持居中显示 Q_EMIT m_delegate->sizeHintChanged(m_model->index(0, 0)); - - // 当插件区域从单行变成两行或者两行变成单行的时候,发送该信号,通知外部重新调整区域大小 - if (lastIsSingle != m_singleShow) - Q_EMIT requestUpdate(); } void TrayManagerWindow::setPositon(Dock::Position position) @@ -136,11 +156,12 @@ void TrayManagerWindow::setPositon(Dock::Position position) void TrayManagerWindow::setDisplayMode(Dock::DisplayMode displayMode) { m_displayMode = displayMode; - // 从时尚模式切换到高效模式的时候,需要重新布局 - onTrayCountChanged(); + m_systemPluginWidget->setDisplayMode(displayMode); // 如果当前模式为高效模式,则设置当前的trayView为其计算位置的参照 - if (displayMode == Dock::DisplayMode::Fashion) + if (displayMode == Dock::DisplayMode::Fashion) { ExpandIconWidget::popupTrayView()->setReferGridView(m_trayView); + updateItemLayout(m_dockInter->windowSizeFashion()); + } } int TrayManagerWindow::appDatetimeSize(const Dock::Position &position) const @@ -285,11 +306,9 @@ void TrayManagerWindow::initConnection() }); connect(m_systemPluginWidget, &SystemPluginWindow::itemChanged, this, [ this ] { - // 当系统插件发生变化的时候,同样需要调整尺寸 - m_systemPluginWidget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) m_systemPluginWidget->setFixedWidth(m_systemPluginWidget->suitableSize().width()); - else + else m_systemPluginWidget->setFixedHeight(m_systemPluginWidget->suitableSize().height()); Q_EMIT requestUpdate(); @@ -335,10 +354,8 @@ void TrayManagerWindow::resetChildWidgetSize() m_dateTimeWidget->setFixedSize(m_dateTimeWidget->suitableSize().width(), trayHeight); // 设置右侧的电源按钮的尺寸 m_systemPluginWidget->setFixedSize(m_systemPluginWidget->suitableSize()); - // 如果顶层窗体的高度为0,则直接让其间距为0,否则就会出现隐藏模式下,有8个像素的高度依然显示 - int space = topLevelWidget()->height() == 0 ? 0 : 4; - m_mainLayout->setContentsMargins(space, space, space ,space); - m_mainLayout->setSpacing(space); + m_mainLayout->setContentsMargins(SINGLEROWSPACE, SINGLEROWSPACE, SINGLEROWSPACE, SINGLEROWSPACE); + m_mainLayout->setSpacing(SINGLEROWSPACE); // 单行显示需要重新设置插件和时间日期的位置,不显示分割线 m_splitLine->setVisible(false); m_appPluginWidget->move(0, 0); @@ -354,7 +371,7 @@ void TrayManagerWindow::resetChildWidgetSize() int dateTimeHeight = m_appPluginDatetimeWidget->height() - - m.top() - m.bottom() - trayHeight; m_dateTimeWidget->setFixedSize(dateTimeWidth, dateTimeHeight); m_systemPluginWidget->setFixedSize(m_systemPluginWidget->suitableSize()); - int contentSpace = qMin(MAXDIFF, qMax(height() - MINHIGHT, 0)) + MINSPACE; + int contentSpace = qMin(MAXDIFF, qMax(((Utils::isDraging() ? height() : (int)m_dockInter->windowSizeFashion()) - MINHIGHT), 0)) + MINSPACE; m_mainLayout->setContentsMargins(contentSpace, contentSpace, contentSpace, contentSpace); m_mainLayout->setSpacing(contentSpace); @@ -391,7 +408,7 @@ void TrayManagerWindow::resetChildWidgetSize() m_appPluginWidget->setFixedSize(sizeWidth, trayHeight + quickAreaHeight); m_systemPluginWidget->setFixedSize(m_systemPluginWidget->suitableSize()); - int contentSpace = (qMin(MAXDIFF, qMax(width() - MINHIGHT, 0)) + MINSPACE); + int contentSpace = (qMin(MAXDIFF, qMax((Utils::isDraging() ? width() : (int)m_dockInter->windowSizeFashion()) - MINHIGHT, 0)) + MINSPACE); m_mainLayout->setContentsMargins(contentSpace, contentSpace, contentSpace, contentSpace); m_mainLayout->setSpacing(contentSpace); diff --git a/frame/window/traymanagerwindow.h b/frame/window/traymanagerwindow.h index 9f49601f2..7889a91b8 100644 --- a/frame/window/traymanagerwindow.h +++ b/frame/window/traymanagerwindow.h @@ -83,12 +83,14 @@ private: int appDatetimeSize(const Dock::Position &position) const; QPainterPath roundedPaths(); + void updateItemLayout(int dockSize); private Q_SLOTS: void onTrayCountChanged(); private: QWidget *m_appPluginDatetimeWidget; + DockInter *m_dockInter; SystemPluginWindow *m_systemPluginWidget; QWidget *m_appPluginWidget; QuickPluginWindow *m_quickIconWidget; @@ -101,7 +103,6 @@ private: Dock::Position m_position; Dock::DisplayMode m_displayMode; QLabel *m_splitLine; - DockInter *m_dockInter; bool m_singleShow; // 用于记录当前日期时间和插件区域是显示一行还是显示多行 int m_borderRadius; // 圆角的值 }; diff --git a/frame/window/windowmanager.cpp b/frame/window/windowmanager.cpp index f65cd4b81..71f5480d6 100644 --- a/frame/window/windowmanager.cpp +++ b/frame/window/windowmanager.cpp @@ -170,7 +170,7 @@ void WindowManager::resizeDock(int offset, bool dragging) if (!screen) return; - m_multiScreenWorker->setStates(MultiScreenWorker::DockIsDraging, dragging); + Utils::setIsDraging(dragging); int dockSize = qBound(DOCK_MIN_SIZE, offset, DOCK_MAX_SIZE); for (MainWindowBase *mainWindow : m_topWindows) { diff --git a/interfaces/constants.h b/interfaces/constants.h index 9def9a1e5..bba5352ad 100644 --- a/interfaces/constants.h +++ b/interfaces/constants.h @@ -30,6 +30,7 @@ namespace Dock { #define DOCK_PLUGIN_API_VERSION "2.0.0" #define PROP_DISPLAY_MODE "DisplayMode" +#define PROP_DOCK_DRAGING "isDraging" #define PLUGIN_BACKGROUND_MAX_SIZE 40 #define PLUGIN_BACKGROUND_MIN_SIZE 20