wxTaskBarIconAreaBase();
// Returns true if SYSTRAY protocol is supported by the desktop
- bool IsProtocolSupported();
+ static bool IsProtocolSupported();
wxEvtHandler *m_invokingWindow;
public:
wxTaskBarIconBase() { }
+#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__)
+ static bool IsAvailable();
+#else
+ static bool IsAvailable() { return true; };
+#endif
+
// Operations:
virtual bool SetIcon(const wxIcon& icon,
const wxString& tooltip = wxEmptyString) = 0;
Sets the icon, and optional tooltip text.
*/
bool SetIcon(const wxIcon& icon, const wxString& tooltip);
+
+ /**
+ Returns true if system tray is available in the desktop environment the
+ app runs under.
+
+ On Windows and Mac OS X, the tray is always available and this function
+ simply returns true.
+
+ On Unix, X11 environment may or may not provide the tray, depending on
+ user's desktop environment. Most modern desktops support the tray via
+ the System Tray Protocol by freedesktop.org
+ (http://freedesktop.org/wiki/Specifications/systemtray-spec).
+
+ @note Tray availability may change during application's lifetime
+ under X11 and so applications shouldn't cache the result.
+
+ @note wxTaskBarIcon supports older GNOME 1.2 and KDE 1/2 methods of
+ adding icons to tray, but they are unreliable and this method
+ doesn't detect them.
+
+ @since 2.9.0
+ */
+ static bool IsAvailable();
};
if ( !wxApp::OnInit() )
return false;
+ if ( !wxTaskBarIcon::IsAvailable() )
+ {
+ wxMessageBox
+ (
+ "There appears to be no system tray support in your current environment. This sample may not behave as expected.",
+ "Warning",
+ wxOK | wxICON_EXCLAMATION
+ );
+ }
+
// Create the main window
gs_dialog = new MyDialog(wxT("wxTaskBarIcon Test Dialog"));
wxDEFAULT_FRAME_STYLE | wxFRAME_NO_TASKBAR |
wxSIMPLE_BORDER | wxFRAME_SHAPED) {}
- bool IsProtocolSupported() const { return false; }
+ static bool IsProtocolSupported() const { return false; }
};
#endif
m_icon->ProcessEvent(event);
}
+// ----------------------------------------------------------------------------
+// wxTaskBarIconBase class:
+// ----------------------------------------------------------------------------
+
+bool wxTaskBarIconBase::IsAvailable()
+{
+ return wxTaskBarIconArea::IsProtocolSupported();
+}
+
// ----------------------------------------------------------------------------
// wxTaskBarIcon class:
// ----------------------------------------------------------------------------