File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -566,4 +566,8 @@ QString ScreenDisplayLabel(const QScreen *screen) {
566566 return screen->name ();
567567}
568568
569+ QRect ScreenAvailableGeometry (const QScreen *screen) {
570+ return screen ? screen->availableGeometry () : QRect ();
571+ }
572+
569573} // namespace Platform
Original file line number Diff line number Diff line change @@ -68,4 +68,6 @@ class MainWindow : public Window::MainWindow {
6868
6969[[nodiscard]] QString ScreenDisplayLabel (const QScreen *screen);
7070
71+ [[nodiscard]] QRect ScreenAvailableGeometry (const QScreen *screen);
72+
7173} // namespace Platform
Original file line number Diff line number Diff line change @@ -70,4 +70,6 @@ class MainWindow : public Window::MainWindow {
7070
7171[[nodiscard]] QString ScreenDisplayLabel (const QScreen *screen);
7272
73+ [[nodiscard]] QRect ScreenAvailableGeometry (const QScreen *screen);
74+
7375} // namespace Platform
Original file line number Diff line number Diff line change @@ -335,4 +335,8 @@ QString ScreenDisplayLabel(const QScreen *screen) {
335335 return screen ? screen->name () : QString ();
336336}
337337
338+ QRect ScreenAvailableGeometry (const QScreen *screen) {
339+ return screen ? screen->availableGeometry () : QRect ();
340+ }
341+
338342} // namespace
Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ For license and copyright information please follow this link:
1616#include " window/window_session_controller.h"
1717#include " mainwindow.h"
1818#include " main/main_session.h"
19+ #include " base/algorithm.h"
1920#include " base/crc32hash.h"
2021#include " base/platform/win/base_windows_wrl.h"
2122#include " base/platform/base_platform_info.h"
@@ -845,4 +846,19 @@ QString ScreenDisplayLabel(const QScreen *screen) {
845846 return name;
846847}
847848
849+ QRect ScreenAvailableGeometry (const QScreen *screen) {
850+ if (!screen) {
851+ return QRect ();
852+ }
853+ auto result = screen->availableGeometry ();
854+ const auto geometry = screen->geometry ();
855+ const auto ratio = screen->devicePixelRatio ();
856+ if (ratio > 0 .) {
857+ result.moveTopLeft (geometry.topLeft () + QPoint (
858+ int (base::SafeRound ((result.x () - geometry.x ()) / ratio)),
859+ int (base::SafeRound ((result.y () - geometry.y ()) / ratio))));
860+ }
861+ return result;
862+ }
863+
848864} // namespace Platform
Original file line number Diff line number Diff line change @@ -110,4 +110,6 @@ class MainWindow : public Window::MainWindow {
110110
111111[[nodiscard]] QString ScreenDisplayLabel (const QScreen *screen);
112112
113+ [[nodiscard]] QRect ScreenAvailableGeometry (const QScreen *screen);
114+
113115} // namespace Platform
Original file line number Diff line number Diff line change @@ -73,7 +73,7 @@ using Core::WindowPosition;
7373 // When the last monitor is removed Qt keeps delivering resize events
7474 // while QGuiApplication has no screens at all, so screen() is nullptr.
7575 const auto screen = widget->screen ();
76- return screen ? screen-> availableGeometry ( ) : QRect ();
76+ return screen ? Platform::ScreenAvailableGeometry (screen ) : QRect ();
7777}
7878
7979[[nodiscard]] QPoint ChildSkip () {
Original file line number Diff line number Diff line change @@ -1713,14 +1713,14 @@ QRect NotificationDisplayRect(Window::Controller *controller) {
17131713 }
17141714
17151715 if (screen) {
1716- return screen-> availableGeometry ( );
1716+ return Platform::ScreenAvailableGeometry (screen );
17171717 } else if (controller) {
17181718 return controller->widget ()->desktopRect ();
17191719 }
17201720 // When the last monitor is removed QGuiApplication has no screens at
17211721 // all, so primaryScreen() is nullptr.
17221722 const auto primary = QGuiApplication::primaryScreen ();
1723- return primary ? primary-> availableGeometry ( ) : QRect ();
1723+ return primary ? Platform::ScreenAvailableGeometry (primary ) : QRect ();
17241724}
17251725
17261726} // namespace Notifications
You can’t perform that action at this time.
0 commit comments