fix: 设置时间字体陷入死循环

根据bug日志可以看出,任务栏在设置字体的时候陷入了死循环。增加判断,如果字体的大小出现了异常(<=1),则退出循环。
这个问题很难复现,此处修改不一定修复了bug,但起码能规避死循环的问题。

Log: 修复设置时间字体异常的问题
Bug: https://pms.uniontech.com/bug-view-125007.html
Influence: 没有实际功能性影响,只是规避可能出现卡死的风险。
Change-Id: I14fa6ce8cd70d52bc6b54b7461798c10ed48667c
(cherry picked from commit 4939a61c1eb9618e5430d46d83785f656501288f)
This commit is contained in:
yinjie 2022-05-07 09:32:11 +08:00 committed by wubw
parent e16944a99f
commit bf490aeda3

View File

@ -152,7 +152,7 @@ QSize DatetimeWidget::curTimeSize() const
dateSize.setWidth(maxWidth);
if (position == Dock::Bottom || position == Dock::Top) {
while (QFontMetrics(m_timeFont).boundingRect(timeString).height() + QFontMetrics(m_dateFont).boundingRect(dateString).height() > height()) {
while (QFontMetrics(m_timeFont).boundingRect(timeString).height() + QFontMetrics(m_dateFont).boundingRect(dateString).height() > height() && m_timeFont.pixelSize() > 1) {
m_timeFont.setPixelSize(m_timeFont.pixelSize() - 1);
maxWidth = std::max(QFontMetrics(m_timeFont).boundingRect(timeString).size().width(), QFontMetrics(m_timeFont).horizontalAdvance(timeString));
timeSize.setWidth(maxWidth);
@ -164,7 +164,7 @@ QSize DatetimeWidget::curTimeSize() const
}
return QSize(std::max(timeSize.width(), dateSize.width()), timeSize.height() + dateSize.height());
} else {
while (std::max(QFontMetrics(m_timeFont).boundingRect(timeString).size().width(), QFontMetrics(m_dateFont).boundingRect(dateString).size().width()) > (width() - 4)) {
while (std::max(QFontMetrics(m_timeFont).boundingRect(timeString).size().width(), QFontMetrics(m_dateFont).boundingRect(dateString).size().width()) > (width() - 4) && m_timeFont.pixelSize() > 1) {
m_timeFont.setPixelSize(m_timeFont.pixelSize() - 1);
if (m_24HourFormat) {
timeSize.setHeight(QFontMetrics(m_timeFont).boundingRect(timeString).size().height());