diff --git a/src/statusicon-qt/statusicon.cc b/src/statusicon-qt/statusicon.cc index 420c8c5f90..d655348b5d 100644 --- a/src/statusicon-qt/statusicon.cc +++ b/src/statusicon-qt/statusicon.cc @@ -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 title_changed (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,7 @@ bool StatusIcon::init () tray->setContextMenu (menu); tray->show (); + hook_associate ("title change", title_changed, nullptr); hook_associate ("window close", window_closed, nullptr); return true; @@ -195,6 +199,7 @@ bool StatusIcon::init () void StatusIcon::cleanup () { + hook_dissociate ("title change", title_changed); hook_dissociate ("window close", window_closed); /* Prevent accidentally hiding the interface by disabling @@ -211,6 +216,12 @@ void StatusIcon::cleanup () audqt::cleanup (); } +void StatusIcon::title_changed (void * data, void * user_data) +{ + const char * title = aud_drct_get_title (); + tray->setToolTip (title); +} + void StatusIcon::window_closed (void * data, void * user_data) { bool * handled = (bool *) data;