From c589dc030dd1f0b9f2360e55920353fd1781ceab Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 29 Jul 2012 22:07:06 +0000 Subject: [PATCH] Add a wxGTK-specific function to set wxNotificationMessage icon name. It's trivial to use a stock icon with the given name in wxGTK with libnotify, so provide a way to do it. However this is not as simple as that in other implementations (notably Windows), so make it private to this port for now. In the future we should try to support arbitrary wxIcons as well as extend wxIconLocation to support FreeDesktop stock icon names. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/gtk/notifmsg.h | 5 +++++ src/gtk/notifmsg.cpp | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) 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 ) -- 2.45.2