prevent editing of session recovery remembers

find/create new ones in this case
This commit is contained in:
Mike Blumenkrantz 2016-06-20 13:33:27 -04:00
parent a93aadfe01
commit 890008cdf2
1 changed files with 18 additions and 10 deletions

View File

@ -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;