Ecore_X: Make ecore_xcb_window match up more w/ xlib version.

Fix some formatting.
Don't allocate any Ecore_X_Windows if the children count is zero.



SVN revision: 62217
This commit is contained in:
Christopher Michael 2011-08-08 20:37:40 +00:00
parent d04731b7e5
commit ae585ba36a
1 changed files with 26 additions and 13 deletions

View File

@ -886,8 +886,8 @@ ecore_x_window_container_manage(Ecore_X_Window win)
LOGFN(__FILE__, __LINE__, __FUNCTION__);
list = (XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT);
list = (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY);
xcb_change_window_attributes(_ecore_xcb_conn, win,
XCB_CW_EVENT_MASK, &list);
@ -1045,6 +1045,8 @@ ecore_x_window_manage(Ecore_X_Window win)
ecore_x_sync(); // needed
/* FIXME: XLib uses XSelectInput */
/* FIXME: Add error handler trap */
list = (XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW |
XCB_EVENT_MASK_PROPERTY_CHANGE | XCB_EVENT_MASK_RESIZE_REDIRECT |
XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
@ -1083,12 +1085,19 @@ ecore_x_window_attributes_get(Ecore_X_Window win, Ecore_X_Window_Attributes *att
if (reply->map_state != XCB_MAP_STATE_UNMAPPED)
att_ret->visible = EINA_TRUE;
if (reply->map_state == XCB_MAP_STATE_VIEWABLE)
att_ret->viewable = EINA_TRUE;
if (reply->override_redirect) att_ret->override = EINA_TRUE;
if (reply->override_redirect)
att_ret->override = EINA_TRUE;
if (reply->_class == XCB_WINDOW_CLASS_INPUT_ONLY)
att_ret->input_only = EINA_TRUE;
if (reply->save_under) att_ret->save_under = EINA_TRUE;
if (reply->save_under)
att_ret->save_under = EINA_TRUE;
att_ret->event_mask.mine = reply->your_event_mask;
att_ret->event_mask.all = reply->all_event_masks;
att_ret->event_mask.no_propagate = reply->do_not_propagate_mask;
@ -1237,6 +1246,7 @@ ecore_x_window_root_list(int *num_ret)
if (!num_ret) return NULL;
/* FIXME: Use xprint if available. Reference xlib */
setup = xcb_get_setup(_ecore_xcb_conn);
iter = xcb_setup_roots_iterator(setup);
num = setup->roots_len;
@ -1253,25 +1263,28 @@ ecore_x_window_children_get(Ecore_X_Window win, int *num)
{
xcb_query_tree_cookie_t cookie;
xcb_query_tree_reply_t *reply;
xcb_window_t *w;
Ecore_X_Window *windows = NULL;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (num) *num = 0;
cookie = xcb_query_tree(_ecore_xcb_conn, win);
cookie = xcb_query_tree_unchecked(_ecore_xcb_conn, win);
reply = xcb_query_tree_reply(_ecore_xcb_conn, cookie, NULL);
if (!reply) return NULL;
if (num) *num = reply->children_len;
windows = malloc(sizeof(Ecore_X_Window) * reply->children_len);
if (windows)
if (reply->children_len > 0)
{
unsigned int i = 0;
windows = malloc(sizeof(Ecore_X_Window) * reply->children_len);
if (windows)
{
unsigned int i = 0;
xcb_window_t *w;
w = xcb_query_tree_children(reply);
for (i = 0; i < reply->children_len; i++)
windows[i] = w[i];
w = xcb_query_tree_children(reply);
for (i = 0; i < reply->children_len; i++)
windows[i] = w[i];
}
}
free(reply);