Enlightenment CVS committal Author : pfritz Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: ewl_embed.c ewl_embed.h ewl_enums.h ewl_window.c ewl_window.h Log Message: - rename Ewl_Embed_Evas_Window to Ewl_Embed_Window (API break) - add ewl_window_transient_for_foreign() =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.c,v retrieving revision 1.109 retrieving revision 1.110 diff -u -3 -r1.109 -r1.110 --- ewl_embed.c 6 Feb 2007 13:42:17 -0000 1.109 +++ ewl_embed.c 7 Feb 2007 04:03:27 -0000 1.110 @@ -198,7 +198,7 @@ * through standard evas functions. */ Evas_Object * -ewl_embed_evas_set(Ewl_Embed *emb, Evas *evas, Ewl_Embed_Evas_Window *evas_window) +ewl_embed_evas_set(Ewl_Embed *emb, Evas *evas, Ewl_Embed_Window *evas_window) { Ewl_Widget *w; Ecore_List *paths; @@ -1107,7 +1107,7 @@ * @brief Find an ewl embed by its evas window */ Ewl_Embed * -ewl_embed_evas_window_find(Ewl_Embed_Evas_Window *window) +ewl_embed_evas_window_find(Ewl_Embed_Window *window) { Ewl_Embed *retemb; =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.h,v retrieving revision 1.40 retrieving revision 1.41 diff -u -3 -r1.40 -r1.41 --- ewl_embed.h 4 Jan 2007 05:09:47 -0000 1.40 +++ ewl_embed.h 7 Feb 2007 04:03:27 -0000 1.41 @@ -33,7 +33,7 @@ /** * Typedef and abstract out embedded evas windows */ -typedef void *Ewl_Embed_Evas_Window; +typedef void *Ewl_Embed_Window; /** * @def EWL_EMBED(widget) @@ -42,10 +42,10 @@ #define EWL_EMBED(widget) ((Ewl_Embed *) widget) /** -* @def EWL_EMBED_EVAS_WINDOW(window) -* @brief Typecast a pointer to an Evas_Window +* @def EWL_EMBED_WINDOW(window) +* @brief Typecast a pointer to an evas window */ -#define EWL_EMBED_EVAS_WINDOW(window) ((Ewl_Embed_Evas_Window *)window) +#define EWL_EMBED_WINDOW(window) ((Ewl_Embed_Window *)window) /** * @brief The class inheriting from Ewl_Container that acts as a top level @@ -93,7 +93,7 @@ const char *ewl_embed_engine_name_get(Ewl_Embed *embed); void ewl_embed_shutdown(void); Evas_Object *ewl_embed_evas_set(Ewl_Embed *emb, Evas *evas, - Ewl_Embed_Evas_Window *evas_window); + Ewl_Embed_Window *evas_window); void ewl_embed_focus_set(Ewl_Embed *embed, int f); int ewl_embed_focus_get(Ewl_Embed *embed); @@ -129,7 +129,7 @@ int z, int dir, unsigned int mods); void ewl_embed_font_path_add(char *path); -Ewl_Embed *ewl_embed_evas_window_find(Ewl_Embed_Evas_Window *win); +Ewl_Embed *ewl_embed_evas_window_find(Ewl_Embed_Window *win); Ewl_Embed *ewl_embed_widget_find(Ewl_Widget *w); void ewl_embed_object_cache(Ewl_Embed *e, Evas_Object *obj); Evas_Object *ewl_embed_object_request(Ewl_Embed *e, char *type); =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_enums.h,v retrieving revision 1.69 retrieving revision 1.70 diff -u -3 -r1.69 -r1.70 --- ewl_enums.h 4 Jan 2007 05:09:47 -0000 1.69 +++ ewl_enums.h 7 Feb 2007 04:03:27 -0000 1.70 @@ -254,7 +254,9 @@ EWL_WINDOW_OVERRIDE = 0x10, /**< Window override setting */ EWL_WINDOW_FULLSCREEN = 0x20, /**< Window is fullscreen */ EWL_WINDOW_DIALOG = 0x40, /**< Window has no max and min buttons */ - EWL_WINDOW_MODAL = 0x80 /**< Window is modal */ + EWL_WINDOW_MODAL = 0x80, /**< Window is modal */ + EWL_WINDOW_TRANSIENT = 0x100, /**< Window is transient for */ + EWL_WINDOW_TRANSIENT_FOREIGN = 0x200 /**< Window is transient for */ }; /** =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_window.c,v retrieving revision 1.70 retrieving revision 1.71 diff -u -3 -r1.70 -r1.71 --- ewl_window.c 6 Feb 2007 13:42:17 -0000 1.70 +++ ewl_window.c 7 Feb 2007 04:03:27 -0000 1.71 @@ -418,9 +418,22 @@ DCHECK_PARAM_PTR("win", win); DCHECK_TYPE("win", win, EWL_WINDOW_TYPE); - win->transient = forwin; + win->transient.ewl = forwin; + win->flags &= ~EWL_WINDOW_TRANSIENT_FOREIGN; - if (forwin && win->window) { + /* if there is no forwin remove the transient for state + * and update the window, if it already exists */ + if (!forwin) { + win->flags &= ~EWL_WINDOW_TRANSIENT; + if (win->window) + ewl_engine_window_transient_for(win); + + DRETURN(DLEVEL_STABLE); + } + + win->flags |= EWL_WINDOW_TRANSIENT; + + if (win->window) { if (forwin->window) ewl_engine_window_transient_for(win); else @@ -429,7 +442,28 @@ ewl_window_cb_realize_transient, win); } - else if (win->window) + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +/** + * @param win: window to set transient + * @param forwin: the window to be transient for + * @return Returns no value. + * @brief Sets a window to be transient for another window. + */ +void +ewl_window_transient_for_foreign(Ewl_Window *win, Ewl_Embed_Window *forwin) +{ + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR("win", win); + DCHECK_TYPE("win", win, EWL_WINDOW_TYPE); + + win->transient.foreign = forwin; + win->flags |= EWL_WINDOW_TRANSIENT_FOREIGN; + win->flags &= ~EWL_WINDOW_TRANSIENT; + + if (win->window) ewl_engine_window_transient_for(win); DLEAVE_FUNCTION(DLEVEL_STABLE); @@ -678,9 +712,12 @@ DCHECK_PARAM_PTR("w", w); DCHECK_TYPE("w", w, EWL_WIDGET_TYPE); - if (EWL_WINDOW(w)->transient) + if (EWL_WINDOW(w)->flags & EWL_WINDOW_TRANSIENT) ewl_window_transient_for(EWL_WINDOW(w), - EWL_WINDOW(w)->transient); + EWL_WINDOW(w)->transient.ewl); + else if (EWL_WINDOW(w)->flags & EWL_WINDOW_TRANSIENT_FOREIGN) + ewl_window_transient_for_foreign(EWL_WINDOW(w), + EWL_WINDOW(w)->transient.foreign); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -708,7 +745,7 @@ /* * Make sure the window is still transient for the realized window. */ - if (EWL_WIDGET(win->transient) == w) + if (EWL_WIDGET(win->transient.ewl) == w) ewl_window_transient_for(win, EWL_WINDOW(w)); /* =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_window.h,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- ewl_window.h 4 Jan 2007 05:09:48 -0000 1.27 +++ ewl_window.h 7 Feb 2007 04:03:27 -0000 1.28 @@ -45,7 +45,10 @@ Ewl_Embed embed; /**< Inherits from the Ewl_Embed class */ void *window; /**< Provides a window for drawing */ - Ewl_Window *transient; /**< Window to be transient for */ + union { + Ewl_Window *ewl; + Ewl_Embed_Window *foreign; + } transient; /**< Window to be transient for */ char *title; /**< The current title on the provided window */ char *name; /**< Current name on the provided window */ @@ -73,6 +76,8 @@ void ewl_window_raise(Ewl_Window *win); void ewl_window_lower(Ewl_Window *win); void ewl_window_transient_for(Ewl_Window *win, Ewl_Window *forwin); +void ewl_window_transient_for_foreign(Ewl_Window *win, + Ewl_Embed_Window *forwin); void ewl_window_modal_for(Ewl_Window *win, Ewl_Window *forwin); void ewl_window_keyboard_grab_set(Ewl_Window *win, int grab); int ewl_window_keyboard_grab_get(Ewl_Window *win); ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs