┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2013-10-26Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-10-26Fix broken view state restorationFrank Reininghaus
The fix for bug 161385 (which was about Dolphin still showing an empty view if a device that had been unmounted earlier was clicked in the Places Panel) caused a regression: the view state (current item, scroll position, Details View expansion state) was not restored any more when going "Back". The reason is that "m_view->reload()" in DolphinViewContainer::setUrl(const KUrl& newUrl) was always executed just after entering a directory, and that command overwrites this information. Distinguishing between "change URL" and "reload the view" works better if it's done in DolphinMainWindow instead of DolphinViewContainer. BUG: 326039 FIXED-IN: 4.11.3 REVIEW: 113290
2013-10-16Two small simplifications in KItemListViewLayouterFrank Reininghaus
1. Remove the unneeded variable rowCount. 2. Simplify the calculation of the member m_maximumScrollOffset. We can just use the current value of "y" because this is the offset that the next row would have. REVIEW: 113233
2013-10-16Abort loading the current URL if the user presses EscapeFrank Reininghaus
BUG: 323181 FIXED-IN: 4.12.0 REVIEW: 113234
2013-10-16Make it build with QT_STRICT_ITERATORSKevin Ottens
2013-10-15Merge remote-tracking branch 'origin/KDE/4.11'David Faure
2013-10-13Fix crash when triggereing the "Compare files" action via D-BusFrank Reininghaus
If the number of selected items is not two, Dolphin disables this action. However, it is still possible to trigger it via D-Bus, and this could cause a crash in DolphinMainWindow::compareFiles() because this function did not test at all if there are really two items selected. This patch adds such a check and simplifies the code in that function. BUG: 325517 FIXED-IN: 4.11.3
2013-10-13Files passed as arguments: Ignore unsupported filesErik Hahn
With this patch, Dolphin ignores all files passed to it that it can't Also, archives are now opened inside Dolphin so it can be used as an archive manager at least for local files. If the user tries to open a remote archive Dolphin still opens it externally; I have observed that if it receives one as an argument, it will display a pseudo-folder that contains only said archive. So having it set as the archive handler is still broken, but in a less annoying way. CCBUG: 318683 REVIEW: 113191 FIXED-IN: 4.11.3
2013-10-12Moved all the extension code into dolphinpart_ext.*Dawit Alemayehu
REVIEW: 113132
2013-10-09Use the icon size from KItemListStyleOption for the width and height of theEmmanuel Pescosta
expansion area instead of KIconLoad::SizeSmall. BUG: 325543 REVIEW: 113169 FIXED-IN: 4.12
2013-10-07Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-10-07Make the code that removes items from KFileItemModel more robustFrank Reininghaus
When we remove items from the model, we called the function KFileItemModel::removeItems(const KFileItemList&, RemoveItemsBehavior). This function then looked up the indexes of the items using the hash m_items. This is wasteful in the situations when the indexes of the removed items are known in advance (like when an expanded folder is collapsed in Details View), and it can cause trouble if one item is contained in the model multiple times (can happen when searching, and a file both matches the search and is a child of a folder that matches the search). Even if expanding folders in the search results list might not be particularly useful most of the time, it makes sense to make the model more robust to prevent crashes and other unexpected behavior in such situations. This patch makes the following changes to achieve that goal: * Change the argument of removeItems() from KFileItemList to KItemRangeList. To make this work, the "look the indexes up in m_items" code is moved from that function to slotItemsDeleted(). In the other places where removeItems() is called, the indexes are calculated directly (which is not more difficult than determining the removed items as a KFileItemList, if one considers that we needed the function childItems(KFileItem) for that, which is not needed any more with this patch). * Also removeFilteredChildren() takes a KItemRangeList now. Rather than putting the parent KFileItems into a QSet for O(1) lookup (which prevents O(N^2) worst case behavior for the entire function), it uses a QSet<ItemData*> now, which should even be more efficient (hashing a pointer is cheaper than hashing a KFileItem/KUrl). BUG: 324371 BUG: 325359 FIXED-IN: 4.12.0 REVIEW: 113070
2013-10-07Reload the view if a previously unmounted device is mounted againFrank Reininghaus
The problem was that DolphinViewContainer::setUrl(newUrl) was ignored if newUrl is equal to the URL which is shown in the view already. The new approach is to reload the view in that method if it is empty, to make sure that we do not miss that a previously unmounted device has been re-mounted. Thanks to Grigoriadis Grigoris for analyzing the root cause of this issue! BUG: 161385 FIXED-IN: 4.11.3
2013-10-07Include "Space" in the keyboard search stringFrank Reininghaus
Before this commit, we only added pressed keys to the search string if they have no other meaning. This means that files containing a Space in their name could not be searched because Ctrl+Space toggles the selection state of the current item, and Space alone selects the current item. After this commit, Space is added to the search string if (a) the key press did not have any other effect, i.e., if Ctrl was not pressed, and the current item is selected already, and (b) a keyboard search has been started already (to prevent unexpected effects when pressing Space accidentally - I think that it's rather uncommon to have files whose names start with a Space - and to make the unit test simpler). I modified the unit test of KItemListController, which did not test keyboard search yet. This uncovered a small problem in KItemListController::slotChangeCurrentItem() when NoSelection mode is used. It's not really relevant for anything that is executed inside Dolphin, but I still fixed it to make the unit test happy. BUG: 324479 FIXED-IN: 4.11.3 REVIEW: 113071
2013-10-02Save memory and time in KFileItemModel by lazy-loading the "ItemData"Frank Reininghaus
To reduce unnecessary memory comsumption and CPU usage, we only fill the QHash<QByteArray, QVariant> if the methods data(int) or setData(int) are called for the corresponding index, or the data is necessary for sorting the model. According to my tests, this patch reduces the memory usage when loading a folder with 100,000 items by 17% in Icons View, and by 26% in Details View. REVIEW: 112725
2013-10-01Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-10-01Add unit test for the calculation of "name" groups with expanded itemsFrank Reininghaus
This prevents a possible regression that would have happened with the first version of https://git.reviewboard.kde.org/r/112725/ The problem was that isChildItem(int index) would return "false" incorrectly when the QHash for that item was not initialized yet. The grouping code would then try to read the "text" from the empty QHash, which yielded an empty QString, and then accessing the first character of that string caused a crash.
2013-09-29Show the right version states for expanded items.Emmanuel Pescosta
BUG: 267171 FIXED-IN: 4.11.3 REVIEW: 112980
2013-09-29Make sure that removeExpandedItems() also removes filtered itemsFrank Reininghaus
This fixes the problem that filtered child items in Details View may reappear when switching the view mode and the clearing the filter. BUG: 325344 REVIEW: 112962 FIXED-IN: 4.11.3
2013-09-27SVN_SILENT made messages (.desktop file)l10n daemon script
2013-09-27SVN_SILENT made messages (.desktop file)l10n daemon script
2013-09-17Move KItemRange to its own headerFrank Reininghaus
Also factor out the code that transforms a sorted list of ints to a KItemRangeList. This removes some duplicated code from KFileItemModel. Note that overriding operator<<() in KItemRangeList was necessary because it's not a typedef for QList<KItemRange>, but a class derived from that now, and some code fails to compile if the return type of that function is QList<KItemRange> and not KItemRangeList. REVIEW: 112728
2013-09-14Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-09-14Make preview loading faster when scrollingFrank Reininghaus
KFileItemListView notifies KFileItemModelRolesUpdater of changes of the visible index range and the icon size with a delay, to prevent that expensive operations are triggered repeatedly, and that scrolling feels sluggish because the GUI thread is blocked by icon loading. This patch ensures that the "long" delay of 300 ms is only used when the zoom level is changed, and the "short" delay if only the visible index range has changed. Thanks to Christoph Feck for helping to analyze this problem! BUG: 322093 FIXED-IN: 4.11.2 REVIEW: 112580
2013-09-12Remove "Copy text" statusbar contextmenu entryKai Uwe Broulik
REVIEW: 112355
2013-09-12Fix Bug 311099 - View the underscore when using Ctrl + PagDownEmmanuel Pescosta
Take the style option vertical/horizontal margin into account for the calculation of the new scroll offset. Thanks to Frank for pointing out two other problems with "Page Up/Down" and providing a better way to fix these problems. :) BUG: 311099 FIXED-IN: 4.11.2 REVIEW: 112678
2013-09-09Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-09-09Always sort items correctly when the refreshItems() signal is receivedFrank Reininghaus
When sorting by, e.g., "Size", and the name is used as a fallback because there are multiple files with the same size, the refreshItems signal that is received when a file's name is changed either with the dialog or outside the current view did not cause the view to be resorted after commit d70a4811807776966c3241a72121242f4d1eaee8. This patch fixes it. BUG: 324713 FIXED-IN: 4.11.2 REVIEW: 112561
2013-09-09Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
The most recent commit from the KDE/4.11 branch (new unit test) had to be modified slightly due to the changed signal emission when resorting the model changes only the groups, and not the order of the items (groupsChaged instead of itemsMoved).
2013-09-09Test if the groups are updated correctly when items are refreshedFrank Reininghaus
This unit test will hopefully prevent regressions in the future. It is the first part of https://git.reviewboard.kde.org/r/112561/.
2013-09-07Make expandedParentsCount() work without accessing the data hashFrank Reininghaus
The idea is that we no longer assume that the "expandedParentsCount" for each item will be stored in the QHash. It is only accessed for items which are expanded, and which are not top-level items (i.e., which have an expandedParentsCount > 1). Some unit tests are added to improve the coverage of the affected code. REVIEW: 112562
2013-09-05Nothing special, just a little bit of code cleanup in ↵Emmanuel Pescosta
KItemListViewLayouter::doLayout(). Make use of QSizeF::transpose() and simplify the m_itemInfos usage. REVIEW: 112535
2013-09-05Fix Bug 296970 - split view wrong behavior with search tabEmmanuel Pescosta
Implemented setActive(bool active), isActive() and activated() signal for DolphinSearchBox - similar to the KUrlNavigator implementation. BUG: 296970 FIXED-IN: 4.11.2 REVIEW: 112534
2013-09-04Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
2013-09-04Count the items inside directories in another threadFrank Reininghaus
This prevents that the GUI freezes if there are many files inside the directory, or if the access to the directory is slow for some other reason. BUG: 318518 REVIEW: 111920 FIXED-IN: 4.12.0
2013-09-04Try to avoid calling the model's data method if only "text" is neededFrank Reininghaus
Currently, KStandardItemListWidgetInformant::itemSizeHint() calls the model's data(int) method for every single item, but the full data is actually only needed for the size calculation in Compact View. In Details View, no data is needed at all to determine the size required for the item, and in Icons View, only the name is needed. This patch makes it possible for subclasses of KStandardItemListWidgetInformant to provide an alternative way to obtain the "text", and implements this in the subclass KFileItemListWidgetInformant. The final goal is to achieve that the QHash which contains all data for a file item is only created if it is really needed, e.g., because the view needs access to the data for displaying the item on the screen. REVIEW: 112253
2013-09-03Fix color role of services listChristoph Feck
Fixes the color of non-selected items to make them readable with every color scheme. BUG: 286459 FIXED-IN: 4.11.2 REVIEW: 112483
2013-08-28Replaced all KNewFileMenu usages in DolphinPart by DolphinNewFileMenu.Emmanuel Pescosta
Removed all signal-slot-connections related to DolphinNewFileMenu->errorMessage(QString) in DolphinMainWindow and DolphinContextMenu and replaced it by a better solution. Now we make use of the already existing DolphinNewFileMenuObserver singleton class to achieve a better error handling, because every newly created DolphinContextMenu instance registers himself by DolphinNewFileMenuObserver and we use this to connect the errorMessage(QString) signal of every DolphinContextMenu instance to the errorMessage(QString) signal of the DolphinNewFileMenuObserver singleton class. So we need only one connection from DolphinNewFileMenuObserver to DolphinMainWindow (or to DolphinPart) to collect all error messages thrown by every DolphinNewFileMenu instance. REVIEW: 112178
2013-08-25Merge remote-tracking branch 'origin/KDE/4.11'Frank Reininghaus
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