[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