[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/kdeui
From:       Nicolas Hadacek <hadacek () kde ! org>
Date:       2003-06-01 1:49:32
[Download RAW message or body]

CVS commit by hadacek: 

now KRootPixmap also works if the widget gets reparented after KRootPixmap
creation.


  M +17 -5     krootpixmap.cpp   1.20


--- kdelibs/kdeui/krootpixmap.cpp  #1.19:1.20
@@ -28,4 +28,10 @@
 #include <krootpixmap.h>
 
+class KRootPixmapData
+{
+public:
+    QWidget *toplevel;
+};
+
 
 KRootPixmap::KRootPixmap( QWidget *widget, const char *name )
@@ -43,4 +49,5 @@ KRootPixmap::KRootPixmap( QWidget *widge
 void KRootPixmap::init()
 {
+    d = new KRootPixmapData;
     m_Fade = 0;
     m_pPixmap = new KSharedPixmap;
@@ -54,8 +61,6 @@ void KRootPixmap::init()
     connect(m_pTimer, SIGNAL(timeout()), SLOT(repaint()));
 
-    QObject *obj = m_pWidget;
-    while (obj->parent())
-        obj = obj->parent();
-    obj->installEventFilter(this);
+    d->toplevel = m_pWidget->topLevelWidget();
+    d->toplevel->installEventFilter(this);
 }
 
@@ -63,4 +68,5 @@ KRootPixmap::~KRootPixmap()
 {
     delete m_pPixmap;
+    delete d;
 }
 
@@ -134,4 +140,10 @@ bool KRootPixmap::eventFilter(QObject *,
         m_pTimer->start(0, true);
         break;
+
+    case QEvent::Reparent:
+        d->toplevel->removeEventFilter(this);
+        d->toplevel = m_pWidget->topLevelWidget();
+        d->toplevel->installEventFilter(this);
+        break;
 
     default:


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic