]> git.saurik.com Git - wxWidgets.git/commitdiff
Add a wxGTK-specific function to set wxNotificationMessage icon name.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 29 Jul 2012 22:07:06 +0000 (22:07 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 29 Jul 2012 22:07:06 +0000 (22:07 +0000)
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
src/gtk/notifmsg.cpp

index 195991e5163638bf924474f8a02dc665849fb37a..bb217d02062eae4c1fff6b33d14222df69acf4f5 100644 (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);
 };
index d3b6285925736532b01f1b2d0538b7f09b0d767a..d50dee214084814ee66517d9172e5b3f908812dd 100644 (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 )