Port staticWmClientLeader to XCB

Removes usage of kxerrorhandler in kwin/toplevel.cpp
This commit is contained in:
Martin Gräßlin 2013-09-09 05:08:58 +02:00
parent 8a5972b8cb
commit 687e264387
2 changed files with 8 additions and 19 deletions

View file

@ -20,8 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "toplevel.h"
#include <kxerrorhandler.h>
#ifdef KWIN_BUILD_ACTIVITIES
#include "activities.h"
#endif
@ -172,24 +170,15 @@ QByteArray Toplevel::staticWmCommand(WId w)
/*!
Returns WM_CLIENT_LEADER property for a given window.
*/
Window Toplevel::staticWmClientLeader(WId w)
xcb_window_t Toplevel::staticWmClientLeader(xcb_window_t w)
{
Atom type;
int format, status;
unsigned long nitems = 0;
unsigned long extra = 0;
unsigned char *data = 0;
Window result = w;
KXErrorHandler err;
status = XGetWindowProperty(display(), w, atoms->wm_client_leader, 0, 10000,
false, XA_WINDOW, &type, &format,
&nitems, &extra, &data);
if (status == Success && !err.error(false)) {
if (data && nitems > 0)
result = *((Window*) data);
XFree(data);
xcb_connection_t *c = connection();
auto cookie = xcb_get_property_unchecked(c, false, w, atoms->wm_client_leader, XCB_ATOM_WINDOW, 0, 10000);
ScopedCPointer<xcb_get_property_reply_t> prop(xcb_get_property_reply(c, cookie, nullptr));
if (prop.isNull() || prop->value_len <= 0) {
return w;
}
return result;
return static_cast<xcb_window_t*>(xcb_get_property_value(prop.data()))[0];
}

View file

@ -389,7 +389,7 @@ private:
static QByteArray staticSessionId(WId);
static QByteArray staticWmCommand(WId);
static QByteArray staticWmClientMachine(WId);
static Window staticWmClientLeader(WId);
static xcb_window_t staticWmClientLeader(xcb_window_t);
// when adding new data members, check also copyToDeleted()
Window client;
Window frame;