[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gambas-bugtracker] Bug #3196: Allow Clipboard to Cut and Paste items of type x-special/gnome-copied-files


http://gambaswiki.org/bugtracker/edit?object=BUG.3196&from=L21haW4-

Comment #1 by Tony MOREHEN:

Here's how pcmanfm-qt does it (from https://github.com/lxqt/libfm-qt/blob/master/src/utilities.cpp#L116):

void copyFilesToClipboard(const Fm::FilePathList& files) {
    QClipboard* clipboard = QApplication::clipboard();
    QMimeData* data = new QMimeData();
    auto urilist = pathListToUriList(files);

    // Gnome, LXDE, and XFCE
    // Note: the standard text/urilist format uses CRLF for line breaks, but gnome format uses LF only
    data->setData(QStringLiteral("x-special/gnome-copied-files"), QByteArray("copy\n") + urilist.replace("\r\n", "\n"));
    // The KDE way
    data->setData(QStringLiteral("text/uri-list"), urilist);
    // data->setData(QStringLiteral("application/x-kde-cutselection"), QByteArrayLiteral("0"));
    clipboard->setMimeData(data);
}

void cutFilesToClipboard(const Fm::FilePathList& files) {
    QClipboard* clipboard = QApplication::clipboard();
    QMimeData* data = new QMimeData();
    auto urilist = pathListToUriList(files);

    // Gnome, LXDE, and XFCE
    // Note: the standard text/urilist format uses CRLF for line breaks, but gnome format uses LF only
    data->setData(QStringLiteral("x-special/gnome-copied-files"), QByteArray("cut\n") + urilist.replace("\r\n", "\n"));
    // The KDE way
    data->setData(QStringLiteral("text/uri-list"), urilist);
    data->setData(QStringLiteral("application/x-kde-cutselection"), QByteArrayLiteral("1"));
    clipboard->setMimeData(data);
}



----[ Gambas bugtracker-list is hosted by https://www.hostsharing.net ]----