diff --git a/src/currentcallview.cpp b/src/currentcallview.cpp index d487583e019470c16100fac027c6b4478866abdd..91be6142b82a0e7ed2d696cfea24867c2b187e4f 100644 --- a/src/currentcallview.cpp +++ b/src/currentcallview.cpp @@ -941,6 +941,9 @@ CppImpl::insertControls() g_signal_connect(scale, "button-release-event", G_CALLBACK(on_quality_button_released), self); } + g_signal_connect(widgets->video_widget, "drag-data-received", + G_CALLBACK(video_widget_on_drag_data_received), nullptr); + auto videoCodecs = (*accountInfo)->codecModel->getVideoCodecs(); if (!videoCodecs.empty()) { bool autoQualityEnabled = videoCodecs.front().auto_quality_enabled; diff --git a/src/video/video_widget.cpp b/src/video/video_widget.cpp index 8c001b8dfb28b8ce4ca52ccc8a94b5cfed65448d..d3d012dc35f49e090c682c9fd71bd2762f291036 100644 --- a/src/video/video_widget.cpp +++ b/src/video/video_widget.cpp @@ -386,12 +386,22 @@ void video_widget_on_drag_data_received(G_GNUC_UNUSED GtkWidget *self, GtkSelectionData *selection_data, G_GNUC_UNUSED guint info, G_GNUC_UNUSED guint32 time, - Call *call) + G_GNUC_UNUSED gpointer data) { - g_return_if_fail(call); + auto* priv = VIDEO_WIDGET_GET_PRIVATE(self); + g_return_if_fail(priv); gchar **uris = gtk_selection_data_get_uris(selection_data); - /* only play the first selection */ + Call *call = nullptr; + for (const auto& activeCall: CallModel::instance().getActiveCalls()) { + if (activeCall->videoRenderer() == priv->remote->renderer) { + call = activeCall; + break; + } + } + + if (!call) return; + if (uris && *uris){ if (auto out_media = call->firstMedia<media::Video>(media::Media::Direction::OUT)) out_media->sourceModel()->setFile(QUrl(*uris)); diff --git a/src/video/video_widget.h b/src/video/video_widget.h index f07f3bae2dfd7329b2c8dccdc37af604bd278f36..a7f6b77357122e95ae524d4e6f74c4f8ada74867 100644 --- a/src/video/video_widget.h +++ b/src/video/video_widget.h @@ -54,7 +54,7 @@ void video_widget_on_drag_data_received (GtkWidget *self, GtkSelectionData *selection_data, guint info, guint32 time, - Call* call); + gpointer data); gboolean video_widget_on_button_press_in_screen_event (VideoWidget *self, GdkEventButton *event, Call* call);