No longer assume status bar height, calculate, fixing notch borking

Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
This commit is contained in:
Claudio Cambra 2022-02-03 16:37:17 +01:00
Родитель be21f036ff
Коммит 655a2e1c39
3 изменённых файлов: 9 добавлений и 2 удалений

Просмотреть файл

@ -389,8 +389,9 @@ QRect Systray::taskbarGeometry() const
return tbRect;
#elif defined(Q_OS_MACOS)
// Finder bar is always 22px height on macOS (when treating as effective pixels)
auto screenWidth = currentScreenRect().width();
return {0, 0, screenWidth, 22};
const auto screenWidth = currentScreenRect().width();
const auto statusBarHeight = static_cast<int>(OCC::statusBarThickness());
return {0, 0, screenWidth, statusBarHeight};
#else
if (taskbarOrientation() == TaskBarPosition::Bottom || taskbarOrientation() == TaskBarPosition::Top) {
auto screenWidth = currentScreenRect().width();

Просмотреть файл

@ -42,6 +42,7 @@ public:
bool canOsXSendUserNotification();
void sendOsXUserNotification(const QString &title, const QString &message);
void setTrayWindowLevelAndVisibleOnAllSpaces(QWindow *window);
double statusBarThickness();
#endif
/**

Просмотреть файл

@ -17,6 +17,11 @@
namespace OCC {
double statusBarThickness()
{
return [NSStatusBar systemStatusBar].thickness;
}
bool canOsXSendUserNotification()
{
return NSClassFromString(@"NSUserNotificationCenter") != nil;