/** Handle systray message. * \param ev The event. * \return 0 on no error. */ int systray_process_client_message(xcb_client_message_event_t *ev) { int screen_nbr = 0, ret = 0; xcb_get_geometry_cookie_t geom_c; xcb_get_geometry_reply_t *geom_r; xcb_screen_iterator_t iter; switch(ev->data.data32[1]) { case SYSTEM_TRAY_REQUEST_DOCK: geom_c = xcb_get_geometry_unchecked(globalconf.connection, ev->window); if(!(geom_r = xcb_get_geometry_reply(globalconf.connection, geom_c, NULL))) return -1; for(iter = xcb_setup_roots_iterator(xcb_get_setup(globalconf.connection)), screen_nbr = 0; iter.rem && iter.data->root != geom_r->root; xcb_screen_next (&iter), ++screen_nbr); p_delete(&geom_r); ret = systray_request_handle(ev->data.data32[2], screen_nbr, NULL); break; } return ret; }
/** Handle systray message. * \param ev The event. * \return 0 on no error. */ int systray_process_client_message(xcb_client_message_event_t *ev) { int ret = 0; xcb_get_geometry_cookie_t geom_c; xcb_get_geometry_reply_t *geom_r; switch(ev->data.data32[1]) { case SYSTEM_TRAY_REQUEST_DOCK: geom_c = xcb_get_geometry_unchecked(globalconf.connection, ev->window); if(!(geom_r = xcb_get_geometry_reply(globalconf.connection, geom_c, NULL))) return -1; if(globalconf.screen->root == geom_r->root) ret = systray_request_handle(ev->data.data32[2], NULL); p_delete(&geom_r); break; } return ret; }