QTC_EXPORT void qtcX11MapRaised(xcb_window_t win) { if (qtcUnlikely(!win)) return; static const uint32_t val = XCB_STACK_MODE_ABOVE; qtcX11CallVoid(configure_window, win, XCB_CONFIG_WINDOW_STACK_MODE, &val); qtcX11CallVoid(map_window, win); }
// WM Move QTC_EXPORT void qtcX11MoveTrigger(xcb_window_t wid, uint32_t x, uint32_t y) { QTC_RET_IF_FAIL(wid); qtcX11FlushXlib(); qtcX11CallVoid(ungrab_pointer, XCB_TIME_CURRENT_TIME); union { char _buff[32]; xcb_client_message_event_t ev; } buff; memset(&buff, 0, sizeof(buff)); // ...Taken from bespin... // stolen... errr "adapted!" from QSizeGrip // Well now it is "ported" xcb_client_message_event_t *xev = &buff.ev; xev->response_type = XCB_CLIENT_MESSAGE; xev->format = 32; xev->window = wid; xev->type = qtc_x11_net_wm_moveresize; xev->data.data32[0] = x; xev->data.data32[1] = y; xev->data.data32[2] = 8; // NET::Move xev->data.data32[3] = XCB_KEY_BUT_MASK_BUTTON_1; qtcX11SendEvent(false, qtc_root_window, XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, xev); qtcX11Flush(); }
QTC_EXPORT void qtcX11ShadowUninstall(xcb_window_t win) { QTC_RET_IF_FAIL(win); qtcX11CallVoid(delete_property, win, qtc_x11_kde_net_wm_shadow); qtcX11Flush(); }
static xcb_pixmap_t qtcX11ShadowCreatePixmap(const QtcImage *data) { xcb_pixmap_t pixmap = qtcX11GenerateId(); // create X11 pixmap qtcX11CallVoid(create_pixmap, 32, pixmap, qtc_root_window, data->width, data->height); xcb_gcontext_t cid = qtcX11GenerateId(); qtcX11CallVoid(create_gc, cid, pixmap, 0, (const uint32_t*)0); qtcX11CallVoid(put_image, XCB_IMAGE_FORMAT_Z_PIXMAP, pixmap, cid, data->width, data->height, 0, 0, 0, 32, data->len, (unsigned char*)data->data); qtcX11CallVoid(free_gc, cid); qtcX11Flush(); return pixmap; }
// Necessary? void qtcX11ShadowDestroy() { QTC_RET_IF_FAIL(qtc_xcb_conn); for (unsigned int i = 0; i < sizeof(shadow_xpixmaps) / sizeof(shadow_xpixmaps[0]);i++) { qtcX11CallVoid(free_pixmap, shadow_xpixmaps[i]); } qtcX11Flush(); }