mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-19 07:37:11 +02:00
Force separate panel into the screen geometry.
This commit is contained in:
parent
728b1efb9a
commit
fe40464e33
1 changed files with 29 additions and 5 deletions
|
@ -356,11 +356,35 @@ QRect SeparatePanel::innerGeometry() const {
|
|||
|
||||
void SeparatePanel::initGeometry(QSize size) {
|
||||
const auto active = QApplication::activeWindow();
|
||||
const auto center = !active
|
||||
? QGuiApplication::primaryScreen()->geometry().center()
|
||||
: (active->isVisible() && active->isActiveWindow())
|
||||
? active->geometry().center()
|
||||
: active->windowHandle()->screen()->geometry().center();
|
||||
const auto available = !active
|
||||
? QGuiApplication::primaryScreen()->availableGeometry()
|
||||
: active->windowHandle()->screen()->availableGeometry();
|
||||
const auto parentGeometry = (active
|
||||
&& active->isVisible()
|
||||
&& active->isActiveWindow())
|
||||
? active->geometry()
|
||||
: available;
|
||||
|
||||
auto center = parentGeometry.center();
|
||||
if (size.height() > available.height()) {
|
||||
size = QSize(size.width(), available.height());
|
||||
}
|
||||
if (center.x() + size.width() / 2
|
||||
> available.x() + available.width()) {
|
||||
center.setX(
|
||||
available.x() + available.width() - size.width() / 2);
|
||||
}
|
||||
if (center.x() - size.width() / 2 < available.x()) {
|
||||
center.setX(available.x() + size.width() / 2);
|
||||
}
|
||||
if (center.y() + size.height() / 2
|
||||
> available.y() + available.height()) {
|
||||
center.setY(
|
||||
available.y() + available.height() - size.height() / 2);
|
||||
}
|
||||
if (center.y() - size.height() / 2 < available.y()) {
|
||||
center.setY(available.y() + size.height() / 2);
|
||||
}
|
||||
_useTransparency = Ui::Platform::TranslucentWindowsSupported(center);
|
||||
_padding = _useTransparency
|
||||
? st::callShadow.extend
|
||||
|
|
Loading…
Add table
Reference in a new issue