diff options
author | bhatman1441 <blackhat1441@protonmail.com> | 2023-06-16 18:34:04 +0300 |
---|---|---|
committer | bhatman1441 <blackhat1441@protonmail.com> | 2023-06-16 18:34:04 +0300 |
commit | fa20967b583581020e9478233fe68466722eb043 (patch) | |
tree | 45ab96266a1836a54365c3e37fb0c7ce582fd3e0 /src | |
parent | 7407cc3a27eb25ba4ddddeab565f67fd688324ed (diff) |
Remove ssh key file strings from remmina file if check box is unchecked
Diffstat (limited to 'src')
-rw-r--r-- | src/remmina_file_editor.c | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/src/remmina_file_editor.c b/src/remmina_file_editor.c index 477e5196f..f75beef1b 100644 --- a/src/remmina_file_editor.c +++ b/src/remmina_file_editor.c @@ -1433,15 +1433,28 @@ static void remmina_file_editor_save_ssh_tunnel_tab(RemminaFileEditor *gfe) priv->remmina_file, "ssh_tunnel_auth", ssh_tunnel_auth); - remmina_file_set_string( + + // If box is unchecked for private key and certfile file choosers, + // set the string to NULL in the remmina file + if (gtk_widget_get_sensitive(priv->ssh_tunnel_privatekey_chooser)) { + remmina_file_set_string( priv->remmina_file, "ssh_tunnel_privatekey", (priv->ssh_tunnel_privatekey_chooser ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(priv->ssh_tunnel_privatekey_chooser)) : NULL)); - - remmina_file_set_string( - priv->remmina_file, - "ssh_tunnel_certfile", - (priv->ssh_tunnel_certfile_chooser ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(priv->ssh_tunnel_certfile_chooser)) : NULL)); + } + else { + remmina_file_set_string(priv->remmina_file, "ssh_tunnel_privatekey", NULL); + } + + if (gtk_widget_get_sensitive(priv->ssh_tunnel_certfile_chooser)) { + remmina_file_set_string( + priv->remmina_file, + "ssh_tunnel_certfile", + (priv->ssh_tunnel_certfile_chooser ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(priv->ssh_tunnel_certfile_chooser)) : NULL)); + } + else { + remmina_file_set_string(priv->remmina_file, "ssh_tunnel_certfile", NULL); + } remmina_file_set_string( priv->remmina_file, @@ -1549,10 +1562,14 @@ static GError *remmina_file_editor_update_settings(RemminaFileEditor * gfe, g_hash_table_iter_init(&iter, priv->setting_widgets); while (g_hash_table_iter_next(&iter, &key, &widget)) { + // We don't want to save or validate grayed-out settings. - if (!gtk_widget_get_sensitive(GTK_WIDGET(widget))) { + // If widget is a file chooser, it was made not sensitive because + // the box was unchecked. In that case, don't continue. The + // relevant file strings will be set to NULL in the remmina file. + if (!gtk_widget_get_sensitive(GTK_WIDGET(widget)) && !GTK_IS_FILE_CHOOSER(widget)) { g_debug("Grayed-out setting-widget '%s' will not be saved.", - gtk_widget_get_name(widget)); + gtk_widget_get_name(widget)); continue; } @@ -1597,6 +1614,11 @@ static GError *remmina_file_editor_update_settings(RemminaFileEditor * gfe, } else if (GTK_IS_FILE_CHOOSER(widget)) { gchar *value = gtk_widget_get_sensitive(GTK_WIDGET(widget)) ? gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget)) : NULL; + if (!gtk_widget_get_sensitive(GTK_WIDGET(widget))) { + remmina_file_set_string(priv->remmina_file, (gchar *)key, value); + continue; + } + if (!remmina_file_editor_validate_settings(gfe, (gchar *)key, value, &err)) { // Error while validating! // err should be set now. |