summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-06-20 13:33:27 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-06-20 16:04:10 -0400
commit890008cdf2357be069e7cff44e3b030c7e67f2aa (patch)
treeff9a0ab284e93792a98c365288ab521c1c055403
parenta93aadfe010d7eefd8d2dfd453a44b62aa23644f (diff)
downloadenlightenment-890008cdf2357be069e7cff44e3b030c7e67f2aa.tar.gz
prevent editing of session recovery remembers
find/create new ones in this case
-rw-r--r--src/bin/e_int_client_remember.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/bin/e_int_client_remember.c b/src/bin/e_int_client_remember.c
index 3de60006bd..5a63a30e1a 100644
--- a/src/bin/e_int_client_remember.c
+++ b/src/bin/e_int_client_remember.c
@@ -23,6 +23,7 @@ struct _E_Config_Dialog_Data
{
E_Client *client;
E_Remember *rem;
+ E_Remember *backup_rem;
/*- BASIC -*/
int mode;
int warned;
@@ -141,6 +142,9 @@ _fill_data(E_Config_Dialog_Data *cfdata)
else
rem = cfdata->rem;
+ if (ec && rem && (rem->apply & E_REMEMBER_APPLY_UUID))
+ cfdata->backup_rem = rem = e_remember_find_usable(ec);
+
if (rem)
{
if (rem->name && rem->name[0])
@@ -316,10 +320,11 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata)
if (cfdata->client)
{
- if (!cfdata->applied && cfdata->client->remember)
+ E_Remember *rem = cfdata->backup_rem ?: cfdata->client->remember;
+ if (!cfdata->applied && rem)
{
- e_remember_unuse(cfdata->client->remember);
- e_remember_del(cfdata->client->remember);
+ e_remember_unuse(rem);
+ e_remember_del(rem);
e_config_save_queue();
}
@@ -413,7 +418,7 @@ _basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata
{
/* Actually take our cfdata settings and apply them in real life */
E_Client *ec = cfdata->client;
- E_Remember *rem = ec->remember;
+ E_Remember *rem = cfdata->backup_rem ?: ec->remember;
if (cfdata->mode == MODE_NOTHING)
{
@@ -421,8 +426,8 @@ _basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata
{
e_remember_unuse(rem);
e_remember_del(rem);
+ e_config_save_queue();
}
- e_config_save_queue();
return 1;
}
@@ -431,7 +436,8 @@ _basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata
rem = e_remember_new();
if (rem)
{
- ec->remember = rem;
+ if ((!ec->remember) || (!(ec->remember->apply & E_REMEMBER_APPLY_UUID)))
+ ec->remember = rem;
cfdata->applied = 0;
}
else
@@ -450,7 +456,8 @@ _basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata
rem->apply = cfdata->mode;
rem->apply_first_only = 0;
- e_remember_use(rem);
+ if (ec->remember == rem)
+ e_remember_use(rem);
e_remember_update(ec);
cfdata->applied = 1;
e_config_save_queue();
@@ -463,7 +470,7 @@ _advanced_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfd
E_Client *ec = cfdata->client;
E_Remember *rem;
- if (ec) rem = ec->remember;
+ if (ec) rem = cfdata->backup_rem ?: ec->remember;
else rem = cfdata->rem;
if (!rem)
@@ -624,8 +631,9 @@ _advanced_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfd
{
_check_matches(rem, 1);
rem->keep_settings = 0;
- cfdata->client->remember = rem;
- e_remember_update(cfdata->client);
+ if ((!ec->remember) || (!(ec->remember->apply & E_REMEMBER_APPLY_UUID)))
+ ec->remember = rem;
+ e_remember_update(ec);
cfdata->applied = 1;
}
rem->keep_settings = cfdata->remember.keep_settings;