Enlightenment CVS committal Author : devilhorns Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/conf_engine Modified Files: e_int_config_engine.c Log Message: As per some irc discussion, Display a confirm dialog when user selects to use composite, but not composite engine is running. =================================================================== RCS file: /cvs/e/e17/apps/e/src/modules/conf_engine/e_int_config_engine.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_int_config_engine.c 13 Aug 2007 06:02:24 -0000 1.3 +++ e_int_config_engine.c 29 Dec 2007 22:59:51 -0000 1.4 @@ -5,7 +5,9 @@ static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); - +static void _cb_composite_change(void *data, Evas_Object *obj); +static void _cb_confirm_yes(void *data); +static void _cb_confirm_no(void *data); struct _E_Config_Dialog_Data { @@ -13,6 +15,7 @@ int use_composite; int evas_engine_default; + Evas_Object *o_composite; }; EAPI E_Config_Dialog * @@ -20,7 +23,7 @@ { E_Config_Dialog *cfd; E_Config_Dialog_View *v; - + if (e_config_dialog_find("E", "_config_engine_dialog")) return NULL; v = E_NEW(E_Config_Dialog_View, 1); if (!v) return NULL; @@ -40,7 +43,7 @@ _create_data(E_Config_Dialog *cfd) { E_Config_Dialog_Data *cfdata; - + cfdata = E_NEW(E_Config_Dialog_Data, 1); _fill_data(cfdata); cfdata->cfd = cfd; @@ -62,7 +65,7 @@ static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) -{ +{ e_config->use_composite = cfdata->use_composite; e_config->evas_engine_default = cfdata->evas_engine_default; e_config_save_queue(); @@ -80,7 +83,10 @@ o = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("General Settings"), 0); - ob = e_widget_check_add(evas, _("Enable Composite"), &(cfdata->use_composite)); + ob = e_widget_check_add(evas, _("Enable Composite"), + &(cfdata->use_composite)); + cfdata->o_composite = ob; + e_widget_on_change_hook_set(ob, _cb_composite_change, cfdata); e_widget_framelist_object_append(of, ob); e_widget_list_object_append(o, of, 1, 1, 0.5); @@ -91,7 +97,7 @@ if (!strcmp("SOFTWARE", l->data)) engine = E_EVAS_ENGINE_SOFTWARE_X11; else if (!strcmp("GL", l->data)) engine = E_EVAS_ENGINE_GL_X11; else if (!strcmp("XRENDER", l->data)) engine = E_EVAS_ENGINE_XRENDER_X11; - else continue; + else continue; ob = e_widget_radio_add(evas, _(l->data), engine, rg); e_widget_framelist_object_append(of, ob); } @@ -99,4 +105,46 @@ e_dialog_resizable_set(cfd->dia, 0); return o; +} + +static void +_cb_composite_change(void *data, Evas_Object *obj) +{ + E_Config_Dialog_Data *cfdata = NULL; + + if (!(cfdata = data)) return; + if (cfdata->use_composite) + { + if (!ecore_x_screen_is_composited(0)) + { + /* pop dialog */ + e_confirm_dialog_show(_("Enable Composite Support ?"), + "enlightenment/engine", + _("You have chosen to enable composite " + "support,<br>but your current screen does " + "not support composite.<br><br>" + "Are you sure you wish to enable composite support ?"), + NULL, NULL, _cb_confirm_yes, _cb_confirm_no, + cfdata, cfdata, NULL, NULL); + } + } +} + +static void +_cb_confirm_yes(void *data) +{ + E_Config_Dialog_Data *cfdata = NULL; + + if (!(cfdata = data)) return; + cfdata->use_composite = 1; +} + +static void +_cb_confirm_no(void *data) +{ + E_Config_Dialog_Data *cfdata = NULL; + + if (!(cfdata = data)) return; + cfdata->use_composite = 0; + e_widget_check_checked_set(cfdata->o_composite, 0); } ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs