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;
}
if (FSTrayItem) {
// 如果dock的大小已经是最大的则不再调整时尚模式托盘图标的大小,以避免递归调整dock与托盘的大小
if (!DockSettings::Instance().isMaxSize() && FSTrayItem) {
FSTrayItem->setSuggestIconSize(FSTraySuggestIconSize);
}

View File

@ -41,6 +41,7 @@ extern const QPoint rawXPosition(const QPoint &scaledPos);
DockSettings::DockSettings(QWidget *parent)
: QObject(parent)
, m_autoHide(true)
, m_isMaxSize(false)
, m_opacity(0.4)
, m_fashionSystemTraySize(QSize(0, 0))
, 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 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 calcHeight = qMin(m_primaryRect.height() - FASHION_MODE_PADDING * 2, perfectHeight);
const int maxWidth = m_primaryRect.width() - FASHION_MODE_PADDING * 2;
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)
{
case Top:
case Bottom:
m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER);
m_mainWindowSize.setWidth(calcWidth);
m_isMaxSize = (calcWidth == maxWidth);
break;
case Left:
case Right:
m_mainWindowSize.setHeight(calcHeight);
m_mainWindowSize.setWidth(defaultWidth + PANEL_BORDER);
m_isMaxSize = (calcHeight == maxHeight);
break;
default:

View File

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