fix(src/windows): 修改维哈柯语言下开始菜单的窗口位置

This commit is contained in:
youdiansaodongxi 2024-08-21 15:35:17 +08:00
parent 1f835391a7
commit a572701984
2 changed files with 16 additions and 3 deletions

View File

@ -41,6 +41,7 @@ Item {
Layout.fillWidth: true
Layout.fillHeight: true
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
elide: Text.ElideRight
text: root.title === "" ? header.title : root.title
}

View File

@ -233,6 +233,7 @@ void MenuWindow::init()
});
setScreen(QGuiApplication::primaryScreen());
connect(screen(), &QScreen::geometryChanged, this, &MenuWindow::updateGeometry);
connect(qGuiApp, &QGuiApplication::layoutDirectionChanged, this, &MenuWindow::updateGeometry);
setTitle(QCoreApplication::applicationName());
setResizeMode(SizeRootObjectToView);
@ -423,6 +424,7 @@ void MenuWindow::updateCurrentScreenGeometry()
int height = MenuSetting::instance()->get(MENU_HEIGHT).toInt();
int margin = MenuSetting::instance()->get(MENU_MARGIN).toInt();
UkuiQuick::WindowProxy::SlideFromEdge slideFromEdge;
bool isMirrored = qGuiApp->layoutDirection() == Qt::LayoutDirection::RightToLeft;
//上: 1, 下: 0, 左: 2, 右: 3
switch (m_panelPos) {
@ -431,7 +433,11 @@ void MenuWindow::updateCurrentScreenGeometry()
fullRect.adjust(0, 0, 0, -m_panelSize);
QSize normalSize(qMin<int>(fullRect.width() - margin*2, width), qMin<int>(fullRect.height() - margin*2, height));
normalMaskRect.setTopLeft({margin, fullRect.height() - normalSize.height() - margin});
if (isMirrored) {
normalMaskRect.setTopLeft({fullRect.width() - margin - width, fullRect.height() - normalSize.height() - margin});
} else {
normalMaskRect.setTopLeft({margin, fullRect.height() - normalSize.height() - margin});
}
normalMaskRect.setSize(normalSize);
slideFromEdge = UkuiQuick::WindowProxy::BottomEdge;
break;
@ -439,8 +445,13 @@ void MenuWindow::updateCurrentScreenGeometry()
case 1: {
fullRect.adjust(0, m_panelSize, 0, 0);
normalMaskRect.setTopLeft({margin, margin});
normalMaskRect.setSize({qMin<int>(fullRect.width() - margin*2, width), qMin<int>(fullRect.height() - margin*2, height)});
QSize normalSize(qMin<int>(fullRect.width() - margin*2, width), qMin<int>(fullRect.height() - margin*2, height));
if (isMirrored) {
normalMaskRect.setTopLeft({fullRect.width() - margin - width, margin});
} else {
normalMaskRect.setTopLeft({margin, margin});
}
normalMaskRect.setSize(normalSize);
slideFromEdge = UkuiQuick::WindowProxy::TopEdge;
break;
}
@ -490,6 +501,7 @@ void MenuWindow::activeMenuWindow(bool active)
}
this->setScreen(UkuiQuick::WindowProxy::currentScreen());
connect(screen(), &QScreen::geometryChanged, this, &MenuWindow::updateGeometry);
connect(qGuiApp, &QGuiApplication::layoutDirectionChanged, this, &MenuWindow::updateGeometry);
updateGeometry();
}
}