74 lines
2.8 KiB
Diff
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);
|
|
|