X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fstatusnotifieritem.cpp;h=4df13dc5ebe1041204150a1a92e4bdd68b510d0b;hp=da15475b84bc351c66cf3c79e8cd87931a29203d;hb=4476cfb22f36ad9ba96e4978c3bcce1c2f6b5a04;hpb=b858144c9d38623bdd9afaa02c404d9515243ab7;ds=sidebyside diff --git a/src/qtui/statusnotifieritem.cpp b/src/qtui/statusnotifieritem.cpp index da15475b..4df13dc5 100644 --- a/src/qtui/statusnotifieritem.cpp +++ b/src/qtui/statusnotifieritem.cpp @@ -45,13 +45,6 @@ StatusNotifierItem::~StatusNotifierItem() { } void StatusNotifierItem::init() { -// workaround until we handle the tray menu more sanely -#ifdef QT_NO_SYSTEMTRAYICON - setTrayMenu(new QMenu(associatedWidget())); -#endif - - trayMenu()->installEventFilter(this); - qDBusRegisterMetaType(); qDBusRegisterMetaType(); qDBusRegisterMetaType(); @@ -64,6 +57,7 @@ void StatusNotifierItem::init() { setMode(StatusNotifier); StatusNotifierItemParent::init(); + trayMenu()->installEventFilter(this); } void StatusNotifierItem::registerToDaemon() { @@ -165,11 +159,17 @@ void StatusNotifierItem::activated(const QPoint &pos) { bool StatusNotifierItem::eventFilter(QObject *watched, QEvent *event) { if(mode() == StatusNotifier) { //FIXME: ugly ugly workaround to weird QMenu's focus problems +#ifdef HAVE_KDE if(watched == trayMenu() && (event->type() == QEvent::WindowDeactivate || (event->type() == QEvent::MouseButtonRelease && static_cast(event)->button() == Qt::LeftButton))) { // put at the back of event queue to let the action activate anyways QTimer::singleShot(0, trayMenu(), SLOT(hide())); } +#else + if(watched == trayMenu() && event->type() == QEvent::HoverLeave) { + trayMenu()->hide(); + } +#endif } return StatusNotifierItemParent::eventFilter(watched, event); }