Enlightenment CVS committal Author : xcomputerman Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x_icccm.c ecore_x_window_prop.c Log Message: Add transient_for, window_role and client_leader hints =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.78 retrieving revision 1.79 diff -u -3 -r1.78 -r1.79 --- Ecore_X.h 26 Nov 2004 07:28:51 -0000 1.78 +++ Ecore_X.h 26 Nov 2004 08:27:44 -0000 1.79 @@ -1020,6 +1020,21 @@ ecore_x_icccm_colormap_window_set(Ecore_X_Window win, Ecore_X_Window subwin); EAPI void ecore_x_icccm_colormap_window_unset(Ecore_X_Window win, Ecore_X_Window subwin); + EAPI void + ecore_x_icccm_transient_for_set(Ecore_X_Window win, Ecore_X_Window forwin); + EAPI void + ecore_x_icccm_transient_for_unset(Ecore_X_Window win); + EAPI Ecore_X_Window + ecore_x_icccm_transient_for_get(Ecore_X_Window win); + EAPI void + ecore_x_icccm_window_role_set(Ecore_X_Window win, const char *role); + EAPI char * + ecore_x_icccm_window_role_get(Ecore_X_Window win); + EAPI void + ecore_x_icccm_client_leader_set(Ecore_X_Window win, Ecore_X_Window l); + EAPI Ecore_X_Window + ecore_x_icccm_client_leader_get(Ecore_X_Window win); + typedef enum _Ecore_X_MWM_Hint_Func { =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_icccm.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- ecore_x_icccm.c 26 Nov 2004 07:28:51 -0000 1.9 +++ ecore_x_icccm.c 26 Nov 2004 08:27:45 -0000 1.10 @@ -739,11 +739,105 @@ XFree(old_data); } +/** + * Specify that a window is transient for another top-level window and should be handled accordingly. + * @param win the transient window + * @param forwin the toplevel window + */ +void +ecore_x_icccm_transient_for_set(Ecore_X_Window win, Ecore_X_Window forwin) +{ + XSetTransientForHint(_ecore_x_disp, win, forwin); +} + +/** + * Remove the transient_for setting from a window. + * @param The window + */ +void +ecore_x_icccm_transient_for_unset(Ecore_X_Window win) +{ + XDeleteProperty(_ecore_x_disp, win, _ecore_x_atom_wm_transient_for); +} + +/** + * Get the window this window is transient for, if any. + * @param win The window to check + * @return The window ID of the top-level window, or 0 if the property does not exist. + */ +Ecore_X_Window +ecore_x_icccm_transient_for_get(Ecore_X_Window win) +{ + Ecore_X_Window forwin; + + if(XGetTransientForHint(_ecore_x_disp, win, &forwin)) + return forwin; + else + return 0; + +} + +/** + * Set the window role hint. + * @param win The window + * @param role The role string + */ +void +ecore_x_icccm_window_role_set(Ecore_X_Window win, const char *role) +{ + ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_window_role, + (char *)role); +} + +/** + * Get the window role. + * @param win The window + * @return The window's role string. + */ +char * +ecore_x_icccm_window_role_get(Ecore_X_Window win) +{ + return ecore_x_window_prop_string_get(win, + _ecore_x_atom_wm_window_role); +} + +/** + * Set the window's client leader. + * @param win The window + * @param l The client leader window + * + * All non-transient top-level windows created by an app other than + * the main window must have this property set to the app's main window. + */ +void +ecore_x_icccm_client_leader_set(Ecore_X_Window win, Ecore_X_Window l) +{ + ecore_x_window_prop_property_set(win, + _ecore_x_atom_wm_client_leader, + XA_WINDOW, 32, &l, 1); +} + +/** + * Get the window's client leader. + * @param win The window + * @return The window's client leader window, or 0 if unset */ +Ecore_X_Window +ecore_x_icccm_client_leader_get(Ecore_X_Window win) +{ + unsigned char *data; + int num; + + if(ecore_x_window_prop_property_get(win, + _ecore_x_atom_wm_client_leader, + XA_WINDOW, 32, &data, &num)) + return (Ecore_X_Window)*data; + else + return 0; +} + + /* FIXME: move these things in here as they are icccm related */ -/* get/set window role */ -/* get/set client leader */ -/* get/set transient for */ /* send iconify request */ /* FIXME: there are older E hints, gnome hints and mwm hints and new netwm */ =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.55 retrieving revision 1.56 diff -u -3 -r1.55 -r1.56 --- ecore_x_window_prop.c 26 Nov 2004 07:28:51 -0000 1.55 +++ ecore_x_window_prop.c 26 Nov 2004 08:27:45 -0000 1.56 @@ -324,7 +324,8 @@ * @param t The icon name string * * Set a window icon name - * DEPRECATED. Please use ecore_x_icccm_icon_name_set() instead. + * DEPRECATED. Please use ecore_x_icccm_icon_name_set() instead, + * and ecore_x_netwm_icon_name_set() when it becomes available. */ void ecore_x_window_prop_icon_name_set(Ecore_X_Window win, const char *t) ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs