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_Client *client;
E_Remember *rem; E_Remember *rem;
E_Remember *backup_rem;
/*- BASIC -*/ /*- BASIC -*/
int mode; int mode;
int warned; int warned;
@ -141,6 +142,9 @@ _fill_data(E_Config_Dialog_Data *cfdata)
else else
rem = cfdata->rem; 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)
{ {
if (rem->name && rem->name[0]) 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->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_unuse(rem);
e_remember_del(cfdata->client->remember); e_remember_del(rem);
e_config_save_queue(); 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 */ /* Actually take our cfdata settings and apply them in real life */
E_Client *ec = cfdata->client; E_Client *ec = cfdata->client;
E_Remember *rem = ec->remember; E_Remember *rem = cfdata->backup_rem ?: ec->remember;
if (cfdata->mode == MODE_NOTHING) 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_unuse(rem);
e_remember_del(rem); e_remember_del(rem);
e_config_save_queue();
} }
e_config_save_queue();
return 1; return 1;
} }
@ -431,7 +436,8 @@ _basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata
rem = e_remember_new(); rem = e_remember_new();
if (rem) if (rem)
{ {
ec->remember = rem; if ((!ec->remember) || (!(ec->remember->apply & E_REMEMBER_APPLY_UUID)))
ec->remember = rem;
cfdata->applied = 0; cfdata->applied = 0;
} }
else 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 = cfdata->mode;
rem->apply_first_only = 0; rem->apply_first_only = 0;
e_remember_use(rem); if (ec->remember == rem)
e_remember_use(rem);
e_remember_update(ec); e_remember_update(ec);
cfdata->applied = 1; cfdata->applied = 1;
e_config_save_queue(); 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_Client *ec = cfdata->client;
E_Remember *rem; E_Remember *rem;
if (ec) rem = ec->remember; if (ec) rem = cfdata->backup_rem ?: ec->remember;
else rem = cfdata->rem; else rem = cfdata->rem;
if (!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); _check_matches(rem, 1);
rem->keep_settings = 0; rem->keep_settings = 0;
cfdata->client->remember = rem; if ((!ec->remember) || (!(ec->remember->apply & E_REMEMBER_APPLY_UUID)))
e_remember_update(cfdata->client); ec->remember = rem;
e_remember_update(ec);
cfdata->applied = 1; cfdata->applied = 1;
} }
rem->keep_settings = cfdata->remember.keep_settings; rem->keep_settings = cfdata->remember.keep_settings;