From 4ee7025ab09b606a2556bf9f42c1218d7fd72843 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Fri, 17 Jun 2022 02:46:55 -0400 Subject: add file upload via dnd + rework http --- src/windows/mainwindow.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/windows/mainwindow.cpp') diff --git a/src/windows/mainwindow.cpp b/src/windows/mainwindow.cpp index a6a17c5..17edfa3 100644 --- a/src/windows/mainwindow.cpp +++ b/src/windows/mainwindow.cpp @@ -76,6 +76,7 @@ MainWindow::MainWindow() add(m_main_box); SetupMenu(); + SetupDND(); } void MainWindow::UpdateComponents() { @@ -350,6 +351,22 @@ void MainWindow::SetupMenu() { #endif } +void MainWindow::SetupDND() { + std::vector targets; + targets.emplace_back("text/uri-list", Gtk::TargetFlags(0), 0); + drag_dest_set(targets, Gtk::DEST_DEFAULT_DROP | Gtk::DEST_DEFAULT_MOTION | Gtk::DEST_DEFAULT_HIGHLIGHT, Gdk::DragAction::ACTION_COPY); + signal_drag_data_received().connect([this](const Glib::RefPtr &ctx, int x, int y, const Gtk::SelectionData &selection, guint info, guint time) { + HandleDroppedURIs(selection); + }); +} + +void MainWindow::HandleDroppedURIs(const Gtk::SelectionData &selection) { + for (const auto &uri : selection.get_uris()) { + // not using Glib::get_filename_for_uri or whatever because the conversion is BAD (on windows at least) + m_chat.AddAttachment(Gio::File::create_for_uri(uri)); + } +} + MainWindow::type_signal_action_connect MainWindow::signal_action_connect() { return m_signal_action_connect; } -- cgit v1.2.3