1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-02-05 11:24:15 +00:00

Fix dialogs didn't position on the correct screen which qBittorrent window is on. Closes #1690, #2474, #3538.

This commit is contained in:
Chocobo1 2015-09-25 12:52:39 +08:00
parent 67f44e03a2
commit 7eaa5987c8
2 changed files with 8 additions and 14 deletions

View File

@ -219,21 +219,15 @@ void Utils::Misc::shutdownComputer(const ShutdownDialogAction &action)
}
#ifndef DISABLE_GUI
// Get screen center
QPoint Utils::Misc::screenCenter(QWidget *win)
QPoint Utils::Misc::screenCenter(const QWidget *w)
{
int scrn = 0;
const QWidget *w = win->window();
// Returns the QPoint which the widget will be placed center on screen (where parent resides)
if (w)
scrn = QApplication::desktop()->screenNumber(w);
else if (QApplication::desktop()->isVirtualDesktop())
scrn = QApplication::desktop()->screenNumber(QCursor::pos());
else
scrn = QApplication::desktop()->screenNumber(win);
QRect desk(QApplication::desktop()->availableGeometry(scrn));
return QPoint((desk.width() - win->frameGeometry().width()) / 2, (desk.height() - win->frameGeometry().height()) / 2);
QWidget *parent = w->parentWidget();
QDesktopWidget *desktop = QApplication::desktop();
int scrn = desktop->screenNumber(parent); // fallback to `primaryScreen` when parent is invalid
QRect r = desktop->availableGeometry(scrn);
return QPoint(r.x() + (r.width() - w->frameSize().width()) / 2, r.y() + (r.height() - w->frameSize().height()) / 2);
}
#endif

View File

@ -102,7 +102,7 @@ namespace Utils
void openPath(const QString& absolutePath);
void openFolderSelect(const QString& absolutePath);
QPoint screenCenter(QWidget *win);
QPoint screenCenter(const QWidget *w);
QSize smallIconSize();
QSize largeIconSize();
#endif