The problem was that we erased an iterator from the list and then
incremented it. This can lead to problems (namely, random crashes) if
the iterator pointed to the last list element.
Added curly brackets around DolphinApplication creation and execution, to make sure it is deleted before "return 0;" is
called. This might prevent random crashes due to the de-allocation chain in Qt at exit.
CCBUG: 311092
Only select a created item and make it 'current' in the active view
The 'make the new item the current one in all views' issue has been
around for quite some time, the unexpected selection was a recent
regression caused by commit b25059e803e7eed54f0593605a4066882d63bce2.
Thanks to Jaime Torres for finding the regression early and for testing
this patch!
Prevent crashes caused by nested event loops run when renaming inline
When renaming inline and starting a drag or invoking the context menu,
a nested event loop will be run. If the role editor loses focus and
emits roleEditingFinished(), we must prevent that deleteLater() is
called because this would delete the role editor inside a nested event
loop which is run from one of its own functions. We would get a crash
when returning from that event loop otherwise.
Only store the HomeUrl in dolphinrc if it is not the user's home folder
This fixes the problem that copying the dolphinrc from another user
results in Dolphin starting up in a folder that might wither not be
accessible or not exist at all.
Remove workaround for bug 304986 which is not needed in master
Commit ea6a7c09a0067aaf62ef2de69b5a2c4967676768 added a workaround for
bug 304986 (high CPU usage because KFileItemModelRolesUpdater requests
previews for the same files over and over again after, e.g., a rename
operation). The KDE/4.10 branch of kdelibs contains the real fix for
this issue (b8f64ca3f4b6311519c21046031d66d9d0a570c6), so the workaround
can be removed.
Workaround for failed comparison of items in KFileItemModelRolesUpdater
The real fix is in the KDE/4.10 branch of kdelibs
(commit b8f64ca3f4b6311519c21046031d66d9d0a570c6). We work around the
problem that the KFileItem that a preview has been requested for is
different from the KFileItems in the sets m_pendingVisibleItems and
m_pendingInvisibleItems by refreshing those sets when we detect that
the bug has been triggered.
Alex Fiestas [Tue, 23 Oct 2012 23:21:02 +0000 (01:21 +0200)]
Show MTP devices in case support for it is installed
Basically adds a conditional that in case that mtp kioslave is installed
devices with MTP are added to the predicated.
REVIEW: 106651
(cherry picked from commit a09a23795050be4ad6e2c987614cb28096030cc8)
Find out the main window by calling the parent widget's window() member
KFileItemModel calls the dir lister's setMainWindow() method to make
sure that the dir lister caches authentication data. However, the method
used to determine the main window (qApp->activeWindow()) is not
guaranteed to yield the DolphinMainWindow or the KonqMainWindow. In
particular, if "Split View" is enabled in Dolphin's settings dialog, the
active window is the dialog, and when it is closed, any later access to
the stored pointer leads to a crash.
A better method is to verify that the model's parent is a QWidget and
then use this widget's window(). I had to make a small modification in
DolphinMainWindow to make sure that it also works correctly when the
view is split (the new view container had been created with a 0 parent
previously).
I tested it in Dolphin and Konqueror and verified that the "main window"
passed to the dir lister is really the application's main window.
Redo the fix for CTRL+Tab not working when using Dolphin's filemanagement part
in Konqueror. The original fix, commit 4f7ed2b, prevents drag and drop from
working correctly.
Some speed improvements in KFileItemModelRolesUpdater:
- Use QSet.erase() instead of QSet.remove() => no expensive Rehashing
- Get rid of += in sortAndResolvePendingRoles()
- Some other small changes
Add a new config option for the icon size in the Places Panel
To change the icon size in the Places Panel to, e.g., 60 pixels, add
the following lines to $KDEHOME/share/config/dolphinrc :
[PlacesPanel]
IconSize=60
A value of -1 means that the standard "Small" size should be used
(which has been the default before this commit).
It is planned to add an "Icon Size" submenu to the context menu of the
Places Panel in KDE 4.10, but we cannot do this in the 4.9 branch
because of the string freeze.
Added the license header in kitemlistviewaccessible.*
Accessibility headers not included when QT_NO_ACCESSIBILITY defined
Removed unnecessary debug statement
Fixes Bug 305783 - dragging a file over a directory #c4
does not expand the dir => Bug discovered: When you drag a
item onto a folder-view-item and then move it away
instantly before the autoactivation event is triggered
(After 750ms), the folder will be opened anyway.
That commit, which disregarded roles with empty text for the row number
calculation in Icons View, caused the problem that icons might jump
around while information was retrieved asynchronously because previously
empty roles could get a non-empty value, and the corresponding items
would need an additional row in the view.
Thanks to Hrvoje Senjan for testing this feature in master and reporting
this issue early, such that we could fix it quickly and prevent that
other users suffer from this bug!
Patch 106381 Comment #3:
When "Open folders during drag operations" is enabled, two things happen, both in the DolphinView and in the Folders Panel:
1) When hovering a folder that can be expanded (this is the case for folders with sub-folders in the Folders Panel and in the DolphinView if in Details View mode), toggle its "expanded" state.
2) When hovering a folder that can not be expanded (i.e., a folder without sub-folders or any folder in Icons or Compact View), open this folder in the DolphinView via the KItemListController's itemActivated(int) signal.
The bug described in bug 293200 comment 3 is that 1) is always wanted, but 2) is not wanted for the Folders Panel.
Prevent unwanted URL changes when using the Terminal Panel
The root cause of the problem was that TerminalPanel's member
m_konsolePartCurrentDirectory, which is used to determine in
TerminalPanel::sendCdToTerminal(QString& dir) if the Konsole part's
directory is aleady 'dir', such that issuing the 'cd' command is not
needed, was updated too late, namely when the part's
currentDirectoryChanged(QString) signal was received, which may be up
to one second after the 'cd' command.
When changing the directory from "dir1" to "dir2" and going back to
the "dir1" in less than one second (either by using the 'Back' action
or by activating a tab which still had "dir1" open), the 'cd dir1'
command was therefore suppressed because the Terminal Panel still
thought that "dir1" was the current directory in the part. However,
the directory of the part was actually "dir2", and when the
currentDirectoryChanged(QString) signal was received from the part, the
view's URL was set to "dir2" as well.
User feedback has shown that many users used the dialog for renaming
files. Since the dialog is still used when renaming multiple files, I
think there is no good reason not to use it for renaming single files
as well if the user wants.
Note that we cannot add an option in the settings dialog due to string
freeze issues. For the time being, you will have to add the line
"RenameInline=false" to the [General] section of
$KDEHOME/share/config/dolphinrc.
Fixes Bug 305783 - dragging a file over a directory #c4
does not expand the dir => Bug discovered: When you drag a
item onto a folder-view-item and then move it away
instantly before the autoactivation event is triggered
(After 750ms), the folder will be opened anyway.
Fix possible crash when refreshing the view while renaming inline
It is not reproducible on every machine for me, but it seems that it can
happen that DolphinView's slot slotRoleEditingFinished() is invoked
after the items have already been removed from the model. In that case,
we have to return from the slot immediately to prevent a crash.
Fix possible crash in KStandardItemListWidget::paint()
According to the backtrace in the bug report, it is possible that
KStandardItemListWidget::paint() is called if the hash m_textInfo has
not been initialised. The widget's index must be -1 in this case, see
KStandardItemListWidget::triggerCacheRefreshing(). It looks like this
can only happen if the item is about to be removed from the view, see
KItemListView::slotItemsRemoved().
I could not reproduce the crash, so I'm not sure why exactly this
happens, but this commit should at least prevent the crash.
Do not show '-' for additional info which is not available for an item
I'm only backporting the removal of the '-', not the update for the
line number calculation in Icons View, because this is the safest part
of the patch and also the one that fixes the most annoying part of the
bug.