Index: src/fe-gnome/navigation-tree.h =================================================================== --- src/fe-gnome/navigation-tree.h (revision 10169) +++ src/fe-gnome/navigation-tree.h (working copy) @@ -93,6 +93,7 @@ /* Misc. functions. */ void navigation_tree_set_channel_name (NavTree *navtree, struct session *sess); gboolean navigation_tree_server_is_connected (NavTree *navtree, gchar *name); +session *navigation_tree_get_selected_session (gboolean *connected); NavTree *get_navigation_tree (); Index: src/fe-gnome/connect-dialog.c =================================================================== --- src/fe-gnome/connect-dialog.c (revision 10169) +++ src/fe-gnome/connect-dialog.c (working copy) @@ -66,9 +66,16 @@ select = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->server_list)); if (gtk_tree_selection_get_selected (select, &model, &iter)) { + session *s; + gboolean connected; + + s = navigation_tree_get_selected_session(&connected); + if (connected) + s = NULL; + gtk_tree_model_get (model, &iter, 0, &network, -1); if (!navigation_tree_server_is_connected (gui.server_tree, network)) - servlist_connect_by_netname (NULL, network, TRUE); + servlist_connect_by_netname (s, network, TRUE); g_free (network); gtk_widget_destroy (GTK_WIDGET (dialog)); } Index: src/fe-gnome/navigation-tree.c =================================================================== --- src/fe-gnome/navigation-tree.c (revision 10169) +++ src/fe-gnome/navigation-tree.c (working copy) @@ -49,7 +49,6 @@ static void navigation_tree_class_init (NavTreeClass *klass); static void navigation_tree_dispose (GObject *object); static void navigation_tree_finalize (GObject *object); -static session *navigation_tree_get_selected_session (void); static void navigation_tree_update_refs (NavTree *navtree); /* Context menus. */ static void navigation_context (GtkWidget *treeview, session *selected); @@ -789,19 +788,22 @@ gtk_tree_selection_select_path (selection, path); } -static session* -navigation_tree_get_selected_session (void) +session* +navigation_tree_get_selected_session (gboolean *connected) { GtkTreeView *treeview; GtkTreeSelection *select; GtkTreeModel *model; GtkTreeIter iter; session *s; + gboolean temp; treeview = GTK_TREE_VIEW (gui.server_tree); select = gtk_tree_view_get_selection (treeview); if (gtk_tree_selection_get_selected (select, &model, &iter)) { - gtk_tree_model_get (model, &iter, 2, &s, -1); + gtk_tree_model_get (model, &iter, 2, &s, 6, &temp, -1); + if (connected) + *connected = temp; return s; } return NULL; @@ -1525,7 +1527,7 @@ { session *s; - s = navigation_tree_get_selected_session (); + s = navigation_tree_get_selected_session (NULL); if (s) s->server->auto_reconnect (s->server, FALSE, -1); } @@ -1535,7 +1537,7 @@ { session *s; - s = navigation_tree_get_selected_session (); + s = navigation_tree_get_selected_session (NULL); if (s) s->server->disconnect (s, TRUE, -1); } @@ -1545,7 +1547,7 @@ { session *s; - s = navigation_tree_get_selected_session (); + s = navigation_tree_get_selected_session (NULL); if (s) create_channel_list (s); } @@ -1607,7 +1609,7 @@ { session *s; - s = navigation_tree_get_selected_session (); + s = navigation_tree_get_selected_session (NULL); if (s) conversation_panel_clear (CONVERSATION_PANEL (gui.conversation_panel), s); } @@ -1655,7 +1657,7 @@ gboolean autoconnect, active; ircnet *network; - sess = navigation_tree_get_selected_session (); + sess = navigation_tree_get_selected_session (NULL); network = sess->server->network; autoconnect = network->flags & FLAG_AUTO_CONNECT; active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action) ); @@ -1681,7 +1683,7 @@ gboolean autojoin, active; ircnet *network; - sess = navigation_tree_get_selected_session (); + sess = navigation_tree_get_selected_session (NULL); network = sess->server->network; autojoin = channel_is_autojoin (network, sess->channel); active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action) );