diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index b5ff9ff79..bf0df07ec 100644 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -48,10 +48,14 @@ MainPanelControl::MainPanelControl(QWidget *parent) , m_position(Qt::TopEdge) , m_placeholderItem(nullptr) , m_appDragWidget(nullptr) + , m_dislayMode(Efficient) { init(); updateMainPanelLayout(); + updateDisplayMode(); setAcceptDrops(true); + + connect(this, SIGNAL(displayModeChanged()), this, SLOT(onDisplayModeChanged())); } MainPanelControl::~MainPanelControl() @@ -84,15 +88,12 @@ void MainPanelControl::init() m_pluginLayout->setSpacing(0); } -void MainPanelControl::updateDisplayMode(DisplayMode m_displayMode) +void MainPanelControl::setDisplayMode(const DisplayMode mode) { - DAnchorsBase::clearAnchors(m_appAreaSonWidget); - DAnchors anchors(m_appAreaSonWidget); - if (m_displayMode == Dock::DisplayMode::Fashion) { - anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter); - } else { - anchors.setAnchor(Qt::AnchorLeft, m_appAreaWidget, Qt::AnchorLeft); - } + if (mode == m_dislayMode) + return; + m_dislayMode = mode; + emit displayModeChanged(); } void MainPanelControl::updateMainPanelLayout() @@ -573,3 +574,20 @@ DockItem *MainPanelControl::dropTargetItem(DockItem *sourceItem, QPoint point) } return targetItem; } + + +void MainPanelControl::updateDisplayMode() +{ + DAnchorsBase::clearAnchors(m_appAreaSonWidget); + DAnchors anchors(m_appAreaSonWidget); + if (m_dislayMode == Dock::DisplayMode::Fashion) { + anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter); + } else { + anchors.setAnchor(Qt::AnchorLeft, m_appAreaWidget, Qt::AnchorLeft); + } +} + +void MainPanelControl::onDisplayModeChanged() +{ + updateDisplayMode(); +} diff --git a/frame/panel/mainpanelcontrol.h b/frame/panel/mainpanelcontrol.h index 1c86eec8b..98a0436dc 100644 --- a/frame/panel/mainpanelcontrol.h +++ b/frame/panel/mainpanelcontrol.h @@ -54,7 +54,7 @@ public: void removeTrayAreaItem(QWidget *wdg); void removePluginAreaItem(QWidget *wdg); void setPositonValue(const Qt::Edge val); - void updateDisplayMode(DisplayMode m_displayMode); + void setDisplayMode(const DisplayMode m_displayMode); MainPanelDelegate *delegate() const; void setDelegate(MainPanelDelegate *delegate); @@ -62,6 +62,7 @@ public: signals: void itemMoved(DockItem *sourceItem, DockItem *targetItem); void itemAdded(const QString &appDesktop, int idx); + void displayModeChanged(); private: void resizeEvent(QResizeEvent *event) override; @@ -69,6 +70,7 @@ private: void init(); void updateAppAreaSonWidgetSize(); void updateMainPanelLayout(); + void updateDisplayMode(); void dragMoveEvent(QDragMoveEvent *e) override; void dragEnterEvent(QDragEnterEvent *e) override; @@ -84,6 +86,7 @@ private: public slots: void insertItem(const int index, DockItem *item); void removeItem(DockItem *item); + void onDisplayModeChanged(); private: QBoxLayout *m_mainPanelLayout; @@ -101,6 +104,7 @@ private: MainPanelDelegate *m_delegate; QString m_draggingMimeKey; AppDragWidget *m_appDragWidget; + DisplayMode m_dislayMode; }; #endif // MAINPANELCONTROL_H diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index 276bd8de6..6b5ff3676 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -34,6 +34,7 @@ #define ICON_SIZE_MEDIUM 36 #define ICON_SIZE_SMALL 30 #define FASHION_MODE_PADDING 30 +#define MAINWINDOW_MARGIN 10 DWIDGET_USE_NAMESPACE @@ -583,13 +584,13 @@ void DockSettings::calculateWindowConfig() case Top: case Bottom: { m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER); - m_mainWindowSize.setWidth(primaryRect.width() - 20); + m_mainWindowSize.setWidth(primaryRect.width() - MAINWINDOW_MARGIN * 2); m_isMaxSize = (calcWidth == maxWidth); break; } case Left: case Right: { - m_mainWindowSize.setHeight(primaryRect.height() - 20); + m_mainWindowSize.setHeight(primaryRect.height() - MAINWINDOW_MARGIN * 2); m_mainWindowSize.setWidth(defaultWidth + PANEL_BORDER); m_isMaxSize = (calcHeight == maxHeight); break; diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 0df4750bd..e0e5d1de5 100644 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -72,6 +72,8 @@ MainWindow::MainWindow(QWidget *parent) m_launched(false), m_updatePanelVisible(false), + m_mainPanel(new MainPanelControl(this)), + m_platformWindowHandle(this), m_wmHelper(DWindowManagerHelper::instance()), @@ -105,8 +107,7 @@ MainWindow::MainWindow(QWidget *parent) m_settings = &DockSettings::Instance(); m_xcbMisc->set_window_type(winId(), XcbMisc::Dock); m_size = m_settings->m_mainWindowSize; - m_mainPanel = new MainPanelControl(this); - m_mainPanel->updateDisplayMode(m_settings->displayMode()); + m_mainPanel->setDisplayMode(m_settings->displayMode()); initSNIHost(); initComponents(); initConnections(); @@ -935,5 +936,5 @@ void MainWindow::resizeMainPanelWindow() void MainWindow::updateDisplayMode() { - m_mainPanel->updateDisplayMode(m_settings->displayMode()); + m_mainPanel->setDisplayMode(m_settings->displayMode()); }