Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGiovanni Panozzo <giovanni@panozzo.it>2022-09-13 15:08:48 +0300
committerGiovanni Panozzo <giovanni@panozzo.it>2022-09-13 15:08:48 +0300
commitc2886762b8e396f89af442b0fb68a7b01fa7e711 (patch)
tree438dae7d86d7ca6d0c1bc065db6c6a78d9ed9585 /src
parentde14afb225f996090eb9100f4a4244f50a260a6c (diff)
Improve rcw close
Diffstat (limited to 'src')
-rw-r--r--src/rcw.c15
-rw-r--r--src/remmina_protocol_widget.c2
2 files changed, 13 insertions, 4 deletions
diff --git a/src/rcw.c b/src/rcw.c
index c15d23b64..28e4e5f37 100644
--- a/src/rcw.c
+++ b/src/rcw.c
@@ -642,23 +642,30 @@ gboolean rcw_delete(RemminaConnectionWindow *cnnwin)
RemminaConnectionWindowPriv *priv = cnnwin->priv;
GtkNotebook *notebook = GTK_NOTEBOOK(priv->notebook);
GtkWidget *dialog;
- gint i, n;
+ gint i, n, nopen;
if (!REMMINA_IS_CONNECTION_WINDOW(cnnwin))
return TRUE;
if (cnnwin->priv->on_delete_confirm_mode != RCW_ONDELETE_NOCONFIRM) {
n = gtk_notebook_get_n_pages(notebook);
- if (n > 1) {
+ nopen = 0;
+ /* count all non-closed connections */
+ for(i = 0; i < n; i ++) {
+ RemminaConnectionObject *cnnobj = rcw_get_cnnobj_at_page(cnnwin, i);
+ if (!remmina_protocol_widget_is_closed((RemminaProtocolWidget *)cnnobj->proto))
+ nopen ++;
+ }
+ if (nopen > 1) {
dialog = gtk_message_dialog_new(GTK_WINDOW(cnnwin), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
- _("Are you sure you want to close %i active connections in the current window?"), n);
+ _("Are you sure you want to close %i active connections in the current window?"), nopen);
i = gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
if (i != GTK_RESPONSE_YES)
return FALSE;
}
- else {
+ else if (nopen == 1) {
if (remmina_pref.confirm_close) {
dialog = gtk_message_dialog_new(GTK_WINDOW(cnnwin), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
diff --git a/src/remmina_protocol_widget.c b/src/remmina_protocol_widget.c
index 2cc150146..6174d61af 100644
--- a/src/remmina_protocol_widget.c
+++ b/src/remmina_protocol_widget.c
@@ -480,6 +480,8 @@ void remmina_protocol_widget_close_connection(RemminaProtocolWidget *gp)
/* Connection is already closed by the plugin, but
* rcw is asking to close again (usually after an error panel)
*/
+ /* Clear the current error, or "disconnect" signal func will reshow a panel */
+ remmina_protocol_widget_set_error(gp, NULL);
g_signal_emit_by_name(G_OBJECT(gp), "disconnect");
return;
}