As per some irc discussion, Display a confirm dialog when user selects to

use composite, but not composite engine is running.


SVN revision: 33291
This commit is contained in:
Christopher Michael 2007-12-29 22:59:51 +00:00
parent 16738014c3
commit 2c1e7a85b4
1 changed files with 54 additions and 6 deletions

View File

@ -5,7 +5,9 @@ static void _fill_data(E_Config_Dialog_Data *cfdata);
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 @@ struct _E_Config_Dialog_Data
int use_composite;
int evas_engine_default;
Evas_Object *o_composite;
};
EAPI E_Config_Dialog *
@ -20,7 +23,7 @@ e_int_config_engine(E_Container *con, const char *params __UNUSED__)
{
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 @@ static void *
_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 @@ _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)
{
{
e_config->use_composite = cfdata->use_composite;
e_config->evas_engine_default = cfdata->evas_engine_default;
e_config_save_queue();
@ -80,7 +83,10 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
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 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
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);
}
@ -100,3 +106,45 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
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);
}