Bug 51552

Summary: young hickory passive popup is cut off
Product: [Frameworks and Libraries] kdelibs Reporter: ismore
Component: generalAssignee: Stephan Kulow <coolo>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: Case where the panel is hidden
Case where the panel is not hidden

Description ismore 2002-12-06 00:41:07 UTC
Version:            (using KDE Devel)
Installed from:    Compiled sources
OS:          Linux

When the "Announce tracks in a popup window" options is checked, the passive popup that young hickry shows is sometimes cut off.

My systray is located on kicker's child panel, that has size set to tiny, auto-hide to true and is located on the top right area of the desktop. So it usually isn't shown. If I move the mouse to the top right area it slides down and I can see/act on the systray itens (and click the buttons that also are on this child panel).

However, if there is a new song the passive popup that young hickorys display is cut off by about a half when the child panel is hidden (ie, regular case). If I have a new song when the mouse is on the panel, then it works nice. I've attached two screenshots showing the two cases, so that you can have a better idea of my setup.

It is probably a KPassivePopup bug, not a Noatun one. But I thought it would be better to notify it here first.
Comment 1 ismore 2002-12-06 00:42:09 UTC
Created attachment 577 [details]
Case where the panel is hidden
Comment 2 ismore 2002-12-06 00:42:39 UTC
Created attachment 578 [details]
Case where the panel is not hidden
Comment 3 ismore 2002-12-07 00:07:14 UTC
I was able to track it down to a bug in KPassivePopup... in that special case, the y 
coordinate becomes negative (ie, it is over the top of the screen). The following 
fixes it: 
 
void KPassivePopup::moveNear( QRect target ) 
{ 
  [...]  (line 224) 
    // It wants to be more at the top then the top 
    if ( y < 0 ) 
      y = 0; 
  [...] 
} 
 
There should be a check for x < 0 as well, I guess. 
Comment 4 Carsten Pfeiffer 2002-12-07 01:18:52 UTC
Subject: kdelibs/kdeui

CVS commit by pfeiffer: 

Thanks to ismore@ieg.com.br

+    if ( y < 0 )
+        y = 0;

CCMAIL: 51552-close@bugs.kde.org


  M +4 -1      kpassivepopup.cpp   1.15


--- kdelibs/kdeui/kpassivepopup.cpp:1.14	Fri Nov 15 02:54:19 2002
@@ -177,7 +177,7 @@
     QRect target;
 
     if ( window == 0L ) {
-	target = defaultArea();
+        target = defaultArea();
     }
 
     else {
@@ -220,6 +220,9 @@
     // It's apparently trying to go off screen, so display it ALL at the bottom.
     if ( (y + h) > qApp->desktop()->height() )
 	y = qApp->desktop()->height() - h;
+
+    if ( y < 0 )
+        y = 0;
 
 #ifdef OLD_BITS
     if ( (x - w) >= 0  )