Peter Penz [Thu, 29 Dec 2011 23:02:17 +0000 (00:02 +0100)]
Fix inconsistency in selection manager
When a selection has been done with non-linear ranges, it was possible that
the anchor item pointed to an invalid index that resulted into an invalid
selection.
As part of this fix the sorting for DolphinView::selectedItems() has been
disabled (if the caller assumes a sorted selection he must manually adjust it).
Peter Penz [Mon, 26 Dec 2011 21:28:54 +0000 (22:28 +0100)]
Improve item offset scrolling
Don't check whether the m_layoutTimer is active: Changing the
item offset must always trigger a synchronous layout, otherwise
the smooth-scrolling might get jerky.
Peter Penz [Sun, 25 Dec 2011 21:34:45 +0000 (22:34 +0100)]
Fix grouping issue
When switching to a group that is not shown currently, the group headers
won't be updated. The root-cause was that the m_groups-cache must be reset
when the roles have been changed.
Peter Penz [Sun, 25 Dec 2011 10:35:05 +0000 (11:35 +0100)]
Fix wrong grouping of types
- Uninitialized types count as one group
- Let the receiver of the signal itemsMoved() decide whether unmoved items
really result in an unchanged visual appearance. This might e.g. be the case
if the grouping is turned on and the group-names change although the items
themselves have not changed their position.
Peter Penz [Sat, 24 Dec 2011 13:12:09 +0000 (14:12 +0100)]
Fix sort-issue for trees
If a protocol like fish is used, the sorting of sub-trees was wrong. The root
cause was a wrong comparing of URLs where the protocol was not initialized.
Peter Penz [Fri, 23 Dec 2011 22:05:08 +0000 (23:05 +0100)]
Introduce "isExpandable" role
The role is used to determine whether a directory can be expanded at all. This
is e.g. not the case if a directory has 0 items or the target-URL is different
from the item-URL.
The expansion toggle will get hidden if a directory is not expandable.
Peter Penz [Fri, 23 Dec 2011 20:10:32 +0000 (21:10 +0100)]
Fix possible double entries in details view
The patch 30ae57ba807ecadfdef833a4895621fc330badc9 did not resolve the
issue completely: The pending items to insert must be dispatched before
checking for duplicates.
Related to this report the expanding for the remote-protocol has been
disabled.
Peter Penz [Fri, 23 Dec 2011 15:01:23 +0000 (16:01 +0100)]
The key "space" should select the current item
Also in case if only one item is shown the navigation-keys should
trigger a selection of the current item. This works now consistent
within all view-modes (there have been been behavior differences
in Dolphin 1.7 depending on the used mode).
Peter Penz [Thu, 22 Dec 2011 20:46:17 +0000 (21:46 +0100)]
Don't show child items of collapsed parent items
If a parent item got expanded and collapsed again, KDirLister keeps
the items of the previously expanded directory. Hence inserting new
items there will result in emitting the signal newItems() and a check
must be done whether the parent is still expanded.
KFileItemModel: Always use upper case letters to group by name
This fixes the following problems:
1. In a folder containing the items ~a and b, the first group,
containing ~a, is named "Others".
2. In a folder containing the items a, ~b, ~c, and ~d, the first group
"A" contains a and ~b, and the other two items are in the group
"Others".
Peter Penz [Fri, 16 Dec 2011 22:55:48 +0000 (23:55 +0100)]
Animation finetuning
If dynamic item sizes are used don't animate the size of the widget
in along the dynamic direction. This prevents unnecessary animations when
increasing the window width in combination with e.g. the details view.
Peter Penz [Fri, 16 Dec 2011 22:37:49 +0000 (23:37 +0100)]
Minor layout and coding style cleanups
- Disable performance debugging output
- Force a synchronous layout during scrolling. This prevents having a jerky
scroll-animation if there are pending operations ongoing in parallel.
- Minor coding style cleanups
Get rid of the hack to access the m_itemData member for getting
the parent of an item during sorting. ItemData has been extended
by a parent-member which allows a fast and save way to do this.
Sadly this makes the unit-test for expansionLevelsCompare() more
complex and it has been temporary deactivated. I'll take care to
fix this during the next week.
Peter Penz [Tue, 13 Dec 2011 22:38:57 +0000 (23:38 +0100)]
Fix several sort-issues
- Treeview: When sorting descending assure that the parent item is still
ordered before the child items and not afterwards.
- Treeview: When sorting by other roles than names expansionsLevelCompare()
had been buggy and resulted in ordering child items below wrong parent
items.
- General: When sorting by another role than names and the role of
two items had been equal a case sensitive sorting of the names had
been done. This has been fixed by using the default name sorting
as fallback.
Michael Drueing [Tue, 13 Dec 2011 22:03:35 +0000 (23:03 +0100)]
dolphin: DLLEXPORT is not valid for template class
MSVC tries to import the specialized class from the library, which fails because only the generic version can be exported.
GCC probably silently ignores the export.
Peter Penz [Sun, 11 Dec 2011 19:23:21 +0000 (20:23 +0100)]
Remember sort settings
If the user has changed the sort-role or sort-order by clicking on the view-header of the details-view, the settings have been adjusted to the model but not remembered in the directory settings.
Peter Penz [Sat, 10 Dec 2011 11:23:06 +0000 (12:23 +0100)]
Resort items when they have been changed
This assures that when renaming an item the sort-position will be adjusted. Thanks to Frank Reininghaus and Janardhan Reddy for the patch and the tests.
Peter Penz [Fri, 9 Dec 2011 20:49:59 +0000 (21:49 +0100)]
Fix issue with duplicate items in details view
When expanding an item, collapsing it and expanding it again before the items for the first expanding could be loaded, it was possible that items have been inserted twice into the model.
Peter Penz [Thu, 8 Dec 2011 10:05:27 +0000 (11:05 +0100)]
Fix "show hidden files" issues
Use KFileItemModel instead of KDirLister for toggling the whether
hidden files should be shown. This assures that the signal
KFileItemModel::loadingCompleted() will be emitted.
In the longterm Dolphin should only use the KFileItemModel, so that
the KDirLister instance is used only internally as implementation
detail in KFileItemModel. Although there are only a few cases left
where KDirLister is used instead of KFileItemModel this cleanup
will be postponed to after the 4.8 release...
Peter Penz [Wed, 7 Dec 2011 22:46:35 +0000 (23:46 +0100)]
Prevent unwanted item animations (#2)
Use a cleaner approach to prevent item animations when showing
a hidden tab the first time. For Dolphin > 2.0 the tab-code should
be refactored from DolphinMainWindow and encapsulated into an
own module (but well, this is on my TODO-list since KDE SC 4.4...)
Peter Penz [Wed, 7 Dec 2011 22:04:09 +0000 (23:04 +0100)]
Enable "menu key" functionality
Bring back the functionality that a context-menu is opened if the "menu key" has been pressed. In opposite to Dolphin 1.7 the context-menu is shown above the selected item and not on the (probably unrelated) mouse position.
A new method KItemListView::itemContextRect() has been introduced: The method is now also used as reference for tooltips which fixes the issue that tooltips had a wrong horizontal alignment in the details-view.
Peter Penz [Wed, 7 Dec 2011 17:35:30 +0000 (18:35 +0100)]
Fix issue of unknown icon-types
If the split-view is used and/or the Folders Panel is activated
it might happen that the "unknown"-icon of an item is shown instead
of the correct icon. The root-cause is that one model might already
have been resolved the MIME-type of a KFileItem while the other
model has not updated the icon yet. As KFileItems are shared the
check whether the MIME-type has been resolved is wrong. As at that
stage it is assured anyhow that the MIME-type is known just
applying the icon-name in any case won't slow down the performance.
Peter Penz [Wed, 7 Dec 2011 14:30:55 +0000 (15:30 +0100)]
Fix icon boundaries issue
The size of the icon boundaries should be as minimal as possible.
The patch for fixing the zooming-issues with the selection resulted
into a minor regression where the icon boundaries might be too large.
This patch remembers the original size of the pixmap to be able
to scale m_iconRect.
Peter Penz [Tue, 6 Dec 2011 20:15:36 +0000 (21:15 +0100)]
Selection and current item fixes
- Remember selection + current item when switching view-modes
- Fix the current item indicator alignment for selections
- Set the item as current item when the selection toggle has
been clicked
Peter Penz [Tue, 6 Dec 2011 17:49:12 +0000 (18:49 +0100)]
Fix selection issue for Information Panel
When the selection changes during the Information Panel is
invisible, it still should get applied so that when making the
Information Panel visible again a valid selection is shown.
Thanks to A. Janardhan Reddy for the patch!
(Additionally the obsolete check for an empty selection has
been removed, as this cannot happen anymore with the new view
engine)
Peter Penz [Sun, 4 Dec 2011 19:45:54 +0000 (20:45 +0100)]
Fix crash #2 when filtering items
When KFileItems get removed from the model it is temporary possible
that the pending items are still part of the KFileItemModelRolesUpdater
while they have already been removed from the model (this happens
in the context during the signal itemsRemoved() gets emitted).
Peter Penz [Sun, 4 Dec 2011 17:16:39 +0000 (18:16 +0100)]
Fix crash #1 when filtering items
When filtering items it was possible that the current index got
an invalid value which resulted in accessing the URL of a
null-KFileItem.
There is still one (general) open issue in KFileItemModelRolesUpdater
(crash #2) where a KFileItem that is already null gets read.
It is not really related to filtering but can be triggered
quite easy when filtering huge directories with enabled previews.
Clear the selection in MousePressEvent() rather than MouseReleaseEvent()
This fixes the problem that clicking an unselected item in order to drag
it would result in dragging all previously selected items as well. With
this commit, previously selected items are unselected when a new item is
clicked.
The reason why clearing the selection was moved to MouseReleaseEvent()
in commit b583dd6d4d3a03e3af2ec8d370132b84935ff871 was that clicking one
of several selected items should not result in unselecting the other
items (to make sure that dragging multiple items is possible). However,
this can also be assured by just checking in MousePressEvent() if the
clicked item has been selected already and not clearing the previous
selection in that case. This applies equally to the case that a context
menu is requested when several items are selected.
Peter Penz [Tue, 29 Nov 2011 23:18:22 +0000 (00:18 +0100)]
Reimplement name-filtering
The filtering of items has not been implemented yet in
the KFileItemModel of the new view-engine. The patch brings back
this functionality again, but some minor issues are open:
- When filtering trees expanded directories should only get
hidden if no child is visible
- Regular expressions are not supported yet (they have not been
supported in Dolphin 1.x but it is now quite simple to implement).
- When filtering previews and removing the filter it might be
possible that the preview is not shown (is most probably an
an already existing bug in KFileItemModelRolesUpdater).