aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2013-02-18 08:07:44 +0000
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>2013-02-18 08:07:44 +0000
commit3f7627e738cb9f1b779cd8e02d5a6105b7579194 (patch)
treee85370c7ca3f56ae81132fc4c3f3d44df4866801
parent073cb0e61c16d3839a35aa4e8d7d14537ef8cc4e (diff)
downloadenlightenment-3f7627e738cb9f1b779cd8e02d5a6105b7579194.tar.gz
enlightenment-3f7627e738cb9f1b779cd8e02d5a6105b7579194.tar.xz
enlightenment-3f7627e738cb9f1b779cd8e02d5a6105b7579194.zip
backport imc dialog fix
SVN revision: 84041
-rw-r--r--ChangeLog4
-rw-r--r--NEWS1
-rw-r--r--src/modules/conf_intl/e_int_config_imc.c24
3 files changed, 12 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index 7c7bfea4d..f9dcc7795 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-02-18 Mike Blumenkrantz
+
+ * fixed disable of input methods in input method config dialog
+
2013-02-11 Mike Blumenkrantz
* fixed bug where pointer warping to new clients would start at a random location
diff --git a/NEWS b/NEWS
index 387ea311c..fcc58363d 100644
--- a/NEWS
+++ b/NEWS
@@ -34,6 +34,7 @@ Fixes:
* fixed bug where pointer warping to new clients would start at a random location
* fix crash when locking screen from Start gadget and then activating gadget again
* fixed bug where e_layout would ignore frozen state and crash
+ * fixed disable of input methods in input method config dialog
Changes since 0.17.0:
diff --git a/src/modules/conf_intl/e_int_config_imc.c b/src/modules/conf_intl/e_int_config_imc.c
index def3e4582..734cebe1e 100644
--- a/src/modules/conf_intl/e_int_config_imc.c
+++ b/src/modules/conf_intl/e_int_config_imc.c
@@ -109,8 +109,7 @@ e_int_config_imc(E_Container *con, const char *params __UNUSED__)
static void
_fill_data(E_Config_Dialog_Data *cfdata)
{
- if (e_config->input_method)
- cfdata->imc_current = eina_stringshare_add(e_config->input_method);
+ cfdata->imc_current = eina_stringshare_ref(e_config->input_method);
if (cfdata->imc_current)
{
@@ -119,10 +118,8 @@ _fill_data(E_Config_Dialog_Data *cfdata)
path = e_intl_imc_system_path_get();
if (!strncmp(cfdata->imc_current, path, strlen(path)))
cfdata->fmdir = 1;
- cfdata->imc_disable = 0;
}
- else
- cfdata->imc_disable = 1;
+ cfdata->imc_disable = !cfdata->imc_current;
}
static void *
@@ -179,19 +176,11 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
static int
_basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
- if (cfdata->imc_current)
- {
- if (e_config->input_method)
- {
- eina_stringshare_del(e_config->input_method);
- e_config->input_method = NULL;
- }
-
- if (!cfdata->imc_disable)
- e_config->input_method = eina_stringshare_ref(cfdata->imc_current);
+ eina_stringshare_replace(&e_config->input_method, NULL);
+ if (!cfdata->imc_disable)
+ e_config->input_method = eina_stringshare_ref(cfdata->imc_current);
- e_intl_input_method_set(e_config->input_method);
- }
+ e_intl_input_method_set(e_config->input_method);
e_config_save_queue();
return 1;
@@ -307,6 +296,7 @@ _basic_create_widgets(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_Dia
e_widget_on_change_hook_set(ob, _e_imc_list_change_cb, cfdata);
e_widget_size_min_set(ob, 175, 175);
cfdata->gui.imc_basic_list = ob;
+ _e_imc_imc_toggle(cfdata, NULL);
evas_event_freeze(evas_object_evas_get(ob));
edje_freeze();