GNOME Bugzilla – Bug 581311
gtk_tooltip_trigger_tooltip_query shouldn't restart tooltip timeout
Last modified: 2012-11-26 13:53:30 UTC
Tooltip over icon in notification area is shown only when rhythmbox is paused. When it is playing, nothing is shown (which is inconvenient, because I have to open the player to look for the name of the currently playing song, when I need to know it). This is a regression from rhythmbox 0.11.6. See attached bug demonstration.
Created attachment 133919 [details] bug demonstration
The tooltip works correctly for me. There was a gtk+ bug that affected the positioning of the tooltip, so maybe this is related. What version of gtk+ are you using?
Oh, I'm sorry. I tried the standard Ubuntu Human theme and it works. It doesn't work under the New Wave theme. So I guess it's not bug in rhythmbox. As for gtk version, package libgtk2.0-0 is of version 2.16.1-0ubuntu2.
OK, thanks for testing that. I'm not sure where the new wave theme lives, but I guess you should report this to the theme developers.
Already did. Sorry for false bug.
I have resolved the issue with New Wave developer: https://bugs.launchpad.net/anton/+bug/371697 The solution is to set tooltip timeout to less than 950ms (default in New Wave theme is 1000ms). I am reopening this bug because I have strong feeling that the bug is in Rhythmbox after all. Because Rhythmbox is the only application making problems. I have edited standard Human-Clearlooks theme default in Ubuntu and added this line to the start of the gtkrc file: gtk-tooltip-timeout = 1000 and Rhythmbox tooltips stopped working even in that theme (in which previously worked)! Because with Rhythmbox paused the tooltips work and with it playing they does not, I think the problem is in counting seconds which you do in the tooltip. Maybe you don't expect the tooltip *not* to be shown after 1sec and you try to modify tooltip which does not still exist.
The tooltip is a completely normal gtk tooltip. Rhythmbox does not control the timing of the tooltip in any way.
No, that's not what I mean. But you are changing the tooltip every second, right? So maybe you get somewhere null instead of expected object, or something like that. And don't forget that tooltip for paused Rhythmbox works, just for playing doesn't. And obviously it does not depend on theme (which I thought before). Seems to me that the problem is likely to be in Rhythmbox. Please try it yourself, just add the line to your theme and switch the theme (to apply it).
Thanks for doing the work to track this down. During playback, rhythmbox will trigger a tooltip query once per second to update the time displayed in the tooltip. This restarts the timer gtk uses to display the tooltip. This looks like a bug in gtk's tooltip handling - something internal to the app shouldn't affect the way tooltips are displayed to the user. This means that any periodically updated tooltip will never be displayed if the update period is less than the tooltip timeout. Maybe _gtk_tooltip_handle_event needs to know the difference between actual events and those created by gtk_tooltip_trigger_tooltip_query. Alternatively, if there was a way to find out if a tooltip was visible, the app could refrain from updating the tooltip if the user wouldn't see it anyway. Seems like this would be tricky for the app to get right.
Upgrade version field
The same effect can be observed in the multiload applet #645284 and seems to be related to the discussion in #516130.
It seems that this has been fixed in gtk 3.4.2.
Closing as OBSOLETE for comment #12.