kdelibs/kdelibs-4.2.2-plasma-focus....

74 lines
2.8 KiB
Diff

diff -up kdelibs-4.2.2/plasma/popupapplet.cpp.orig kdelibs-4.2.2/plasma/popupapplet.cpp
--- kdelibs-4.2.2/plasma/popupapplet.cpp.orig 2009-03-30 23:41:08.000000000 +0200
+++ kdelibs-4.2.2/plasma/popupapplet.cpp 2009-04-21 12:52:16.000000000 +0200
@@ -275,14 +275,8 @@ void PopupAppletPrivate::popupConstraint
//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.
- //Use Qt::Tool otherwise dialogs get shown over screensaver (bug #179924).
- Qt::WindowFlags wflags = Qt::Tool | 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);
@@ -340,7 +334,7 @@ void PopupApplet::mouseReleaseEvent(QGra
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()));
@@ -411,15 +405,7 @@ void PopupApplet::setPassivePopup(bool p
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();
}
}
@@ -628,6 +614,15 @@ void PopupAppletPrivate::updateDialogPos
dialog->move(pos);
}
+
+
+void PopupAppletPrivate::updateDialogFlags()
+{
+ Q_ASSERT(dialog);
+ dialog->setAttribute(Qt::WA_X11NetWmWindowTypeNotification, passive);
+}
+
+
} // Plasma namespace
#include "popupapplet.moc"
diff -up kdelibs-4.2.2/plasma/private/popupapplet_p.h.orig kdelibs-4.2.2/plasma/private/popupapplet_p.h
--- kdelibs-4.2.2/plasma/private/popupapplet_p.h.orig 2009-04-21 12:59:29.000000000 +0200
+++ kdelibs-4.2.2/plasma/private/popupapplet_p.h 2009-04-21 12:52:16.000000000 +0200
@@ -35,6 +35,7 @@ public:
void dialogSizeChanged();
void dialogStatusChanged(bool status);
void updateDialogPosition();
+ void updateDialogFlags();
void popupConstraintsEvent(Plasma::Constraints constraints);
void checkExtenderAppearance(Plasma::FormFactor f);