diff --git a/include/wx/gtk/notifmsg.h b/include/wx/gtk/notifmsg.h index 195991e516..bb217d0206 100644 --- a/include/wx/gtk/notifmsg.h +++ b/include/wx/gtk/notifmsg.h @@ -36,10 +36,15 @@ public: virtual bool Show(int timeout = Timeout_Auto); virtual bool Close(); + // Set the name of the icon to use, overriding the default icon determined + // by the flags. Call with empty string to reset custom icon. + bool GTKSetIconName(const wxString& name); + private: void Init() { m_notification = NULL; } NotifyNotification* m_notification; + wxString m_iconName; wxDECLARE_NO_COPY_CLASS(wxNotificationMessage); }; diff --git a/src/gtk/notifmsg.cpp b/src/gtk/notifmsg.cpp index d3b6285925..d50dee2140 100644 --- a/src/gtk/notifmsg.cpp +++ b/src/gtk/notifmsg.cpp @@ -82,6 +82,13 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxLibnotifyModule, wxModule); // wxNotificationMessage implementation // ============================================================================ +bool wxNotificationMessage::GTKSetIconName(const wxString& name) +{ + m_iconName = name; + + return true; +} + bool wxNotificationMessage::Show(int timeout) { if ( !wxLibnotifyModule::Initialize() ) @@ -113,6 +120,15 @@ bool wxNotificationMessage::Show(int timeout) return false; } + // Explicitly specified icon name overrides the implicit one determined by + // the flags. + wxScopedCharBuffer buf; + if ( !m_iconName.empty() ) + { + buf = m_iconName.utf8_str(); + icon = buf; + } + // Create the notification or update an existing one if we had already been // shown before. if ( !m_notification )