diff --git a/src/statusicon-qt/statusicon.cc b/src/statusicon-qt/statusicon.cc index 420c8c5f90..e22bbe143a 100644 --- a/src/statusicon-qt/statusicon.cc +++ b/src/statusicon-qt/statusicon.cc @@ -17,13 +17,13 @@ * the use of this software. */ -#include #include #include -#include -#include +#include #include +#include #include +#include #include @@ -32,7 +32,8 @@ #include #include -class StatusIcon : public GeneralPlugin { +class StatusIcon : public GeneralPlugin +{ public: static const char about[]; static const char * const defaults[]; @@ -53,6 +54,8 @@ class StatusIcon : public GeneralPlugin { bool init (); void cleanup (); +private: + static void update_tooltip (void * data, void * user_data); static void window_closed (void * data, void * user_data); static void activate (QSystemTrayIcon::ActivationReason); static void open_files (); @@ -188,6 +191,11 @@ bool StatusIcon::init () tray->setContextMenu (menu); tray->show (); + update_tooltip (nullptr, nullptr); + + hook_associate ("title change", update_tooltip, nullptr); + hook_associate ("playback ready", update_tooltip, nullptr); + hook_associate ("playback stop", update_tooltip, nullptr); hook_associate ("window close", window_closed, nullptr); return true; @@ -195,6 +203,9 @@ bool StatusIcon::init () void StatusIcon::cleanup () { + hook_dissociate ("title change", update_tooltip); + hook_dissociate ("playback ready", update_tooltip); + hook_dissociate ("playback stop", update_tooltip); hook_dissociate ("window close", window_closed); /* Prevent accidentally hiding the interface by disabling @@ -211,6 +222,12 @@ void StatusIcon::cleanup () audqt::cleanup (); } +void StatusIcon::update_tooltip (void * data, void * user_data) +{ + String title = aud_drct_get_title (); + tray->setToolTip (QString (title)); +} + void StatusIcon::window_closed (void * data, void * user_data) { bool * handled = (bool *) data;