diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index f20eea41f..0c45adc00 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -424,6 +424,12 @@ void DockSettings::primaryScreenChanged() m_screenRawHeight = m_displayInter->screenRawHeight(); m_screenRawWidth = m_displayInter->screenRawWidth(); + //为了防止当后端发送错误值,然后发送正确值时,任务栏没有移动在相应的位置 + //当qt没有获取到屏幕资源时候,move函数会失效。可以直接return + if (m_screenRawHeight == 0 || m_screenRawWidth == 0){ + return; + } + updateForbidPostions(); emit dataChanged(); calculateWindowConfig(); diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 275576764..6a531ae2d 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -613,6 +613,13 @@ void MainWindow::updatePosition() void MainWindow::updateGeometry() { // DockDisplayMode and DockPosition MUST be set before invoke setFixedSize method of MainPanel + + //为了防止当后端发送错误值,然后发送正确值时,任务栏没有移动在相应的位置 + //当qt没有获取到屏幕资源时候,move函数会失效。可以直接return + if(m_settings->primaryRect().width() ==0 || m_settings->primaryRect().height() == 0){ + return; + } + setStrutPartial(); m_mainPanel->setDisplayMode(m_settings->displayMode());