Make sure that m_selectionToggle is not 0 before calling deleteLater()
Commit 1938ad54d4ee640f04d24bad3b690095bc9b8668 replaced delete by
deleteLater(). However, the latter cannot be used safely with null
pointers. This commit adds a safety check in order to make sure that
we do not get a crash.
Thanks to Christoph Feck for pointing out this issue.
Use deleteLater() to delete the selection toggle in KItemListWidget
This patch should make a crash with a backtrace as provided in the bug
report impossible. I'm not sure if this would really prevent the crash
- it looks like the actual cause of the problem could be in
QGraphicsView or anywhere else, but it's hard to tell because the bug
was reported just once and does not seem reproducible. But I'm pretty
sure that this change doesn't make anything worse.
This commit is analogous to 5cf8941ac789e47da70fe466033f45df9af1a3fa,
but the problem existed since the frameworks port was started and was
not obvious because the QString -> KUrl/QUrl port was done implicitly
when calling KIO::rename(oldPath, newPath, KIO::HideProgressInfo).
These were caused by 86e31084ced8ba4875a6128f91ec2ca3d6df7a31 - note
that the correct replacement for KUrl(fileName) is
QUrl::fromLocalFile(fileName), and that calling the const function
urlA.adjusted(QUrl::RemoveFilename) only has an effect if the return
value is taken.
Arjun AK [Sat, 1 Nov 2014 11:11:29 +0000 (16:41 +0530)]
Enable KRun's script execution prompt.
This commit enables KRun's script/desktop file execution prompts,
which is shown when the user launches an executable script or a
desktop file. This is done so as to prevent the user from accidentaly
executing programs. A checkbox to enable or disable the prompts is also
being added to the preferences window
Make the view/Terminal Panel synchronization less error-prone
The previous solution could cause problems if the user navigates to a
different URL in one view, and then activates another split view very
quickly: the new active view might be switched to the same URL as the
first view, which is unwanted.
To fix this problem, we record a history of "cd" commands that Dolphin
sends to the Terminal Panel in a queue. If a currentDirectoryChanged
signal is received, and the new terminal directory is "dir", this patch
does the following:
1. If the queue is empty, change the view URL to "dir".
2. Otherwise, take the queue's head, and check if it is equal to
"dir". If that is the case, ignore the signal and return.
3. Go back to step 1.
This ensures that every currentDirectoryChange signal that is caused by
a "cd" that was sent from Dolphin to the terminal is ignored.
Connect to the currentDirectoryChanged signal after the shell setup
This fixes the problem that the view URL may be reset to the Home URL
when opening the Terminal Panel while browsing a remote URL. Moreover,
it fixes crashes that can occur when the signal is received during the
shell setup if the DolphinMainWindow does not have a valid
m_activeViewContainer yet.
David Faure [Tue, 21 Oct 2014 18:44:37 +0000 (20:44 +0200)]
Dolphin: port to KIO::pasteInfoText().
DolphinContextMenu::createPasteAction used to be precise about destination
("Paste To Folder"), while now it's precise about the source (what to paste).
It was decided that this was more useful and consistent anyway.
* Fixed wrong signal-slot connection between KUrlNavigator and DolphinMainWindow
* Use the new syntax to connect to DolphinMainWindow::openNewTab from the url
navigator and from folders panel (removed the unused optional parameters from
openNewTab and openNewActivatedTab)
Make it possible to open archives via the command line
This used to work before afcf8961f6666a912e0e6e5072a000837f7cf6aa (only
if "Open archives as folder" was enabled in the settings though). The
reason why this commit broke it is that the mime type of a file is not
determined automatically any more before asking
KProtocolManager::protocolForArchiveMimetype for the correct protocol,
so the determination of the protocol may fail.
Keeping the isMimeTypeKnown() check in DolphinView::openItemAsFolderUrl
still makes sense, because it prevents GUI blocking if the user tries
to open many files at the same time.
Therefore, we now call determineMimeType() in
DolphinViewContainer::slotUrlIsFileError(const KUrl&) and then try to
determine the correct protocol and use it to open the archive in the
view, rather than hoping that slotItemActivated(item) will do the right
thing.
Only keep the active view container connected with the main window, all inactive
view containers are disconnected. Changing the connections is done whenever the
active view has been changed, so we can always guarantee that the active view is
connected.
The problem with restoring saved sessions is, that we create a new view container
in DolphinTabPage::restoreState() when split view was used in the previous session,
but this view container isn't connected to the main window slots because
DolphinMainWindow::connectViewSignals() is not called for this container. This leads
to these strange problems: no context menu, ...