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

List:       kde-commits
Subject:    branches/KDE/4.2/kdelibs/plasma
From:       Aurélien Gâteau <agateau () kde ! org>
Date:       2009-04-21 9:20:11
Message-ID: 1240305611.224617.29725.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 956998 by gateau:

Do not let plasma popup appear over screensaver.

BUG: 179924


CCMAIL:aseigo@kde.org

 M  +13 -17    popupapplet.cpp  
 M  +1 -0      private/popupapplet_p.h  


--- branches/KDE/4.2/kdelibs/plasma/popupapplet.cpp #956997:956998
@@ -275,13 +275,8 @@
                 //stuff out of your Dialog (extenders). Monitor WindowDeactivate events so we can
                 //emulate the same kind of behavior as Qt::Popup (close when you click somewhere
                 //else.
-                Qt::WindowFlags wflags = Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint;
-
-                if (passive) {
-                    wflags |= Qt::X11BypassWindowManagerHint;
-                }
-
-                dialog->setWindowFlags(wflags);
+                dialog->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
+                updateDialogFlags();
                 KWindowSystem::setState(dialog->winId(), NET::SkipTaskbar | NET::SkipPager);
                 dialog->installEventFilter(q);
 
@@ -339,7 +334,7 @@
 
 bool PopupApplet::eventFilter(QObject *watched, QEvent *event)
 {
-    if (watched == d->dialog && (event->type() == QEvent::WindowDeactivate)) {
+    if (!d->passive && watched == d->dialog && (event->type() == QEvent::WindowDeactivate)) {
         d->popupLostFocus = true;
         hidePopup();
         QTimer::singleShot(100, this, SLOT(clearPopupLostFocus()));
@@ -410,15 +405,7 @@
     d->passive = passive;
 
     if (d->dialog) {
-        Qt::WindowFlags wflags = d->dialog->windowFlags();
-
-        if (d->passive) {
-            wflags |= Qt::X11BypassWindowManagerHint;
-        } else {
-            wflags &= ~Qt::X11BypassWindowManagerHint;
-        }
-
-        d->dialog->setWindowFlags(wflags);
+        d->updateDialogFlags();
     }
 }
 
@@ -627,6 +614,15 @@
 
     dialog->move(pos);
 }
+
+
+void PopupAppletPrivate::updateDialogFlags()
+{
+    Q_ASSERT(dialog);
+    dialog->setAttribute(Qt::WA_X11NetWmWindowTypeNotification, passive);
+}
+
+
 } // Plasma namespace
 
 #include "popupapplet.moc"
--- branches/KDE/4.2/kdelibs/plasma/private/popupapplet_p.h #956997:956998
@@ -35,6 +35,7 @@
     void dialogSizeChanged();
     void dialogStatusChanged(bool status);
     void updateDialogPosition();
+    void updateDialogFlags();
     void popupConstraintsEvent(Plasma::Constraints constraints);
     void checkExtenderAppearance(Plasma::FormFactor f);
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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