Bug 281804 - Clementine Player's seek bar started to blink since version 4.7.0
Summary: Clementine Player's seek bar started to blink since version 4.7.0
Status: RESOLVED FIXED
Alias: None
Product: Oxygen
Classification: Plasma
Component: style (show other bugs)
Version: 4.0
Platform: Ubuntu Linux
: NOR normal
Target Milestone: ---
Assignee: Unassigned bugs mailing-list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-09-11 14:53 UTC by Lilian A. Moraru
Modified: 2011-09-13 18:29 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Lilian A. Moraru 2011-09-11 14:53:33 UTC
Version:           4.7 (using KDE 4.7.1) 
OS:                Linux

Since KDE 4.7.0(Tried on both, 4.7.0 and 4.7.1) the song's seek bar blinks when u move the mouse over it... in KDE 4.6 no problems. And it doesn't seem that it's Clementine's problem because same version works ok on other KDE versions...

It's kind of strange that both are developed in Qt but are not compatible(and it's the only Desktop Environment which has this problem). :)

Here is the bug report on clementine's issue tracker: http://code.google.com/p/clementine-player/issues/detail?id=1715

Reproducible: Always

Steps to Reproduce:
1.Install Clementine("sudo apt-get install clementine -y" in Kubuntu).
2.Add a new song via Playlist->Add file, whether there is already a playlist or not.
3.Open any song, whether the song is the one you just added or any song in a playlist
4.Observe that when you mouse over the seek bar, the little shiny dialog is not behaving normally as always do. It's blinking and seems awkward.


Expected Results:  
Not to blink
Comment 1 Hugo Pereira Da Costa 2011-09-12 07:47:05 UTC
Can reproduce, with oxygen and bespin. Not plastique.

KDE: from trunk (== 4.7.1 more or less)
Qt: 4.7.3
Clementine: 0.7.1

Could reproduce with compiz instead of kwin, and without compositing, 
so this is not kwin related.

I believe that it is due to some widget flags that are set by the widget style for this custom overlay tooltip. Will browse through Clementine's code and investigate.
Comment 2 Lilian A. Moraru 2011-09-12 08:28:13 UTC
Yep, under Plastique works normally.

If you get the code using: git clone https://code.google.com/p/clementine-player/ clementine-player

the code for this popup is under: clementine-player->src->widgets and there are 2 files:
- tracksliderpopup.cpp
- tracksliderpopup.h
Comment 3 Lilian A. Moraru 2011-09-12 11:12:34 UTC
I have impression that it has problems with the blurring.
Set kBlurRadius from 20.0 to 0.0. 
My result: If I move the mouse over the progress bar it doesn't blink but if I hover over the painted Rectangle(which is the Popup) it blinks again.
Comment 4 Lilian A. Moraru 2011-09-12 11:21:15 UTC
(In reply to comment #3)
> I have impression that it has problems with the blurring.
> Set kBlurRadius from 20.0 to 0.0. 
> My result: If I move the mouse over the progress bar it doesn't blink but if I
> hover over the painted Rectangle(which is the Popup) it blinks again.

Or set it to 1.0 and observe that if you hover the mouse over that 1 pixel additional border it starts to blink again.
Comment 5 Lilian A. Moraru 2011-09-12 11:30:12 UTC
Looks like if you hover the mouse over the widget(which is the popup) it blinks, it has nothing with blurring.
Comment 6 Lilian A. Moraru 2011-09-12 15:35:06 UTC
Ok, here is my solution: http://code.google.com/r/lilianftp-solution1forissue1715/source/checkout

Do u think it's the way to go? I removed the line going to the track slider so the mouse doesn't hover over the popup widget.
Comment 7 Lilian A. Moraru 2011-09-12 15:36:26 UTC
But it's yet a KDE 4.7.x bug with Oxygen widget style.
Comment 8 Hugo Pereira Da Costa 2011-09-13 07:31:45 UTC
"But it's yet a KDE 4.7.x bug with Oxygen widget style."
well. The fact that it happens with other styles (bespin) makes the statement above not so clear. 

Now, indeed, your change does seem like the right way to go (in fact I was originally heading the same way while changing clementine on my side). Do you have a "diff" between your clone and the original git ? 

My understanding is that the flicker (in oxygen) is created because the widget keeps getting shown/hidden.

"Enter event" in the slider generates "show" which generates "leave event" on the slider, which triggers "hide", which triggers "enter event" etc.
I'm still investigating (on the oxygen side) why this happens with oxygen and not with plastique.

Re-assigning to Oxygen, and keeping the bug open. Will keep you posted.

Cheers,

Hugo
Comment 9 Hugo Pereira Da Costa 2011-09-13 13:38:20 UTC
First, adding Thomas in CC, since bespin is also affected.

I checked out your "fixed" code, and well, though it works, it would be unfortunate that this is the only solution (namely, not make the popup overlap with the slider). So I would refrain to push that to official clementine for the moment.

On my side, in the oxygen code, I've found out which piece of code is responsible for the bad behavior. Unfortunatly its a totally unrelated chunk of code. Namely some XDeleteProperty, which indeed was introduced with kde4.7, is related to the needed code for kwin to install shadows on menus (which is why bespin is also affected) and is not even called for any widget of the slider (its called for some QMenu). So I'm totally confused why this code has such effect, and am still investigating.

Thomas, if you have any clue ...
Comment 10 Hugo Pereira Da Costa 2011-09-13 13:42:51 UTC
Git commit f8d4bfbda31f3bbb43e29341a8f00411dcac4280 by Hugo Pereira Da Costa.
Committed on 13/09/2011 at 15:42.
Pushed by hpereiradacosta into branch 'master'.

Test for widget creation before deleting property at unregistration.
CCBUG: 281804

M  +1    -1    kstyles/oxygen/oxygenshadowhelper.cpp

http://commits.kde.org/kde-workspace/f8d4bfbda31f3bbb43e29341a8f00411dcac4280
Comment 11 Hugo Pereira Da Costa 2011-09-13 13:44:01 UTC
ok. In fact I just found the issue, and fixed it (in oxygen).
So closing.
Thomas: have a look, for bespin. Its straightforward, and really a bug.
(one should not access widget->winId() for not 'WA_CREATED' widgets).
Comment 12 Hugo Pereira Da Costa 2011-09-13 13:44:57 UTC
Git commit efc6da88d6846082e0c61eb3f34e6e344c886158 by Hugo Pereira Da Costa.
Committed on 13/09/2011 at 15:42.
Pushed by hpereiradacosta into branch 'KDE/4.7'.

Test for widget creation before deleting property at unregistration.
CCBUG: 281804

M  +1    -1    kstyles/oxygen/oxygenshadowhelper.cpp

http://commits.kde.org/kde-workspace/efc6da88d6846082e0c61eb3f34e6e344c886158
Comment 13 Thomas Lübking 2011-09-13 15:12:33 UTC
@Hugo
Many thanks for attaching me and the hint but Bespin doesn't ;-)
(Ok: "anymore" - just a few versions with rather initial shadow support did.)

I cannot reproduce the issue here (raster & native, despite installing gstreamer...) - what bespin revision did you test?

(ftr: QWidget::windId() triggers a native widget what that popup seems to be not supposed to be)
Comment 14 Hugo Pereira Da Costa 2011-09-13 15:20:26 UTC
@thomas: old old. (svn, some time in August).
I can confirm that after updating I can't reproduce either.
Bespin (but likely too old too) was also mentioned in the original bug report (http://code.google.com/p/clementine-player/issues/detail?id=1715)
Comment 15 Thomas Lübking 2011-09-13 16:09:27 UTC
Ok, thanks once more =)
Comment 16 Lilian A. Moraru 2011-09-13 16:29:44 UTC
So, the next KDE update(which I guess is 4.7.2) will have this fixed without changing Clementine visual look? At least for Oxygen widget style?
Comment 17 Hugo Pereira Da Costa 2011-09-13 16:41:36 UTC
@Moraru: yes.
So I guess you can close the original clementine's bug, as "resolved upstream" or smthing similar.
Sorry for the trouble.
Comment 18 Hugo Pereira Da Costa 2011-09-13 16:41:57 UTC
(and it is already fixed for latest bespin)
Comment 19 Lilian A. Moraru 2011-09-13 18:29:40 UTC
Thx a lot.