diff --git a/Telegram/SourceFiles/messenger.cpp b/Telegram/SourceFiles/messenger.cpp index 444e3c34be..2b6113e1d3 100644 --- a/Telegram/SourceFiles/messenger.cpp +++ b/Telegram/SourceFiles/messenger.cpp @@ -585,7 +585,7 @@ void Messenger::startLocalStorage() { if (_mtproto) { _mtproto->requestConfig(); } - qApp->setWindowIcon(Window::CreateIcon()); + Platform::SetApplicationIcon(Window::CreateIcon()); }); }); } diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp index d11b912871..cfe8680daf 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp @@ -52,6 +52,10 @@ bool IsApplicationActive() { return static_cast(QApplication::instance())->activeWindow() != nullptr; } +void SetApplicationIcon(const QIcon &icon) { + qApp->setWindowIcon(icon); +} + QString CurrentExecutablePath(int argc, char *argv[]) { constexpr auto kMaxPath = 1024; char result[kMaxPath] = { 0 }; diff --git a/Telegram/SourceFiles/platform/mac/specific_mac_p.mm b/Telegram/SourceFiles/platform/mac/specific_mac_p.mm index d671775efc..3703900095 100644 --- a/Telegram/SourceFiles/platform/mac/specific_mac_p.mm +++ b/Telegram/SourceFiles/platform/mac/specific_mac_p.mm @@ -33,6 +33,8 @@ std::optional ApplicationIsActive; } // namespace +NSImage *qt_mac_create_nsimage(const QPixmap &pm); + using Platform::Q2NSString; using Platform::NSlang; using Platform::NS2QString; @@ -210,6 +212,17 @@ bool IsApplicationActive() { : (static_cast(QApplication::instance())->activeWindow() != nullptr); } +void SetApplicationIcon(const QIcon &icon) { + NSImage *image = nil; + if (!icon.isNull()) { + auto pixmap = icon.pixmap(1024, 1024); + pixmap.setDevicePixelRatio(cRetinaFactor()); + image = static_cast(qt_mac_create_nsimage(pixmap)); + } + [[NSApplication sharedApplication] setApplicationIconImage:image]; + [image release]; +} + void InitOnTopPanel(QWidget *panel) { Expects(!panel->windowHandle()); diff --git a/Telegram/SourceFiles/platform/platform_specific.h b/Telegram/SourceFiles/platform/platform_specific.h index 03a32b2af8..dfb625a50e 100644 --- a/Telegram/SourceFiles/platform/platform_specific.h +++ b/Telegram/SourceFiles/platform/platform_specific.h @@ -24,6 +24,7 @@ enum class PermissionType { void SetWatchingMediaKeys(bool watching); bool IsApplicationActive(); +void SetApplicationIcon(const QIcon &icon); bool TranslucentWindowsSupported(QPoint globalPosition); void StartTranslucentPaint(QPainter &p, QPaintEvent *e); void InitOnTopPanel(QWidget *panel); diff --git a/Telegram/SourceFiles/platform/win/specific_win.cpp b/Telegram/SourceFiles/platform/win/specific_win.cpp index e4087f1d9d..0e89ede487 100644 --- a/Telegram/SourceFiles/platform/win/specific_win.cpp +++ b/Telegram/SourceFiles/platform/win/specific_win.cpp @@ -336,6 +336,10 @@ bool IsApplicationActive() { return static_cast(QApplication::instance())->activeWindow() != nullptr; } +void SetApplicationIcon(const QIcon &icon) { + qApp->setWindowIcon(icon); +} + QString CurrentExecutablePath(int argc, char *argv[]) { WCHAR result[MAX_PATH + 1] = { 0 }; auto count = GetModuleFileName(nullptr, result, MAX_PATH + 1); diff --git a/Telegram/SourceFiles/window/main_window.cpp b/Telegram/SourceFiles/window/main_window.cpp index e82fb1ecd6..9ce639e82c 100644 --- a/Telegram/SourceFiles/window/main_window.cpp +++ b/Telegram/SourceFiles/window/main_window.cpp @@ -90,16 +90,11 @@ void ConvertIconToBlack(QImage &image) { } QIcon CreateOfficialIcon() { - auto useNoMarginLogo = (cPlatform() == dbipMac); auto image = [&] { if (const auto messenger = Messenger::InstancePointer()) { - return useNoMarginLogo - ? messenger->logoNoMargin() - : messenger->logo(); + return messenger->logo(); } - return useNoMarginLogo - ? LoadLogoNoMargin() - : LoadLogo(); + return LoadLogo(); }(); if (AuthSession::Exists() && Auth().supportMode()) { ConvertIconToBlack(image);