Merge pull request #3858 from Chocobo1/screen_center

Fix dialogs didn't position on the correct screen
This commit is contained in:
sledgehammer999
2017-05-07 22:17:55 +03:00
committed by GitHub
41 changed files with 139 additions and 360 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