Skip to content

Commit

Permalink
[mac] display icon in notification (#7734)
Browse files Browse the repository at this point in the history
there is 2 icons in notifications, one from the app itself and one set from the notification
the icon application seems not to be set correctly on mac for now
only the windon icon is set in main.cpp with myApp.setWindowIcon
the icon defined in application plist does not seem to be correctly set
...so in this PR we set the notification icon to be the QGIS one, so it looks nicer
  • Loading branch information
3nids committed Aug 28, 2018
1 parent 5c7f13b commit 2810c92
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
4 changes: 3 additions & 1 deletion src/gui/qgsgui.cpp
Expand Up @@ -115,7 +115,9 @@ QgsGui::~QgsGui()
QgsGui::QgsGui()
{
#ifdef Q_OS_MAC
mNative = new QgsMacNative();
QgsMacNative *macNative = new QgsMacNative();
macNative->setIconPath( QgsApplication::iconsPath() + QStringLiteral( "qgis-icon-macos.png" ) );
mNative = macNative;
#elif defined (Q_OS_WIN)
mNative = new QgsWinNative();
#elif defined(Q_OS_LINUX)
Expand Down
3 changes: 3 additions & 0 deletions src/native/mac/qgsmacnative.h
Expand Up @@ -29,6 +29,9 @@ class NATIVE_EXPORT QgsMacNative : public QgsNative
explicit QgsMacNative();
~QgsMacNative() override;

//! reset the application icon used in the notification
void setIconPath( const QString &iconPath = QString() );

virtual const char *currentAppLocalizedName();
void currentAppActivateIgnoringOtherApps() override;
void openFileExplorerAndSelectFile( const QString &path ) override;
Expand Down
11 changes: 10 additions & 1 deletion src/native/mac/qgsmacnative.mm
Expand Up @@ -42,6 +42,7 @@ - ( BOOL )userNotificationCenter:( NSUserNotificationCenter * )center shouldPres
{
public:
QgsUserNotificationCenterDelegate *_qgsUserNotificationCenter;
NSImage *_qgisIcon;
};

QgsMacNative::QgsMacNative()
Expand All @@ -57,6 +58,11 @@ - ( BOOL )userNotificationCenter:( NSUserNotificationCenter * )center shouldPres
delete mQgsUserNotificationCenter;
}

void QgsMacNative::setIconPath( const QString &iconPath )
{
mQgsUserNotificationCenter->_qgisIcon = QtMac::toNSImage( QPixmap( iconPath ) );
}

const char *QgsMacNative::currentAppLocalizedName()
{
return [[[NSRunningApplication currentApplication] localizedName] UTF8String];
Expand Down Expand Up @@ -92,7 +98,10 @@ - ( BOOL )userNotificationCenter:( NSUserNotificationCenter * )center shouldPres
NSImage *image = nil;
if ( settings.image.isNull() )
{
image = [[NSImage imageNamed:@"NSApplicationIcon"] retain];
// image application (qgis.icns) seems not to be set for now, although present in the plist
// whenever fixed, try following line (and remove corresponding code in QgsMacNative::QgsUserNotificationCenter)
// image = [[NSImage imageNamed:@"NSApplicationIcon"] retain]
image = mQgsUserNotificationCenter->_qgisIcon;
}
else
{
Expand Down

0 comments on commit 2810c92

Please sign in to comment.