┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2013-08-25Move cursor to begin/end of selection before canceling itChristoph Feck
Makes Left/Right keys consistent with QLineEdit behavior. BUG: 323946 FIXED-IN: 4.11.1 REVIEW: 112256
2013-08-25Fix filename trucation issues in Icons View with maximum number of linesFrank Reininghaus
When the name of a file is too long to be shown inside the maximum number of lines, the last line is elided. However, there were several problems before this commit: (a) "lastTextLine", which contains the text to be elided, was not assigned the complete remaining text, but only the part that would be put into the last line if there were more lines following. This may be less than what would fit into the line because we try to not break the text at random points. (b) QFontMetrics::elidedText() was not given the width that is available for the last line (that would be maxWidth), but only the width that would be occupied by the text if there were more lines following (line.naturalTextWidth()). (c) The variable "nameWidth", which is required to calculate the QRectF that is reserved for the name, was not updated correctly. The result is that the text was sometimes trucated too early (especially if there would be a line break early in the text if we had more lines available), that there may be insufficient space to show the "...", and that the hover/selection rectangle might be too narrow. BUG: 304558 BUG: 321882 FIXED-IN: 4.11.1 REVIEW: 112265
2013-08-24Adjust the size and position of the selection toggle on iconEmmanuel Pescosta
resize (when changing the zoomlevel). BUG: 310412 REVIEW: 112250 FIXED-IN: 4.11.1
2013-08-24Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-08-24Make determining the mime type faster for foldersFrank Reininghaus
KFileItem::determineMimeType() not only determines the mime type, but also the icon. For folders, it looks for a .directory file inside the folder, where a custom icon might be stored. This can take quite a bit of time and cause the problem that some folder's type still appears to be "unknown" when the view is shown. We can work around this problem by caching the folder mime type in a static QString and applying to to all folders, which can be identified easily with KFileItem::isDir(), BUG: 321710 FIXED-IN: 4.11.1 REVIEW: 111830
2013-08-24Delay the deletion of the role editor as long as possibleFrank Reininghaus
This should prevent crashes that can be caused if the view is closed in a nested event loop that is run from the role editor. BUG: 322969 FIXED-IN: 4.11.1 REVIEW: 111988
2013-08-24Make use of the "resort all items timer" in KFileItemModel::slotRefreshItemsEmmanuel Pescosta
to avoid too much expensive resorting calls, in case of many refresh items signals. Followup to patch 111146 CCBUG: 303873 CCBUG: 299565 BUG: 323789 FIXED-IN: 4.11.1 REVIEW: 111195
2013-08-24Replaced the loop to fill m_sizeHintCache with QSizeF() by a simple ↵Emmanuel Pescosta
m_sizeHintCache.fill() in KItemListSizeHintResolver::clearCache(). REVIEW: 112179
2013-08-20Merge remote-tracking branch 'origin/KDE/4.11'Christoph Feck
2013-08-20Fix crash when failing to get audio CD block deviceChristoph Feck
CCBUG: 314544 REVIEW: 112117
2013-08-18dolphin: Show full KFileItem statusbar text with hovered folders tooFabio D'Urso
This patch changes the status bar text dolphin shows when a folder is hovered. It now shows full folder info, eg: "mydir (folder, symlink to /opt/mydir") instead of: "mydir" This is consistent with dolphin's behavior on regular files, and DolphinPart already does that (DolphinPart::slotRequestItemInfo has no special cases for folders). CCBUG: 260717 REVIEW: 112106
2013-08-18dolphin: Show full file info in statusbar when only one file is selectedFabio D'Urso
The purpose of this change is to give the user a chance to see hover file information if it doesn't fit in the status bar, by allowing to click on the file and hover on the status bar. As it's now possible to have status bar texts starting with "<qt>", DolphinPart::updateStatusBar() must escape strings. Otherwise, filenames such as "<qt>Tes<font color=red>t" would be rendered as HTML data in konqueror's status bar when selected. BUG: 260717 FIXED-IN: 4.12.0 REVIEW: 111934
2013-08-16Cut the ropes between DolphinMainWindow and DolphinNewFileMenu. Error ↵Emmanuel Pescosta
handling is now done via signals. REVIEW: 111989
2013-08-15SVN_SILENT made messages (.desktop file)l10n daemon script
2013-08-15Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-08-15Make sure that the sort order is correct after renamingFrank Reininghaus
KFileItemModel::setData() should not only cause a resorting when the sort role is changed. The name is always used as a fallback if the sort role of multiple files is equal, therefore, renaming a file can change the correct order of the files even if the files are not sorted by "name". Unit test included. BUG: 323518 FIXED-IN: 4.11.1 REVIEW: 111721
2013-08-14Do not store default values in QHash<QByteArray, QVariant>Frank Reininghaus
Storing values which are equivalent to default-constructed QVariants does not make much sense because QHash::value returns the same value even if the corresponding key is not found in the hash. This commit reduces Dolphin's memory consumption in large folders by up to 7.3% (tested a folder with 100,000 files in Details View) and reduces the time required for loading a folder. BUG: 323517 FIXED-IN: 4.11.1 REVIEW: 111922
2013-08-14Fix slow scrolling when hidden files or symbolic links are shownFrank Reininghaus
The problem was that we drawed the overlays using KIconLoader, which can be very slow, every time an item appeared on the screen. This commit makes sure that not only the icon, but the icon including overlays is cached in QPixmapCache. Therefore, the overlay drawing is done just once for each icon+overlays combination. For previews, the overlay drawing is done in KFileItemModelRolesUpdater just after the preview is received. BUG: 310662 BUG: 314339 FIXED-IN: 4.11.1 REVIEW: 111956
2013-08-14Fix crash when disabling "Show in groups"Frank Reininghaus
The problem was that items are removed from m_visibleGroups while a QMutableHashIterator iterates over this hash, such that the iterator can become invalid. The solution is to use a QHashIterator instead, which takes a copy of the hash. Therefore, it is not affected if m_visibleGroups is modified in any way. BUG: 323248 FIXED-IN: 4.11.1 REVIEW: 111919
2013-08-08Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-08-05dolphin: Escape text in statusbar tooltipFabio D'Urso
This fixes the same issue as 4450f8449af91e491636728a4669e2a9e27b49fa, but for the status bar's tooltip text. BUG: 323170 FIXED-IN: 4.11.0 REVIEW: 111836
2013-08-05DolphinPart: Use Qt::convertFromPlainText instead of Qt::escape for filenamesFabio D'Urso
Unlike escape, convertFromPlainText preserves whitespace sequences CCBUG: 321778 REVIEW: 111835
2013-08-04Introduce a new signal "groupsChanged"Frank Reininghaus
Sometimes when items are renamed, the order of the items in the directory is not affected, but the groups still change (simple example: with files a, b, c, e, rename "c" to "d"). At the moment, we always emit the itemsMoved signal in such a case to make sure that the view is updated. However, it would be preferable if this signal was not emitted because it can trigger some quite expensive operations which are not needed at all. This commit introduces a new signal groupsChanged and modifies KFileItemModel and KItemListView such that these classes make use of it. Some unit tests for the new functionality are included as well. Thanks to Emmanuel Pescosta for finding a latent bug in the code which was triggered by this change and fixed in 998954db6d53999dfa75d380cbb4ca3111589f66. REVIEW: 111808
2013-08-04Fix possible out of range error inKItemListSizeHintResolver::itemsMovedFrank Reininghaus
The function assumes implicitly that the moved range always starts with the index 0. This is indeed the case at the moment, but it might make sense to change that in the future. This commit prevents that we get an out of range problem then. Thanks to Emmanuel Pescosta for finding this problem, see https://git.reviewboard.kde.org/r/111808/
2013-08-04Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-08-04Add some unit tests for grouping in KFileItemModelFrank Reininghaus
Hopefully, this will prevent regressions in the future. REVIEW: 111807
2013-08-04Make KFileItemModelTest fasterFrank Reininghaus
The 500 ms timeout before items are resorted does not make much sense in the unit test. Removing this delay makes the test run much faster.
2013-08-04SVN_SILENT made messages (.desktop file)l10n daemon script
2013-07-31Do not enable the "Create New..." menu when a search is finishedFrank Reininghaus
BUG: 321577 FIXED-IN: 4.12.0 REVIEW: 111805
2013-07-29Do not allow that panels are dragged out of the main windowFrank Reininghaus
This feature might have been useful in some cases, but it's most likely not useful enough to justify that we accept the bugs that it causes. Even though some of these bugs are not Dolphin's fault at all, they cause serious problems for users in some cases. I'm pushing this commit to master only because I prefer to not push such behavior changes to 4.11 at this point of the release cycle. BUG: 288629 CCBUG: 322299 CCBUG: 322812 FIXED-IN: 4.12.0 REVIEW: 111692
2013-07-29Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-07-29When pasting a folder and expanding it, do not select its childrenFrank Reininghaus
Thanks to Emmanuel for pointing out a problem with my first patch. BUG: 322965 FIXED-IN: 4.11.0 REVIEW: 111722
2013-07-29Don't let HTML-like filenames be interpreted as HTML stringsFabio D'Urso
So that filenames that look like HTML don't get fancy-formatted when we show info about them (i.e. on hover) This patch fixes the same issue in two places: - dolphin, by setting Qt::PlainText on the status bar's label - konqueror, by escaping setStatusBarText strings emitted by DolphinPart BUG: 321778 FIXED-IN: 4.11.0 REVIEW: 111746
2013-07-28Do not convert a KUrl to a QString and back againFrank Reininghaus
This small change saves a lot of CPU cycles when the items are resorted. REVIEW: 111700
2013-07-26Don't open .desktop files with http:/https: urls in Dolphin,Emmanuel Pescosta
open these urls in the default browser instead. BUG: 283475 BUG: 318217 FIXED-IN: 4.11.0 REVIEW: 111674
2013-07-25Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-07-25Fix maximum value for scroll bar when deleting items in Details ViewFrank Reininghaus
The problem was that the view heigt minus the header height was subtracted from maximumScrollOffset() to determine the maximum value of the scroll offset of the top of the view. However, the top of the view is the part that is hiden behind the header. Therefore, the full view height must be subtracted from maximumScrollOffset. The remaining bits of bug 319951 were fixed by other recent commits. Thanks to Emmanuel Pescosta for helping to track down the problem! BUG: 319951 FIXED-IN: 4.11.0 REVIEW: 111486
2013-07-25Prevent that removing items can cause icons to overlapFrank Reininghaus
When items are removed, new items may become visible because of that. This includes (a) Items *behind* the removed range. KItemListView may try to create their widgets at their "imaginary" old positions and move them to the new position with an animation. (b) Items *before* the removed range, if the deletion causes the view to scroll up. In that case, the "imaginary" old position and the new position was equal, but KItemListView still tried to determine the "old" position by adding the number of removed items to the index. The result was that the widgets were created at completely wrong positions, and no animation was started to fix this. Thanks to Emmanuel for helping to find the cause of this bug! BUG: 302373 FIXED-IN: 4.11.0 REVIEW: 111630
2013-07-25SVN_SILENT made messages (.desktop file)l10n daemon script
2013-07-25SVN_SILENT made messages (.desktop file)l10n daemon script
2013-07-24Make sure that widgets are initialized when changing the view modeFrank Reininghaus
The problem was that DolphinItemListView overrides the virtual function onItemLayoutChanged() without calling the base class implementation. Therefore, KStandardItemListView::updateLayoutOfVisibleItems(), which calls initializeItemListWidget(), is never called. This patch refactors the "change item layout"/"supports item expanding" code a bit to make it more robust and fix the problem that the view looks "messed up" when switching from Details View without expandable folders to Icons View. I'm only pushing this patch to master (going to be KDE 4.12). The patch is a bit too intrusive for the KDE/4.11 branch for my taste at this point of the release cycle, and the bug is not a real showstopper. If it works well in master, one could consider backporting it to a 4.11.x bug fix release. Thanks to Emmanuel Pescosta for helping to analyze this issue. BUG: 302703 REVIEW: 111632 FIXED-IN: 4.12.0
2013-07-22Do not try to smooth-scroll past the end of the viewFrank Reininghaus
KItemListSmoothScroller::scrollTo(qreal position) did not check if 'position' is a valid value. Even if the view is scrolled to the bottom already, it tried to scroll further and activated "smooth scrolling" when the mouse wheel is used. Because it never got out of the "smooth scrolling" state then, it got confused when changing the directory, and restoring the correct scroll offset could fail. BUG: 322212 FIXED-IN: 4.11.0 REVIEW: 111557
2013-07-22Fix "truncated header" in Details View with non-Oxygen stylesFrank Reininghaus
The code for painting the "empty header" was inconsistent with the headers of the other columns, which is probably the reason why the other styles got confused a) No QStyleOptionHeader is used b) Even if an empty header must be drawn, the last column is drawn with the option QStyleOptionHeader::End. According to Christoph, it still doesn't work with the Skulpture style, but it seems that the patch does at least not make things worse. BUG: 301800 FIXED-IN: 4.11.0 REVIEW: 111608
2013-07-18Fix build if HAVE_NEPOMUK is not definedFrank Reininghaus
We really have to make nepomuk-core and nepomuk-widgets a hard dependency in the framworks era.
2013-07-18Overwrite the changed role value with an empty QVariant,Emmanuel Pescosta
because the nepomuk roles provider doesn't overwrite it when the property value list is empty. BUG: 322348 REVIEW: 111505 FIXED-IN: 4.11.0
2013-07-12Load unknown icons for items just before showing items in the viewFrank Reininghaus
Rather than loading many icons (without full mime type determination) in advance, we make sure that an item has an icon just before it is shown in the view. This makes sure that no "unknown" icons are shown unnecessarily, and saves some resources. REVIEW: 111396
2013-07-05Fix O(N^2) complexity issue in KItemListView::slotItemsRemoved()Frank Reininghaus
If many item ranges are removed, KItemListView::slotItemsRemoved() could take very long because it looped over all items after the first removed one for every removed range, even if most of these items are not visible at all. This commit improves this by just looping over the visible items (whose number is limited by the window size) for each range. Test case (for very large N): touch {1..N}.png touch {1..N}.jpg (wait until all files are shown in the view) rm *.jpg REVIEW: 111398
2013-07-05Keep the "item size hints" of moved itemsFrank Reininghaus
It's quite expensive to re-calculate them, so we should better just move them to the correct position, rather than throwing them away. REVIEW: 111399
2013-07-04Make sure that KItemListSizeHintResolver is always consistentFrank Reininghaus
This was the root cause of bug 317827. The assert tried to make sure that we never access KItemListSizeHintResolver from KItemListViewLayouter inside the loop over the item ranges. This would be dangerous because it might be in an inconsistent state - the removed item ranges were removed step by step, so accessing the item size hints before the operation was finished could lead to wrong results. The solution is to insert/remove all item ranges immediately. A nice side effect is that there are no sources of O(N^2) complexity in KItemListSizeHintResolver any more if many item ranges are inserted/removed. BUG: 317827 FIXED-IN: 4.11.0 REVIEW: 111382
2013-07-02Fix crash when dropping URLs on the URL navigator's drop down menusFrank Reininghaus
The problem was that the files were copied/moved inside the nested event loop of the drag, which caused problems if the "File exists" dialog was shown. The solution is to make the copy/move operation delayed, such that it is executed in the main event loop. Note that dropping files on these menus does apparently not work at the moment when using the Oxygen style (see bug 310016). BUG: 192139 BUG: 256338 BUG: 293220 BUG: 309076 FIXED-IN: 4.11.0 REVIEW: 111273