diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c index 7e69cabc3bb514c2a4bbd528752779117caa30ed..5e65e88c0b166e24dbca9ea8e128eb067a58aaa6 100644 --- a/sflphone-client-gnome/src/actions.c +++ b/sflphone-client-gnome/src/actions.c @@ -837,12 +837,18 @@ sflphone_get_current_codec_name() } void -sflphone_detach_participant() +sflphone_detach_participant(const gchar* callID) { DEBUG("sflphone detach participant from conference"); - callable_obj_t * selectedCall = calltab_get_selected_call(current_calls); - dbus_detach_participant(selectedCall); + if(callID == NULL) { + callable_obj_t * selectedCall = calltab_get_selected_call(current_calls); + dbus_detach_participant(selectedCall->_callID); + } + else { + dbus_detach_participant(callID); + } + } void diff --git a/sflphone-client-gnome/src/actions.h b/sflphone-client-gnome/src/actions.h index 975aead4c2640429a9ef747c8d7087b30302c631..e984ac68dd1f9b9f3d22d31753705b6c08b6110d 100644 --- a/sflphone-client-gnome/src/actions.h +++ b/sflphone-client-gnome/src/actions.h @@ -186,4 +186,6 @@ void sflphone_join_participant(const gchar* sel_callID, const gchar* drag_callID void sflphone_add_participant(const gchar* callID, const gchar* confID); +void sflphone_detach_participant(const gchar* callID); + #endif diff --git a/sflphone-client-gnome/src/contacts/calltree.c b/sflphone-client-gnome/src/contacts/calltree.c index db5b7aa20c86d62c93980edc5a5f71737c778404..2cf12eaaf0b6c6c418230bd10104ed65aa364ba8 100644 --- a/sflphone-client-gnome/src/contacts/calltree.c +++ b/sflphone-client-gnome/src/contacts/calltree.c @@ -926,6 +926,7 @@ static void drag_end_cb(GtkWidget * widget, GdkDragContext * context, gpointer d else if(selected_type == A_CONFERENCE && dragged_type == A_CALL) { // TODO: dragged a conference on a single call + sflphone_add_participant(dragged_call_id, selected_call_id); } else if(selected_type == A_CONFERENCE && dragged_type == A_CONFERENCE) diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c index f0c939b560378415432387f8730a6ce73e0716b8..fce7413f832ff3301a03dee02d851b7c86a2918d 100644 --- a/sflphone-client-gnome/src/dbus/dbus.c +++ b/sflphone-client-gnome/src/dbus/dbus.c @@ -1339,15 +1339,15 @@ dbus_add_participant(const gchar* callID, const gchar* confID) void -dbus_detach_participant(const callable_obj_t * c) +dbus_detach_participant(const gchar* callID) { - DEBUG("dbus_detach_participant %s\n", c->_callID); + DEBUG("dbus_detach_participant %s\n", callID); GError* error = NULL; org_sflphone_SFLphone_CallManager_detach_participant( callManagerProxy, - c->_callID, + callID, &error); if(error) { diff --git a/sflphone-client-gnome/src/toolbar.c b/sflphone-client-gnome/src/toolbar.c index 862c8ef04be2e2f1d6d807f7f6b9ea32dfde29da..683018ca7eac0b3dae9b335db05dd736a3c68a7e 100644 --- a/sflphone-client-gnome/src/toolbar.c +++ b/sflphone-client-gnome/src/toolbar.c @@ -32,7 +32,7 @@ is_inserted( GtkWidget* button ) static void detach_button( GtkWidget *widget UNUSED, gpointer data UNUSED) { - sflphone_detach_participant(); + sflphone_detach_participant(NULL); } /**