From 4220612684a150f87c9ed95b9aa51962db52a105 Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Sat, 24 Nov 2012 05:08:25 +0100 Subject: Delete FileMetaDataToolTip using deleteLater() to prevent crashes The problem was that Qt tried to deliver an 'Enter' event to the dangling pointer that once pointed to the tool tip. Many thanks to G. Christ for finding a way to reproduce this crash! BUG: 282257 BUG: 310579 FIXED-IN: 4.9.4 --- src/views/tooltips/tooltipmanager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/views/tooltips/tooltipmanager.cpp b/src/views/tooltips/tooltipmanager.cpp index d948bfd86..bd6948363 100644 --- a/src/views/tooltips/tooltipmanager.cpp +++ b/src/views/tooltips/tooltipmanager.cpp @@ -104,7 +104,9 @@ void ToolTipManager::hideToolTip() if (m_fileMetaDataToolTip) { m_fileMetaDataToolTip->hide(); - delete m_fileMetaDataToolTip; + // Do not delete the tool tip immediately to prevent crashes when + // QCoreApplication tries to deliver an 'Enter' event to it, see bug 310579. + m_fileMetaDataToolTip->deleteLater(); m_fileMetaDataToolTip = 0; } } -- cgit v1.3 From 2099f4a0c5d36fda8d20c54a5b001dacebe0e6db Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Sat, 24 Nov 2012 04:52:13 +0100 Subject: Update the 'isCut' state of items when cutting non-files, e.g., text BUG: 304615 FIXED-IN: 4.9.4 REVIEW: 107390 --- src/kitemviews/private/kfileitemclipboard.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/kitemviews/private/kfileitemclipboard.cpp b/src/kitemviews/private/kfileitemclipboard.cpp index 6d6085641..c5f88194d 100644 --- a/src/kitemviews/private/kfileitemclipboard.cpp +++ b/src/kitemviews/private/kfileitemclipboard.cpp @@ -55,12 +55,8 @@ KFileItemClipboard::~KFileItemClipboard() void KFileItemClipboard::updateCutItems() { const QMimeData* mimeData = QApplication::clipboard()->mimeData(); - const QByteArray data = mimeData->data("application/x-kde-cutselection"); - const bool isCutSelection = (!data.isEmpty() && data.at(0) == QLatin1Char('1')); - if (isCutSelection) { - m_cutItems = KUrl::List::fromMimeData(mimeData).toSet(); - emit cutItemsChanged(); - } + m_cutItems = KUrl::List::fromMimeData(mimeData).toSet(); + emit cutItemsChanged(); } KFileItemClipboard::KFileItemClipboard() : -- cgit v1.3 From ba3e70ffe075bfee6cf172b4f0405709f1ad1200 Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Mon, 19 Nov 2012 22:06:29 +0100 Subject: Clear the previous selection when selecting pasted or dropped items This fixes a recent regression in the 4.9 branch caused by b25059e803e7eed54f0593605a4066882d63bce2. BUG: 310365 FIXED-IN: 4.9.4 REVIEW: 107389 --- src/views/dolphinview.cpp | 8 ++++++++ src/views/dolphinview.h | 1 + 2 files changed, 9 insertions(+) (limited to 'src') diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 13db9896e..70a739427 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -101,6 +101,7 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : m_scrollToCurrentItem(false), m_restoredContentsPosition(), m_selectedUrls(), + m_clearSelectionBeforeSelectingNewItems(false), m_versionControlObserver(0) { m_topLayout = new QVBoxLayout(this); @@ -1218,6 +1219,12 @@ void DolphinView::updateViewState() if (!m_selectedUrls.isEmpty()) { KItemListSelectionManager* selectionManager = m_container->controller()->selectionManager(); + + if (m_clearSelectionBeforeSelectingNewItems) { + selectionManager->clearSelection(); + m_clearSelectionBeforeSelectingNewItems = false; + } + QSet selectedItems = selectionManager->selectedItems(); for (QList::iterator it = m_selectedUrls.begin(); it != m_selectedUrls.end(); ++it) { @@ -1535,6 +1542,7 @@ void DolphinView::markPastedUrlsAsSelected(const QMimeData* mimeData) destUrls << destination; } markUrlsAsSelected(destUrls); + m_clearSelectionBeforeSelectingNewItems = true; } void DolphinView::updateWritableState() diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index 7d8e8b76a..f756de05e 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -759,6 +759,7 @@ private: QPoint m_restoredContentsPosition; QList m_selectedUrls; // Used for making the view to remember selections after F5 + bool m_clearSelectionBeforeSelectingNewItems; VersionControlObserver* m_versionControlObserver; -- cgit v1.3