diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index fed600577..5061493e8 100644 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -21,6 +21,7 @@ #include "mainpanelcontrol.h" #include "../item/dockitem.h" +#include "util/docksettings.h" #include @@ -76,10 +77,17 @@ void MainPanelControl::init() m_appAreaSonLayout->setSpacing(0); m_trayAreaLayout->setSpacing(0); m_pluginLayout->setSpacing(0); +} +void MainPanelControl::updateDisplayMode(DisplayMode m_displayMode) +{ + DAnchorsBase::clearAnchors(m_appAreaSonWidget); DAnchors anchors(m_appAreaSonWidget); - anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter); - anchors.setAnchor(Qt::AnchorVerticalCenter, this, Qt::AnchorVerticalCenter); + if (m_displayMode == Dock::DisplayMode::Fashion) { + anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter); + } else { + anchors.setAnchor(Qt::AnchorLeft, m_appAreaWidget, Qt::AnchorLeft); + } } void MainPanelControl::updateMainPanelLayout() @@ -169,7 +177,7 @@ void MainPanelControl::updateAppAreaSonWidgetSize() QWidget *w = m_appAreaSonLayout->itemAt(i)->widget(); if (w) { if ((m_position == Qt::TopEdge) || (m_position == Qt::BottomEdge)) { - w->setFixedSize(height(), height()); + w->setMaximumSize(height(), height()); } else { w->setMaximumSize(width(), width()); } @@ -190,7 +198,6 @@ void MainPanelControl::updateAppAreaSonWidgetSize() if ((m_position == Qt::TopEdge) || (m_position == Qt::BottomEdge)) { m_appAreaSonWidget->setMaximumWidth(qMin((m_appAreaWidget->geometry().right() - width() / 2) * 2, m_appAreaWidget->width())); } else { - m_appAreaSonWidget->setMaximumWidth(QWIDGETSIZE_MAX); m_appAreaSonWidget->setMaximumHeight(qMin((m_appAreaWidget->geometry().bottom() - height() / 2) * 2, m_appAreaWidget->height())); } diff --git a/frame/panel/mainpanelcontrol.h b/frame/panel/mainpanelcontrol.h index 3fc077524..049229f77 100644 --- a/frame/panel/mainpanelcontrol.h +++ b/frame/panel/mainpanelcontrol.h @@ -22,9 +22,13 @@ #ifndef MAINPANELCONTROL_H #define MAINPANELCONTROL_H +#include "constants.h" + #include #include +using namespace Dock; + class DockItem; class MainPanelControl : public QWidget { @@ -42,6 +46,7 @@ public: void removeTrayAreaItem(QWidget *wdg); void removePluginAreaItem(QWidget *wdg); void setPositonValue(const Qt::Edge val); + void updateDisplayMode(DisplayMode m_displayMode); signals: void itemMoved(DockItem *sourceItem, DockItem *targetItem); diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 8af34fba3..5c6d2bc9d 100644 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -72,8 +72,6 @@ MainWindow::MainWindow(QWidget *parent) m_launched(false), m_updatePanelVisible(false), - m_mainPanel(new MainPanelControl(this)), - m_platformWindowHandle(this), m_wmHelper(DWindowManagerHelper::instance()), @@ -107,6 +105,8 @@ 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()); initSNIHost(); initComponents(); initConnections(); @@ -386,7 +386,7 @@ void MainWindow::initConnections() connect(m_settings, &DockSettings::windowVisibleChanged, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection); connect(m_settings, &DockSettings::displayModeChanegd, m_positionUpdateTimer, static_cast(&QTimer::start)); connect(&DockSettings::Instance(), &DockSettings::opacityChanged, this, &MainWindow::setMaskAlpha); - + connect(m_settings, &DockSettings::displayModeChanegd, this, &MainWindow::updateDisplayMode, Qt::QueuedConnection); // connect(m_mainPanel, &MainPanelControl::requestRefershWindowVisible, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection); // connect(m_mainPanel, &MainPanelControl::requestWindowAutoHide, m_settings, &DockSettings::setAutoHide); // connect(m_mainPanel, &MainPanelControl::geometryChanged, this, &MainWindow::panelGeometryChanged); @@ -662,6 +662,9 @@ void MainWindow::expand() break; } + if (finishPos == pos()) + return; + m_panelShowAni->setStartValue(startPos); m_panelShowAni->setEndValue(finishPos); m_panelShowAni->start(); @@ -790,9 +793,6 @@ void MainWindow::positionCheck() if (QPoint(pos() - scaledFrontPos).manhattanLength() < 2) return; - qWarning() << "Dock position may error!!!!!"; - qDebug() << pos() << m_settings->frontendWindowRect() << m_settings->windowRect(m_settings->position(), false); - // this may cause some position error and animation caton //internalMove(); } @@ -843,10 +843,10 @@ void MainWindow::mouseMoveEvent(QMouseEvent *event) int ydiff = QCursor::pos().y() - m_resizePoint.y(); if (Dock::Top == m_settings->position()) { - m_settings->m_mainWindowSize.setHeight(qBound(MAINWINDOW_MIN_SIZE,m_size.height() + ydiff, MAINWINDOW_MAX_SIZE)); + m_settings->m_mainWindowSize.setHeight(qBound(MAINWINDOW_MIN_SIZE, m_size.height() + ydiff, MAINWINDOW_MAX_SIZE)); m_settings->m_mainWindowSize.setWidth(width()); } else if (Dock::Bottom == m_settings->position()) { - m_settings->m_mainWindowSize.setHeight(qBound(MAINWINDOW_MIN_SIZE,m_size.height() - ydiff, MAINWINDOW_MAX_SIZE)); + m_settings->m_mainWindowSize.setHeight(qBound(MAINWINDOW_MIN_SIZE, m_size.height() - ydiff, MAINWINDOW_MAX_SIZE)); m_settings->m_mainWindowSize.setWidth(width()); } else if (Dock::Left == m_settings->position()) { } else { @@ -911,3 +911,8 @@ void MainWindow::resizeMainPanelWindow() default: break; } } + +void MainWindow::updateDisplayMode() +{ + m_mainPanel->updateDisplayMode(m_settings->displayMode()); +} diff --git a/frame/window/mainwindow.h b/frame/window/mainwindow.h index ad2753dae..da99d23f8 100644 --- a/frame/window/mainwindow.h +++ b/frame/window/mainwindow.h @@ -94,6 +94,7 @@ private slots: void compositeChanged(); void internalMove() { internalMove(m_posChangeAni->currentValue().toPoint()); } void internalMove(const QPoint &p); + void updateDisplayMode(); void expand(); void narrow(const Position prevPos);