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
This commit is contained in:
Vadim Zeitlin 2012-07-29 22:07:06 +00:00
parent e0ea79b805
commit c589dc030d
2 changed files with 21 additions and 0 deletions

View File

@ -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);
};

View File

@ -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 )