mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
fix window redius
Change-Id: I0a6492d288830e3331d69ced357677a6f636f8a9
This commit is contained in:
parent
83cb34e880
commit
d17b1661b1
Notes:
Deepin Code Review
2018-01-02 14:13:17 +08:00
Verified+1: Anonymous Coward #1000004 Code-Review+2: 石博文 <sbw@sbw.so> Submitted-by: 石博文 <sbw@sbw.so> Submitted-at: Tue, 02 Jan 2018 14:13:16 +0800 Reviewed-on: https://cr.deepin.io/29723 Project: dde/dde-dock Branch: refs/heads/master
@ -41,6 +41,6 @@ MainWindow *DBusDockAdaptors::parent() const
|
||||
|
||||
QRect DBusDockAdaptors::geometry() const
|
||||
{
|
||||
return parent()->panelGeometry();
|
||||
return parent()->geometry();
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,8 @@ MainPanel::MainPanel(QWidget *parent)
|
||||
m_itemLayout->setSpacing(0);
|
||||
m_itemLayout->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
m_effectWidget->setBlurRectXRadius(0);
|
||||
m_effectWidget->setBlurRectYRadius(0);
|
||||
m_effectWidget->setMaskColor(DBlurEffectWidget::DarkColor);
|
||||
m_effectWidget->setBlendMode(DBlurEffectWidget::BehindWindowBlend);
|
||||
m_effectWidget->setDisabled(true);
|
||||
@ -384,20 +386,15 @@ void MainPanel::updateBlurEffect() const
|
||||
qApp->processEvents();
|
||||
|
||||
if (m_displayMode == Efficient || !m_wmHelper->hasComposite()) {
|
||||
m_effectWidget->setBlurRectXRadius(0);
|
||||
m_effectWidget->setBlurRectYRadius(0);
|
||||
m_effectWidget->move(pos());
|
||||
m_effectWidget->resize(size());
|
||||
} else {
|
||||
const int expandSize = 10;
|
||||
const int expandSize = 5;
|
||||
int width = this->width();
|
||||
int height = this->height();
|
||||
const int x = pos().x();
|
||||
const int y = pos().y();
|
||||
|
||||
m_effectWidget->setBlurRectXRadius(5);
|
||||
m_effectWidget->setBlurRectYRadius(5);
|
||||
|
||||
switch (m_position)
|
||||
{
|
||||
case Top: {
|
||||
|
@ -36,6 +36,7 @@
|
||||
#define str(s) #s
|
||||
#define PANEL_BORDER 0
|
||||
#define PANEL_PADDING 6
|
||||
#define WINDOW_OVERFLOW 5
|
||||
|
||||
DWIDGET_USE_NAMESPACE
|
||||
|
||||
|
@ -152,59 +152,19 @@ DockSettings::DockSettings(QWidget *parent)
|
||||
resetFrontendGeometry();
|
||||
}
|
||||
|
||||
DisplayMode DockSettings::displayMode() const
|
||||
const QSize DockSettings::panelSize() const
|
||||
{
|
||||
return m_displayMode;
|
||||
}
|
||||
switch (m_position)
|
||||
{
|
||||
case Top:
|
||||
case Bottom:
|
||||
return m_mainWindowSize - QSize(0, WINDOW_OVERFLOW);
|
||||
case Left:
|
||||
case Right:
|
||||
return m_mainWindowSize - QSize(WINDOW_OVERFLOW, 0);
|
||||
}
|
||||
|
||||
HideMode DockSettings::hideMode() const
|
||||
{
|
||||
return m_hideMode;
|
||||
}
|
||||
|
||||
Position DockSettings::position() const
|
||||
{
|
||||
return m_position;
|
||||
}
|
||||
|
||||
int DockSettings::screenHeight() const
|
||||
{
|
||||
return m_displayInter->screenHeight();
|
||||
}
|
||||
|
||||
int DockSettings::screenWidth() const
|
||||
{
|
||||
return m_displayInter->screenWidth();
|
||||
}
|
||||
|
||||
int DockSettings::expandTimeout() const
|
||||
{
|
||||
return m_dockInter->showTimeout();
|
||||
}
|
||||
|
||||
int DockSettings::narrowTimeout() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool DockSettings::autoHide() const
|
||||
{
|
||||
return m_autoHide;
|
||||
}
|
||||
|
||||
HideState DockSettings::hideState() const
|
||||
{
|
||||
return m_hideState;
|
||||
}
|
||||
|
||||
const QRect DockSettings::primaryRect() const
|
||||
{
|
||||
return m_primaryRect;
|
||||
}
|
||||
|
||||
const QSize DockSettings::windowSize() const
|
||||
{
|
||||
return m_mainWindowSize;
|
||||
Q_UNREACHABLE();
|
||||
}
|
||||
|
||||
const QRect DockSettings::windowRect(const Position position, const bool hide) const
|
||||
@ -229,13 +189,13 @@ const QRect DockSettings::windowRect(const Position position, const bool hide) c
|
||||
switch (position)
|
||||
{
|
||||
case Top:
|
||||
p = QPoint(offsetX, 0); break;
|
||||
p = QPoint(offsetX, -WINDOW_OVERFLOW); break;
|
||||
case Left:
|
||||
p = QPoint(0, offsetY); break;
|
||||
p = QPoint(-WINDOW_OVERFLOW, offsetY); break;
|
||||
case Right:
|
||||
p = QPoint(primaryRect.width() - size.width(), offsetY); break;
|
||||
p = QPoint(primaryRect.width() - size.width() + WINDOW_OVERFLOW, offsetY); break;
|
||||
case Bottom:
|
||||
p = QPoint(offsetX, primaryRect.height() - size.height()); break;
|
||||
p = QPoint(offsetX, primaryRect.height() - size.height() + WINDOW_OVERFLOW); break;
|
||||
default:Q_UNREACHABLE();
|
||||
}
|
||||
|
||||
@ -526,14 +486,14 @@ void DockSettings::calculateWindowConfig()
|
||||
{
|
||||
case Top:
|
||||
case Bottom:
|
||||
m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER);
|
||||
m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER + WINDOW_OVERFLOW);
|
||||
m_mainWindowSize.setWidth(m_primaryRect.width());
|
||||
break;
|
||||
|
||||
case Left:
|
||||
case Right:
|
||||
m_mainWindowSize.setHeight(m_primaryRect.height());
|
||||
m_mainWindowSize.setWidth(defaultWidth + PANEL_BORDER);
|
||||
m_mainWindowSize.setWidth(defaultWidth + PANEL_BORDER + WINDOW_OVERFLOW);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -558,8 +518,8 @@ void DockSettings::calculateWindowConfig()
|
||||
}
|
||||
}
|
||||
|
||||
const int perfectWidth = visibleItemCount * defaultWidth + PANEL_BORDER * 2 + PANEL_PADDING * 2;
|
||||
const int perfectHeight = visibleItemCount * defaultHeight + PANEL_BORDER * 2 + PANEL_PADDING * 2;
|
||||
const int perfectWidth = visibleItemCount * defaultWidth + PANEL_BORDER * 2 + PANEL_PADDING * 2 + WINDOW_OVERFLOW;
|
||||
const int perfectHeight = visibleItemCount * defaultHeight + PANEL_BORDER * 2 + PANEL_PADDING * 2 + WINDOW_OVERFLOW;
|
||||
const int calcWidth = qMin(m_primaryRect.width() - FASHION_MODE_PADDING * 2, perfectWidth);
|
||||
const int calcHeight = qMin(m_primaryRect.height() - FASHION_MODE_PADDING * 2, perfectHeight);
|
||||
switch (m_position)
|
||||
|
@ -59,22 +59,23 @@ class DockSettings : public QObject
|
||||
public:
|
||||
explicit DockSettings(QWidget *parent = 0);
|
||||
|
||||
DisplayMode displayMode() const;
|
||||
HideMode hideMode() const;
|
||||
HideState hideState() const;
|
||||
Position position() const;
|
||||
int screenHeight() const;
|
||||
int screenWidth() const;
|
||||
int screenRawHeight() const { return m_screenRawHeight; }
|
||||
int screenRawWidth() const { return m_screenRawWidth; }
|
||||
int expandTimeout() const;
|
||||
int narrowTimeout() const;
|
||||
inline DisplayMode displayMode() const { return m_displayMode; }
|
||||
inline HideMode hideMode() const { return m_hideMode; }
|
||||
inline HideState hideState() const { return m_hideState; }
|
||||
inline Position position() const { return m_position; }
|
||||
inline int screenHeight() const { return m_displayInter->screenHeight(); }
|
||||
inline int screenWidth() const { return m_displayInter->screenWidth(); }
|
||||
inline int screenRawHeight() const { return m_screenRawHeight; }
|
||||
inline int screenRawWidth() const { return m_screenRawWidth; }
|
||||
inline int expandTimeout() const { return m_dockInter->showTimeout(); }
|
||||
inline int narrowTimeout() const { return 0; }
|
||||
inline bool autoHide() const { return m_autoHide; }
|
||||
inline const QRect primaryRect() const { return m_primaryRect; }
|
||||
inline const QRect primaryRawRect() const { return m_primaryRawRect; }
|
||||
inline const QRect frontendWindowRect() const { return m_frontendRect; }
|
||||
inline const QSize windowSize() const { return m_mainWindowSize; }
|
||||
|
||||
bool autoHide() const;
|
||||
const QRect primaryRect() const;
|
||||
const QRect primaryRawRect() const { return m_primaryRawRect; }
|
||||
const QRect frontendWindowRect() const { return m_frontendRect; }
|
||||
const QSize windowSize() const;
|
||||
const QSize panelSize() const;
|
||||
const QRect windowRect(const Position position, const bool hide = false) const;
|
||||
|
||||
void showDockSettingsMenu();
|
||||
|
@ -106,7 +106,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
initComponents();
|
||||
initConnections();
|
||||
|
||||
m_mainPanel->setFixedSize(m_settings->windowSize());
|
||||
m_mainPanel->setFixedSize(m_settings->panelSize());
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@ -114,13 +114,6 @@ MainWindow::~MainWindow()
|
||||
delete m_xcbMisc;
|
||||
}
|
||||
|
||||
QRect MainWindow::panelGeometry()
|
||||
{
|
||||
QRect rect = m_mainPanel->geometry();
|
||||
rect.moveTopLeft(m_mainPanel->mapToGlobal(QPoint(0,0)));
|
||||
return rect;
|
||||
}
|
||||
|
||||
void MainWindow::launch()
|
||||
{
|
||||
m_updatePanelVisible = false;
|
||||
@ -353,7 +346,6 @@ void MainWindow::initConnections()
|
||||
const QSize size = m_sizeChangeAni->currentValue().toSize();
|
||||
|
||||
QWidget::setFixedSize(size);
|
||||
m_mainPanel->setFixedSize(size);
|
||||
});
|
||||
|
||||
connect(m_wmHelper, &DWindowManagerHelper::hasCompositeChanged, this, &MainWindow::compositeChanged, Qt::QueuedConnection);
|
||||
@ -436,9 +428,7 @@ void MainWindow::updateGeometry()
|
||||
const Position position = m_settings->position();
|
||||
QSize size = m_settings->windowSize();
|
||||
|
||||
// qDebug() << Q_FUNC_INFO << position << size;
|
||||
|
||||
m_mainPanel->setFixedSize(size);
|
||||
m_mainPanel->setFixedSize(m_settings->panelSize());
|
||||
m_mainPanel->updateDockPosition(position);
|
||||
m_mainPanel->updateDockDisplayMode(m_settings->displayMode());
|
||||
|
||||
@ -465,7 +455,6 @@ void MainWindow::updateGeometry()
|
||||
}
|
||||
|
||||
const QRect windowRect = m_settings->windowRect(position, m_settings->hideState() == Hide);
|
||||
qDebug() << Q_FUNC_INFO << windowRect;
|
||||
|
||||
if (animation)
|
||||
internalAnimationMove(windowRect.x(), windowRect.y());
|
||||
@ -574,8 +563,13 @@ void MainWindow::setStrutPartial()
|
||||
|
||||
void MainWindow::expand()
|
||||
{
|
||||
// qDebug() << "expand";
|
||||
const QPoint finishPos(0, 0);
|
||||
QPoint finishPos(0, 0);
|
||||
switch (m_settings->position())
|
||||
{
|
||||
case Left: finishPos.setX(WINDOW_OVERFLOW); break;
|
||||
case Top: finishPos.setY(WINDOW_OVERFLOW); break;
|
||||
default:;
|
||||
}
|
||||
|
||||
const int epsilon = std::round(devicePixelRatioF()) - 1;
|
||||
const QSize s = size();
|
||||
@ -609,16 +603,14 @@ void MainWindow::expand()
|
||||
|
||||
void MainWindow::narrow(const Position prevPos)
|
||||
{
|
||||
// qDebug() << "narrow" << prevPos;
|
||||
// const QSize size = m_settings->windowSize();
|
||||
const QSize size = m_mainPanel->size();
|
||||
const QSize size = m_settings->panelSize();
|
||||
|
||||
QPoint finishPos(0, 0);
|
||||
switch (prevPos)
|
||||
{
|
||||
case Top: finishPos.setY(-size.height()); break;
|
||||
case Top: finishPos.setY(-size.height() + WINDOW_OVERFLOW); break;
|
||||
case Bottom: finishPos.setY(size.height()); break;
|
||||
case Left: finishPos.setX(-size.width()); break;
|
||||
case Left: finishPos.setX(-size.width() + WINDOW_OVERFLOW); break;
|
||||
case Right: finishPos.setX(size.width()); break;
|
||||
}
|
||||
|
||||
@ -644,25 +636,22 @@ void MainWindow::resetPanelEnvironment(const bool visible)
|
||||
const QRect r(m_settings->windowRect(position));
|
||||
|
||||
m_sizeChangeAni->setEndValue(r.size());
|
||||
m_mainPanel->setFixedSize(r.size());
|
||||
m_mainPanel->setFixedSize(m_settings->panelSize());
|
||||
QWidget::setFixedSize(r.size());
|
||||
m_posChangeAni->setEndValue(r.topLeft());
|
||||
QWidget::move(r.topLeft());
|
||||
|
||||
QPoint finishPos(0, 0);
|
||||
if (!visible)
|
||||
|
||||
switch (position)
|
||||
{
|
||||
switch (position)
|
||||
{
|
||||
case Top: finishPos.setY(-r.height()); break;
|
||||
case Bottom: finishPos.setY(r.height()); break;
|
||||
case Left: finishPos.setX(-r.width()); break;
|
||||
case Right: finishPos.setX(r.width()); break;
|
||||
}
|
||||
case Top: finishPos.setY((visible ? 0 : -r.height()) + WINDOW_OVERFLOW); break;
|
||||
case Bottom: finishPos.setY(visible ? 0 : r.height()); break;
|
||||
case Left: finishPos.setX((visible ? 0 :-r.width()) + WINDOW_OVERFLOW); break;
|
||||
case Right: finishPos.setX(visible ? 0 : r.width()); break;
|
||||
}
|
||||
|
||||
m_mainPanel->move(finishPos);
|
||||
qDebug() << Q_FUNC_INFO << m_mainPanel->isVisible() << m_mainPanel->pos() << finishPos;
|
||||
}
|
||||
|
||||
void MainWindow::updatePanelVisible()
|
||||
@ -702,14 +691,16 @@ void MainWindow::adjustShadowMask()
|
||||
if (m_shadowMaskOptimizeTimer->isActive())
|
||||
return;
|
||||
|
||||
if (m_mainPanel->pos() != QPoint(0, 0) ||
|
||||
if (m_mainPanel->pos().manhattanLength() > WINDOW_OVERFLOW ||
|
||||
m_panelHideAni->state() == QPropertyAnimation::Running ||
|
||||
m_panelShowAni->state() == QPauseAnimation::Running ||
|
||||
!m_wmHelper->hasComposite())
|
||||
{
|
||||
m_platformWindowHandle.setShadowRadius(0);
|
||||
m_platformWindowHandle.setWindowRadius(0);
|
||||
} else {
|
||||
m_platformWindowHandle.setShadowRadius(60);
|
||||
m_platformWindowHandle.setWindowRadius(5);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,6 @@ class MainWindow : public QWidget
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
QRect panelGeometry();
|
||||
|
||||
public slots:
|
||||
void launch();
|
||||
|
Loading…
x
Reference in New Issue
Block a user