[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/apps
From: David Faure <faure () kde ! org>
Date: 2009-02-25 11:47:39
Message-ID: 1235562459.355552.6180.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 931496 by dfaure:
Restore support for pasting clipboard data (e.g. text) into a file, like konq-kde3 could do.
CCMAIL: peter.penz@gmx.at
M +2 -34 dolphin/src/dolphinview.cpp
M +2 -0 konqueror/src/konqmainwindow.cpp
M +37 -10 lib/konq/konq_operations.cpp
M +8 -0 lib/konq/konq_operations.h
--- trunk/KDE/kdebase/apps/dolphin/src/dolphinview.cpp #931495:931496
@@ -1043,30 +1043,7 @@
QPair<bool, QString> DolphinView::pasteInfo() const
{
- QPair<bool, QString> ret;
- QClipboard* clipboard = QApplication::clipboard();
- const QMimeData* mimeData = clipboard->mimeData();
-
- KUrl::List urls = KUrl::List::fromMimeData(mimeData);
- if (!urls.isEmpty()) {
- // disable the paste action if no writing is supported
- KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url());
- ret.first = KonqFileItemCapabilities(KFileItemList() << item).supportsWriting();
-
- if (urls.count() == 1) {
- const KFileItem item(KFileItem::Unknown, KFileItem::Unknown, urls.first(), true);
- ret.second = item.isDir() ? i18nc("@action:inmenu", "Paste One Folder") :
- i18nc("@action:inmenu", "Paste One File");
-
- } else {
- ret.second = i18ncp("@action:inmenu", "Paste One Item", "Paste %1 Items", urls.count());
- }
- } else {
- ret.first = false;
- ret.second = i18nc("@action:inmenu", "Paste");
- }
-
- return ret;
+ return KonqOperations::pasteInfo(url());
}
void DolphinView::setTabsForFilesEnabled(bool tabsForFiles)
@@ -1439,16 +1416,7 @@
void DolphinView::pasteToUrl(const KUrl& url)
{
- QClipboard* clipboard = QApplication::clipboard();
- const QMimeData* mimeData = clipboard->mimeData();
-
- const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
- if (KonqMimeData::decodeIsCutSelection(mimeData)) {
- KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, url);
- clipboard->clear();
- } else {
- KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, url);
- }
+ KonqOperations::doPaste(this, url);
}
void DolphinView::updateZoomLevel(int oldZoomLevel)
--- trunk/KDE/kdebase/apps/konqueror/src/konqmainwindow.cpp #931495:931496
@@ -3259,6 +3259,8 @@
return KParts::MainWindow::eventFilter( obj, ev );
}
+// Only called when m_bLocationBarConnected, i.e. when the combobox has focus.
+// The rest of the time, the part handles the cut/copy/paste actions.
void KonqMainWindow::slotClipboardDataChanged()
{
const QMimeData *data = QApplication::clipboard()->mimeData();
--- trunk/KDE/kdebase/apps/lib/konq/konq_operations.cpp #931495:931496
@@ -21,6 +21,7 @@
*/
#include "konq_operations.h"
+#include "konq_fileitemcapabilities.h"
#include "konqmimedata.h"
#include <ktoolinvocation.h>
@@ -126,17 +127,12 @@
void KonqOperations::doPaste( QWidget * parent, const KUrl & destUrl, const QPoint &pos )
{
- // move or not move ?
- bool move = false;
- const QMimeData *data = QApplication::clipboard()->mimeData();
- if ( data->hasFormat( "application/x-kde-cutselection" ) ) {
- move = KonqMimeData::decodeIsCutSelection( data );
- kDebug(1203) << "move (from clipboard data) = " << move;
- }
+ QClipboard* clipboard = QApplication::clipboard();
+ const QMimeData *data = clipboard->mimeData();
+ const bool move = KonqMimeData::decodeIsCutSelection(data);
KIO::Job *job = KIO::pasteClipboard( destUrl, parent, move );
- if ( job )
- {
+ if (job) {
KonqOperations * op = new KonqOperations( parent );
KIO::CopyJob * copyJob = static_cast<KIO::CopyJob *>(job);
KIOPasteInfo * pi = new KIOPasteInfo;
@@ -527,7 +523,7 @@
break;
}
}
-
+
if ( !equalDestination )
popup.addAction(popupMoveAction);
}
@@ -790,4 +786,35 @@
return static_cast<QWidget *>( parent() );
}
+QPair<bool, QString> KonqOperations::pasteInfo(const KUrl& targetUrl)
+{
+ QPair<bool, QString> ret;
+ QClipboard* clipboard = QApplication::clipboard();
+ const QMimeData* mimeData = clipboard->mimeData();
+
+ const bool canPasteData = mimeData->hasText(); // TODO KIO::canPasteMimeSource(mimeData)
+ KUrl::List urls = KUrl::List::fromMimeData(mimeData);
+ if (!urls.isEmpty() || canPasteData) {
+ // disable the paste action if no writing is supported
+ KFileItem item(KFileItem::Unknown, KFileItem::Unknown, targetUrl);
+ ret.first = KonqFileItemCapabilities(KFileItemList() << item).supportsWriting();
+
+ if (urls.count() == 1) {
+ const KFileItem item(KFileItem::Unknown, KFileItem::Unknown, urls.first(), true);
+ ret.second = item.isDir() ? i18nc("@action:inmenu", "Paste One Folder") :
+ i18nc("@action:inmenu", "Paste One File");
+
+ } else if (!urls.isEmpty()) {
+ ret.second = i18ncp("@action:inmenu", "Paste One Item", "Paste %1 Items", urls.count());
+ } else {
+ ret.second = i18nc("@action:inmenu", "Paste Clipboard Contents");
+ }
+ } else {
+ ret.first = false;
+ ret.second = i18nc("@action:inmenu", "Paste");
+ }
+
+ return ret;
+}
+
#include "konq_operations.moc"
--- trunk/KDE/kdebase/apps/lib/konq/konq_operations.h #931495:931496
@@ -89,6 +89,14 @@
static void doPaste( QWidget * parent, const KUrl & destUrl, const QPoint &pos = QPoint() );
/**
+ * Returns the state of the paste action:
+ * first is whether the action should be enabled
+ * second is the text for the action
+ * @since 4.3
+ */
+ static QPair<bool, QString> pasteInfo(const KUrl& targetUrl);
+
+ /**
* Empty the trash
*/
static void emptyTrash( QWidget* parent );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic