handle circulates

SVN revision: 16293
This commit is contained in:
Carsten Haitzler 2005-08-23 03:50:02 +00:00
parent e17deaedff
commit 8167cf314e
3 changed files with 43 additions and 4 deletions

View File

@ -2297,9 +2297,10 @@ _e_border_cb_window_configure_request(void *data, int ev_type, void *ev)
{
// printf("generic config request 0x%x 0x%lx %i %i %ix%i %i 0x%x 0x%x...\n",
// e->win, e->value_mask, e->x, e->y, e->w, e->h, e->border, e->abovewin, e->detail);
ecore_x_window_configure(e->win, e->value_mask,
e->x, e->y, e->w, e->h, e->border,
e->abovewin, e->detail);
if (!e_util_container_window_find(e->win))
ecore_x_window_configure(e->win, e->value_mask,
e->x, e->y, e->w, e->h, e->border,
e->abovewin, e->detail);
return 1;
}
// printf("##- CONFIGURE REQ 0x%0x mask: %c%c%c%c%c%c%c\n",
@ -2558,7 +2559,21 @@ _e_border_cb_window_stack_request(void *data, int ev_type, void *ev)
e = ev;
bd = e_border_find_by_client_window(e->win);
// printf("stack req for %0x bd %p\n", e->win, bd);
if (!bd) return 1;
if (!bd)
{
if (!e_util_container_window_find(e->win))
{
if (e->detail == ECORE_X_WINDOW_STACK_ABOVE)
ecore_x_window_raise(e->win);
else if (e->detail == ECORE_X_WINDOW_STACK_BELOW)
ecore_x_window_lower(e->win);
}
return 1;
}
if (e->detail == ECORE_X_WINDOW_STACK_ABOVE)
e_border_raise(bd);
else if (e->detail == ECORE_X_WINDOW_STACK_BELOW)
e_border_lower(bd);
return 1;
}

View File

@ -373,3 +373,26 @@ e_util_menu_item_edje_icon_set(E_Menu_Item *mi, char *name)
}
return 0;
}
E_Container *
e_util_container_window_find(Ecore_X_Window win)
{
Evas_List *l, *ll;
for (l = e_manager_list(); l; l = l->next)
{
E_Manager *man;
man = l->data;
for (ll = man->containers; ll; ll = ll->next)
{
E_Container *con;
con = ll->data;
if ((con->win == win) || (con->bg_win == win) ||
(con->event_win == win))
return con;
}
}
return NULL;
}

View File

@ -24,6 +24,7 @@ EAPI int e_util_edje_icon_list_set(Evas_Object *obj, char *list);
EAPI int e_util_menu_item_edje_icon_list_set(E_Menu_Item *mi, char *list);
EAPI int e_util_edje_icon_set(Evas_Object *obj, char *name);
EAPI int e_util_menu_item_edje_icon_set(E_Menu_Item *mi, char *name);
EAPI E_Container *e_util_container_window_find(Ecore_X_Window win);
#endif
#endif