fix: resize dock and fashion system tray recursively

Change-Id: I988712e6f6081ddecf48207f9ed93096ff5598c2
This commit is contained in:
listenerri 2018-11-12 10:42:07 +08:00
parent 40490788db
commit 738f41aa17
Notes: gerrit 2018-11-12 13:13:02 +08:00
Verified+1: <jenkins@deepin.com>
Verified+1: zhaofangfangdeepin <zhaofangfang@linuxdeepin.com>
Code-Review+2: listenerri <listenerri@gmail.com>
Submitted-by: listenerri <listenerri@gmail.com>
Submitted-at: Mon, 12 Nov 2018 13:13:01 +0800
Reviewed-on: https://cr.deepin.io/39655
Project: dde/dde-dock
Branch: refs/heads/master
3 changed files with 11 additions and 3 deletions

View File

@ -548,7 +548,8 @@ void MainPanel::adjustItemSize()
--extraDecrease; --extraDecrease;
} }
if (FSTrayItem) { // 如果dock的大小已经是最大的则不再调整时尚模式托盘图标的大小,以避免递归调整dock与托盘的大小
if (!DockSettings::Instance().isMaxSize() && FSTrayItem) {
FSTrayItem->setSuggestIconSize(FSTraySuggestIconSize); FSTrayItem->setSuggestIconSize(FSTraySuggestIconSize);
} }

View File

@ -41,6 +41,7 @@ extern const QPoint rawXPosition(const QPoint &scaledPos);
DockSettings::DockSettings(QWidget *parent) DockSettings::DockSettings(QWidget *parent)
: QObject(parent) : QObject(parent)
, m_autoHide(true) , m_autoHide(true)
, m_isMaxSize(false)
, m_opacity(0.4) , m_opacity(0.4)
, m_fashionSystemTraySize(QSize(0, 0)) , m_fashionSystemTraySize(QSize(0, 0))
, m_fashionModeAct(tr("Fashion Mode"), this) , m_fashionModeAct(tr("Fashion Mode"), this)
@ -586,20 +587,24 @@ void DockSettings::calculateWindowConfig()
const int perfectWidth = visibleItemCount * defaultWidth + PANEL_BORDER * 2 + PANEL_PADDING * 2 + PANEL_MARGIN * 2 + m_fashionSystemTraySize.width(); const int perfectWidth = visibleItemCount * defaultWidth + PANEL_BORDER * 2 + PANEL_PADDING * 2 + PANEL_MARGIN * 2 + m_fashionSystemTraySize.width();
const int perfectHeight = visibleItemCount * defaultHeight + PANEL_BORDER * 2 + PANEL_PADDING * 2 + PANEL_MARGIN * 2 + m_fashionSystemTraySize.height(); const int perfectHeight = visibleItemCount * defaultHeight + PANEL_BORDER * 2 + PANEL_PADDING * 2 + PANEL_MARGIN * 2 + m_fashionSystemTraySize.height();
const int calcWidth = qMin(m_primaryRect.width() - FASHION_MODE_PADDING * 2, perfectWidth); const int maxWidth = m_primaryRect.width() - FASHION_MODE_PADDING * 2;
const int calcHeight = qMin(m_primaryRect.height() - FASHION_MODE_PADDING * 2, perfectHeight); const int maxHeight = m_primaryRect.height() - FASHION_MODE_PADDING * 2;
const int calcWidth = qMin(maxWidth, perfectWidth);
const int calcHeight = qMin(maxHeight, perfectHeight);
switch (m_position) switch (m_position)
{ {
case Top: case Top:
case Bottom: case Bottom:
m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER); m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER);
m_mainWindowSize.setWidth(calcWidth); m_mainWindowSize.setWidth(calcWidth);
m_isMaxSize = (calcWidth == maxWidth);
break; break;
case Left: case Left:
case Right: case Right:
m_mainWindowSize.setHeight(calcHeight); m_mainWindowSize.setHeight(calcHeight);
m_mainWindowSize.setWidth(defaultWidth + PANEL_BORDER); m_mainWindowSize.setWidth(defaultWidth + PANEL_BORDER);
m_isMaxSize = (calcHeight == maxHeight);
break; break;
default: default:

View File

@ -72,6 +72,7 @@ public:
inline int expandTimeout() const { return m_dockInter->showTimeout(); } inline int expandTimeout() const { return m_dockInter->showTimeout(); }
inline int narrowTimeout() const { return 100; } inline int narrowTimeout() const { return 100; }
inline bool autoHide() const { return m_autoHide; } inline bool autoHide() const { return m_autoHide; }
inline bool isMaxSize() const { return m_isMaxSize; }
inline const QRect primaryRect() const { return m_primaryRect; } inline const QRect primaryRect() const { return m_primaryRect; }
inline const QRect primaryRawRect() const { return m_primaryRawRect; } inline const QRect primaryRawRect() const { return m_primaryRawRect; }
inline const QRect frontendWindowRect() const { return m_frontendRect; } inline const QRect frontendWindowRect() const { return m_frontendRect; }
@ -124,6 +125,7 @@ private:
private: private:
int m_iconSize; int m_iconSize;
bool m_autoHide; bool m_autoHide;
bool m_isMaxSize;
int m_screenRawHeight; int m_screenRawHeight;
int m_screenRawWidth; int m_screenRawWidth;
double m_opacity; double m_opacity;