Browse Source

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

adaptive-webui-19844
Chocobo1 9 years ago
parent
commit
7eaa5987c8
  1. 20
      src/base/utils/misc.cpp
  2. 2
      src/base/utils/misc.h

20
src/base/utils/misc.cpp

@ -219,21 +219,15 @@ void Utils::Misc::shutdownComputer(const ShutdownDialogAction &action) @@ -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

2
src/base/utils/misc.h

@ -102,7 +102,7 @@ namespace Utils @@ -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

Loading…
Cancel
Save