diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-09-19 14:17:03 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-09-19 14:17:03 +0000 |
commit | 48ead3b93b680035aaf14e3c75ff464d136b8f05 (patch) | |
tree | 78b8d66f24e62a0ff982d463460f3a7ffdb07d0e /kwin/clients/b2 | |
parent | ed70a0cfa055fcd8c5243424ca8fb3e61ead2d8b (diff) | |
download | tdebase-48ead3b93b680035aaf14e3c75ff464d136b8f05.tar.gz tdebase-48ead3b93b680035aaf14e3c75ff464d136b8f05.zip |
Fix keramic and b2 window clients
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1254498 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kwin/clients/b2')
-rw-r--r-- | kwin/clients/b2/b2client.cpp | 25 | ||||
-rw-r--r-- | kwin/clients/b2/b2client.h | 1 |
2 files changed, 24 insertions, 2 deletions
diff --git a/kwin/clients/b2/b2client.cpp b/kwin/clients/b2/b2client.cpp index adb594282..179eee0eb 100644 --- a/kwin/clients/b2/b2client.cpp +++ b/kwin/clients/b2/b2client.cpp @@ -26,6 +26,7 @@ #include <tqtooltip.h> #include <X11/Xlib.h> +#include <X11/Xatom.h> namespace B2 { @@ -432,6 +433,22 @@ void B2Client::init() titlebar->installEventFilter(this); } +bool B2Client::isModalSystemNotification() +{ + unsigned char *data = 0; + Atom actual; + int format, result; + unsigned long n, left; + Atom kde_wm_system_modal_notification; + kde_wm_system_modal_notification = XInternAtom(qt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False); + result = XGetWindowProperty(qt_xdisplay(), windowId(), kde_wm_system_modal_notification, 0L, 1L, False, XA_CARDINAL, &actual, &format, &n, &left, /*(unsigned char **)*/ &data); + if (result == Success && data != None && format == 32 ) + { + return TRUE; + } + return FALSE; +} + void B2Client::addButtons(const TQString& s, const TQString tips[], B2Titlebar* tb, TQBoxLayout* titleLayout) { @@ -441,6 +458,7 @@ void B2Client::addButtons(const TQString& s, const TQString tips[], for (unsigned int i = 0; i < s.length(); i++) { switch (s[i].latin1()) { case 'M': // Menu button + if (!isModalSystemNotification()) { if (!button[BtnMenu]) { button[BtnMenu] = new B2Button(this, tb, tips[BtnMenu], Qt::LeftButton | Qt::RightButton); @@ -450,8 +468,10 @@ void B2Client::addButtons(const TQString& s, const TQString tips[], this, TQT_SLOT(menuButtonPressed())); titleLayout->addWidget(button[BtnMenu]); } - break; + } + break; case 'S': // Sticky button + if (!isModalSystemNotification()) { if (!button[BtnSticky]) { button[BtnSticky] = new B2Button(this, tb, tips[BtnSticky]); button[BtnSticky]->setPixmaps(P_PINUP); @@ -461,7 +481,8 @@ void B2Client::addButtons(const TQString& s, const TQString tips[], this, TQT_SLOT(toggleOnAllDesktops())); titleLayout->addWidget(button[BtnSticky]); } - break; + } + break; case 'H': // Help button if (providesContextHelp() && (!button[BtnHelp])) { button[BtnHelp] = new B2Button(this, tb, tips[BtnHelp]); diff --git a/kwin/clients/b2/b2client.h b/kwin/clients/b2/b2client.h index ddddf0c0a..d1062348e 100644 --- a/kwin/clients/b2/b2client.h +++ b/kwin/clients/b2/b2client.h @@ -133,6 +133,7 @@ private: void positionButtons(); void calcHiddenButtons(); bool mustDrawHandle() const; + bool isModalSystemNotification(); enum ButtonType{BtnMenu=0, BtnSticky, BtnIconify, BtnMax, BtnClose, BtnHelp, BtnShade, BtnResize, BtnCount}; |