aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--NEWS1
-rw-r--r--src/modules/conf_intl/e_int_config_imc.c24
3 files changed, 13 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index 6254f41c1..05487d8b4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,9 @@
+2013-02-18 Mike Blumenkrantz
+
+ * fixed disable of input methods in input method config dialog
+
2013-02-13 Deon Thomas
+
* Fixed Menu->Applications now only lists valid .desktop files, if the exec is missing it will not be added to the menu list.
2013-02-11 Mike Blumenkrantz
diff --git a/NEWS b/NEWS
index 088932853..9f9514cdf 100644
--- a/NEWS
+++ b/NEWS
@@ -172,3 +172,4 @@ 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
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();