Hi Thanks for the patch. Once we agreed to push this feature, we need to make it better.
1. Do we support this feature only on windows creation time? So no support for runtime theme change? On Thu, Dec 11, 2014 at 2:46 PM, Cedric BAIL <[email protected]> wrote: > > cedric pushed a commit to branch master. > > > http://git.enlightenment.org/core/elementary.git/commit/?id=e07061c5d5a9b1ec79278da82208ad486937b873 > > commit e07061c5d5a9b1ec79278da82208ad486937b873 > Author: Cedric BAIL <[email protected]> > Date: Thu Dec 11 06:43:53 2014 +0100 > > elm_win: make it possible to specify alpha window in the theme > directly. > --- > src/lib/elm_win.c | 78 > ++++++++++++++++++++++++++++++++++++------------------- > 1 file changed, 52 insertions(+), 26 deletions(-) > > diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c > index 6d19710..9f70de5 100644 > --- a/src/lib/elm_win.c > +++ b/src/lib/elm_win.c > @@ -209,6 +209,8 @@ struct _Elm_Win_Data > Eina_Bool skip_focus : 1; > Eina_Bool floating : 1; > Eina_Bool noblank : 1; > + Eina_Bool theme_alpha : 1; > + Eina_Bool application_alpha : 1; > }; > > static const char SIG_DELETE_REQUEST[] = "delete,request"; > @@ -345,6 +347,38 @@ elm_process_state_get(void) > return _elm_process_state; > } > > +static void > +_elm_win_apply_alpha(Eo *obj, Elm_Win_Data *sd) > +{ > + Eina_Bool enabled; > + > + enabled = sd->theme_alpha | sd->application_alpha; > + if (sd->img_obj) > + { > + evas_object_image_alpha_set(sd->img_obj, enabled); > + ecore_evas_alpha_set(sd->ee, enabled); > + } > + else > + { > +#ifdef HAVE_ELEMENTARY_X > + if (sd->x.xwin) > + { > + if (enabled) > + { > + if (!ecore_x_screen_is_composited(0)) > + elm_win_shaped_set(obj, enabled); > + else > + TRAP(sd, alpha_set, enabled); > + } > + else > + TRAP(sd, alpha_set, enabled); > + _elm_win_xwin_update(sd); > + } > + else > +#endif > + TRAP(sd, alpha_set, enabled); > + } > +} > > static void > _elm_win_state_eval(void *data EINA_UNUSED) > @@ -591,7 +625,8 @@ _shot_do(Elm_Win_Data *sd) > flags = _shot_flags_get(sd); > ee = ecore_evas_buffer_new(1, 1); > o = evas_object_image_add(ecore_evas_get(ee)); > - evas_object_image_alpha_set(o, ecore_evas_alpha_get(sd->ee)); > + evas_object_image_alpha_set(o, > + sd->theme_alpha | sd->application_alpha); > evas_object_image_size_set(o, w, h); > evas_object_image_data_set(o, pixels); > if (!evas_object_image_save(o, file, key, flags)) > @@ -3516,6 +3551,20 @@ _elm_win_constructor(Eo *obj, Elm_Win_Data *sd, > const char *name, Elm_Win_Type t > eo_do(obj, > eo_event_callback_call(ELM_INTERFACE_ATSPI_WINDOW_EVENT_WINDOW_CREATED, > NULL)); > } > > Here, > + if (edje_object_data_get(sd->layout, "alpha")) > + { > + const char *s = edje_object_data_get(sd->layout, "alpha"); > + if (s) > + { > 2. This duplicated calls look intended. Does this really help? > + if (!strcmp(s, "1") || > + !strcmp(s, "true")) > + { > + sd->application_alpha = 1; > + _elm_win_apply_alpha(obj, sd); > + } > + } > + } > + > evas_object_show(sd->layout); > } > > @@ -3773,31 +3822,8 @@ _elm_win_shaped_get(Eo *obj EINA_UNUSED, > Elm_Win_Data *sd) > EOLIAN static void > _elm_win_alpha_set(Eo *obj, Elm_Win_Data *sd, Eina_Bool enabled) > { > - if (sd->img_obj) > - { > - evas_object_image_alpha_set(sd->img_obj, enabled); > - ecore_evas_alpha_set(sd->ee, enabled); > - } > - else > - { > -#ifdef HAVE_ELEMENTARY_X > - if (sd->x.xwin) > - { > - if (enabled) > - { > - if (!ecore_x_screen_is_composited(0)) > - elm_win_shaped_set(obj, enabled); > - else > - TRAP(sd, alpha_set, enabled); > - } > - else > - TRAP(sd, alpha_set, enabled); > - _elm_win_xwin_update(sd); > - } > - else > -#endif > - TRAP(sd, alpha_set, enabled); > - } > + sd->application_alpha = enabled; > + _elm_win_apply_alpha(obj, sd); > } > > EOLIAN static Eina_Bool > > -- > > Thanks. Daniel Juyung Seo (SeoZ) ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
