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

Reply via email to