[Xcb] what events need to be handled to show a window
Micah Nordland
mpnordland at gmail.com
Sat Nov 24 03:32:07 PST 2012
Sorry for the noise everyone, it seems to be working now, and I don't know
why it wasn't.
On Sat, Nov 24, 2012 at 5:45 AM, Micah Nordland <mpnordland at gmail.com>wrote:
> I think that only map requests and configure requests should have to be
> handled, but apparently, X thinks differently.
>
> I have these two event handlers. I'm writing a window manager, using xcb
> and c++11.
>
> void handleMapRequest(xcb_generic_event_t* event)
> {
> xcb_map_request_event_t* ev = (xcb_map_request_event_t *) event;
> xcb_void_cookie_t err = xcb_map_window_checked(global::conf.conn,
> ev->window);
> if(xcb_request_check(conn, err))
> {
> std::cout << "we had a problem mapping this window" << std::endl;
> }
> std::cout << "window " << ev->window << " has been mapped" <<
> std::endl;
> }
>
> void handleConfigureRequest(xcb_generic_event_t* event)
> {
> uint16_t mask=0;
> uint32_t values [7];
> unsigned short i = 0;
>
> xcb_configure_request_event_t* ev = (xcb_configure_request_event_t *)
> event;
>
> if (ev->value_mask & XCB_CONFIG_WINDOW_X)
> {
> mask |= XCB_CONFIG_WINDOW_X;
> values[i++] = ev->x;
> }
>
> if (ev->value_mask & XCB_CONFIG_WINDOW_Y)
> {
> mask |= XCB_CONFIG_WINDOW_Y;
> values[i++] = ev->y;
> }
>
> if (ev->value_mask & XCB_CONFIG_WINDOW_WIDTH)
> {
> mask |= XCB_CONFIG_WINDOW_WIDTH;
> values[i++] = ev->width;
> }
>
> if (ev->value_mask & XCB_CONFIG_WINDOW_HEIGHT)
> {
> mask |= XCB_CONFIG_WINDOW_HEIGHT;
> values[i++] = ev->height;
> }
>
> if (ev->value_mask & XCB_CONFIG_WINDOW_BORDER_WIDTH)
> {
> mask |= XCB_CONFIG_WINDOW_BORDER_WIDTH;
> values[i++] = ev->border_width;
> }
>
> if (ev->value_mask & XCB_CONFIG_WINDOW_SIBLING)
> {
> mask |= XCB_CONFIG_WINDOW_SIBLING;
> values[i++] = ev->sibling;
> }
>
> if (ev->value_mask & XCB_CONFIG_WINDOW_STACK_MODE)
> {
> mask |= XCB_CONFIG_WINDOW_STACK_MODE;
> values[i++] = ev->stack_mode;
> }
>
> xcb_void_cookie_t err =
> xcb_configure_window_checked(global::conf.conn, ev->window, mask, values);
>
> if (xcb_request_check(conn, err))
> {
> std::cout << "there was a problem configuring this window" <<
> std::endl;
> }
>
> std::cout <<"window " << ev->window << " was configured"<< std::endl;
> }
>
> --
> Praising my Savior all the day long,
> Micah Nordland
>
>
--
Praising my Savior all the day long,
Micah Nordland
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/xcb/attachments/20121124/0efb53f4/attachment.html>
More information about the Xcb
mailing list