Commit graph

4489 commits

Author SHA1 Message Date
Frank Reininghaus 352f644159 Fix possible crash if a kioslave adds multiple items with the same URL
When opening the URL "man:", there are multiple items with the same
name (for example, _exit is shown twice here). When opening a new tab,
the kioslave reports some items as deleted (I have not quite understood
why). The problem is that it reports some of the duplicate items twice
in the list of deleted items. This confused KFileItemModel and
corrupted the internal data structures, and finally, caused a crash.

The fix is to remove all duplicates from
KItemRangeList::fromSortedContainer(const Container& container).

New unit tests included.

BUG: 335672
REVIEW: 118507
FIXED-IN: 4.13.2
2014-06-04 21:49:02 +02:00
Emmanuel Pescosta 96c34cfe65 Fix Bug 334696 - File/directory icons/names move to the right when opening/refreshing contents of Dolphin
Take the scrollbar spacing into account.

BUG: 334696
REVIEW: 118319
FIXED-IN: 4.13.2
2014-05-29 15:33:03 +02:00
Emmanuel Pescosta fb69036dbd Use "selectionToggleRect().contains(pos)" instead
of "m_selectionToggle->contains(pos)" in
KItemListWidget::setHoverPosition(const QPointF& pos).

This wrong check was accidentally introduced by
commit 24326d4473

BUG: 299328
REVIEW: 118320
FIXED-IN: 4.13.2
2014-05-29 15:31:24 +02:00
Frank Reininghaus 4ecdb8fe6e Remove debug output
This debug output was pushed accidentally in commit
c52ba9446b
2014-05-20 08:39:56 +02:00
Frank Reininghaus 1f9d35db19 Do not lose translation of Places items if a Dolphin window is closed
If the "Places" are updated outside the current Dolphin process,
PlacesItemModel::updateBookmarks() is called, which invokes
PlacesItem::setBookmark(const KBookmark& bookmark) for each item. This
commit ensures that the correct translation is used for system
bookmarks like "Root", "Network", etc.

Without this patch, all Places entries in the remaining Dolphin windows
would switch to US English if one of multiple windows is closed.

See http://lists.kde.org/?t=139660468400004&r=1&w=2 for details.

BUG: 334999
REVIEW: 118207
FIXED-IN: 4.13.2
2014-05-20 08:31:31 +02:00
Frank Reininghaus 99e8f8e2e6 Stop listing children of collapsed folders
Before this patch, KDirLister would continue listing any children of
collapsed folders, even though the children themselves were removed
from the model. This could lead to new items being inserted as
top-level items at some later point, because no parent could be found
for them. This inconsistent model state could lead to a crash later on.

Many thanks to Martin Koller for helping to debug this problem!

BUG: 332102
REVIEW: 118055
FIXED-IN: 4.13.2
2014-05-13 19:06:42 +02:00
Frank Reininghaus 66f1759b6f Ensure that all children of a collapsed folder are removed
Before this patch, any (direct or indirect) children that might have
been in m_pendingItemsToInsert, i.e., that were not inserted into the
model yet because KDirLister had not finished listing the directory
yet, would be added to the model later without a proper parent. This
could cause a crash later on.

CCBUG: 332102
FIXED-IN: 4.13.2
2014-05-13 19:04:09 +02:00
Uzair Shamim 24d0ade8e3 Allow the widget in the "Additional Information" dialog to resize
BUG: 334355
REVIEW: 118088
FIXED-IN: 4.13.2
2014-05-13 18:59:34 +02:00
Frank Reininghaus 4660ea3a48 Update the "Paste" action only if it is necessary
Updating this action is only required if the clipboard contents change,
or if the "is writable" state of the current location changes. In all
other cases, an update of this action should be prevented because it
can be very expensive if many files are in the clipboard.

In particular, the update when the selection changes could make
changing the current item in the view very slow.

BUG: 333903
REVIEW: 117782
FIXED-IN: 4.13.1
2014-04-30 09:34:32 +02:00
Emmanuel Pescosta 5f29eec075 Merge branch 'KDE/4.13' of git://anongit.kde.org/kde-baseapps into KDE/4.13 2014-04-26 13:08:31 +02:00
Emmanuel Pescosta 5e82e598ea Mount partitions when you open them in a new tab.
Instead of just emitting the slotItemMiddleClicked signal in
PlacesPanel::slotItemContextMenuRequested we now use triggerItem with
Qt::MiddleButton, which does set up the storage first and emit
the slotItemMiddleClicked signal afterwards.

BUG: 311226
FIXED-IN: 4.13.1
REVIEW: 117755
2014-04-26 13:07:04 +02:00
Frank Reininghaus b5ca0e2de9 Do not change the selection when re-sorting the view
If a range of items has been selected by Shift-clicking or by pressing
Shift+Arrow, then each of them is added individually to the selection
before the items are re-sorted.

Before this commit, the first and the last item in the range were
moved, and all items between them were selected, even though these were
not necessarily the items which had been selected before the
re-sorting.

BUG: 333457
REVIEW: 117603
FIXED-IN: 4.13.1
2014-04-26 12:37:39 +02:00
Renato Atilio afa1a8ef11 Enable the previous and next tab toolbar buttons
when multiple tabs are opened. Disable them again
when there is only one remaining tab.

Additionally set the default state to disabled.

BUG: 332628
FIXED-IN: 4.13.1
REVIEW: 117778
2014-04-26 12:28:42 +02:00
Emmanuel Pescosta 272cbbd16b Fix memory leak with Dropbox version control plugin.
In the current version we only call endRetrieval when
beginRetrieval was successfully in UpdateItemStatesThread::run().
This causes some problems with version control plugins (like Dropbox plugin),
which have to do cleanups in endRetrieval.

Now we always call endRetrieval after beginRetrieval when updating the version states.

FIXED-IN: 4.13.1
REVIEW: 117753
2014-04-25 12:30:39 +02:00
Emmanuel Pescosta bf4b163a0e Scroll to the right position when going back and show hidden files is enabled.
Instead of emitting the directoryLoadingCompleted signal (via slotCompleted) in
KFileItemModel::setShowHiddenFiles directly, we now call
dispatchPendingItemsToInsert instead.

@Frank: Thanks for your help!

FIXED-IN: 4.13.1
BUG: 332159
REVIEW: 117021
2014-04-24 20:16:30 +02:00
Frank Reininghaus e8eca7c266 Merge branch 'KDE/4.12' into KDE/4.13 2014-04-14 23:11:00 +02:00
Frank Reininghaus a7562862e3 Update the "is cut" state of items if necessary
The icons of items which are "cut" are shown faded in the view. The
"is cut" state of the widget representing an item is updated if the
clipboard contents change. Before this commit, if the sort order was
changed however, then each widget kept the "is cut" state of the item
which had been shown previously at its position.

The solution is to update the "is cut" state also if any of the
widget's data change.

BUG: 332792
REVIEW: 117451
FIXED-IN: 4.12.5
2014-04-14 22:55:58 +02:00
Frank Reininghaus 0d191c9da2 KDirectoryContentsCounter: do not delete currently active worker objects
Before this patch, the destructor of KDirectoryContentsCounter might
delete the worker object, which lives in another thread, while one of
its methods was still being executed. This could cause a crash. Only if
the destroyed KDirectoryContentsCounter was the last one, the worker
thread was stopped, and the destructor waited until all workers are
done.

BUG: 332767
FIXED-IN: 4.13.0
REVIEW: 117209
2014-04-03 09:03:47 +02:00
Albert Astals Cid 05acaf9345 Make this thing compile
CCMAIL: emmanuelpescosta099@gmail.com
2014-03-31 01:15:45 +02:00
Emmanuel Pescosta 5d63b9a111 When you open a new tab while the search mode is enabled, the
newly opened tab also starts the same search (Because new tab is opened with
the current view url), but the search box is in read-only mode. So you cannot
close the search bar nor edit the search text.

This patch fixes this by parsing the search url. The value of the "search"
parameter is used as search text and the value of the "url" parameter is used
for the search path ("root" folder for the search when "Search from here" mode
is enabled).

In case of Baloo search urls, we use Baloo::Query::fromSearchUrl.

Removed everything related to read only mode in DolphinSearchBox, not needed
anymore.

REVIEW: 111968
BUG: 311950
FIXED-IN: 4.13.0
2014-03-28 18:48:48 +01:00
Emmanuel Pescosta 5c2f52e62a Set m_anyType as checked by default.
CCMAIL: me@vhanda.in
2014-03-25 23:39:47 +01:00
Vishesh Handa 76e5fd4834 Dolphin Facet Widget: Convert type selection into radio buttons
They were previously checkboxes. Most files cannot have more than 1 type
considering that the exposed types were "Document", "Image", "Video" and
"Audio".

Also, it is not very simple in baloo to search through ORs for types.
Not through the exposed API anyway.

REVIEW: 117015
2014-03-24 14:38:15 +01:00
Vishesh Handa 3e576a1659 DolphinSearchBox: Only search through filename is search text is not empty 2014-03-24 10:37:59 +01:00
Vishesh Handa 466868efa8 Dolphin Facet Widgets: Implement date based filtering
This required changes in Baloo which require reindexing. Since the
storage location has changed for Beta 3 everyone should be re-indexing
everything, so it won't be a problem.
2014-03-19 16:17:06 +01:00
Emmanuel Pescosta 53c48af236 Add the Baloo::Term to the Baloo:Query in DolphinSearchBox::balooUrlForSearching(). REVIEW: 116837 FIXED-IN: 4.13.0 2014-03-17 19:49:32 +01:00
Frank Reininghaus dd18909eec Merge branch 'KDE/4.12' into KDE/4.13 2014-03-16 18:10:24 +01:00
Frank Reininghaus d803ecec24 Use MIME type inheritance to find out if a file contains text
Before this commit, filenamesearch checked if a file's MIME type begins
with "text/" to determine if its content can be searched. This prevented
that text inside shell scripts is found.

BUG: 332143
REVIEW: 116805
FIXED-IN: 4.12.4
2014-03-16 18:02:43 +01:00
Frank Reininghaus 773d505493 Use QMutableHashIterator for deleting items from a QHash
KItemListViewAnimation::slotFinished() used a QHashIterator to iterate
over a QHash, and then removes an item from the hash using
QHash::remove() inside the loop.

This is quite unusual - the recommended way is to use a
QMutableHashIterator (or std-style iterators and then QHash::erase(it)).

This might be related to the cause of a crash in this function.

BUG: 331876
REVIEW: 116666
FIXED-IN: 4.13.0
2014-03-11 09:07:23 +01:00
Emmanuel Pescosta 6747241934 Fix Bug 326210 - Dolphin unnecessarily truncates names of soft links in compact mode
FIXED-IN: 4.13.0
BUG: 326210
BUG: 310592
REVIEW: 116121
2014-03-05 10:48:33 +01:00
l10n daemon script 8b556c8279 SVN_SILENT made messages (.desktop file) 2014-03-04 05:44:46 +00:00
Emmanuel Pescosta d980dccb12 Add a hover effect for the selection toggle.
FIXED-IN: 4.13.0
REVIEW: 116028
BUG: 299328
2014-03-03 22:06:56 +01:00
Frank Reininghaus eab1b76b76 Always go back/forward in history when pressing the respective buttons
Before this patch, pressing one of these buttons while an item is
hovered selected this item. The motivation for this behavior was to
provide a fast way to select items. However, this was counter-intuitive
and confusing for many users.

BUG: 310288
FIXED-IN: 4.13.0
REVIEW: 116469
2014-03-01 12:14:47 +01:00
Emmanuel Pescosta b740404447 Scroll to newly dropped files.
If multiple files are dropped, scroll to the first dropped file.

BUG: 315722
FIXED-IN: 4.13
REVIEW: 116020
2014-02-27 12:17:48 +01:00
Frank Reininghaus 006f667ab1 Merge remote-tracking branch 'origin/KDE/4.12' into KDE/4.13 2014-02-27 09:11:48 +01:00
Emmanuel Pescosta c5d9791ad3 Show the correct icon size in the zoom slider tooltip.
BUG: 305694
FIXED-IN: 4.12.3
REVIEW: 111197
2014-02-25 19:41:45 +01:00
Emmanuel Pescosta 9a9ab6e50c Fix Bug 330605 - Dropbox plugin prevents git plugin from working
Use scoring to find the best matching plugin for the given directory.

Thanks to Phil Schaf for testing this patch!

BUG: 330605
FIXED-IN: 4.12.3
REVIEW: 116019
2014-02-25 19:38:57 +01:00
Frank Reininghaus 342822e83d Make the handling of the "maximum text lines" setting more robust
If the user sets a maximum number of text lines in the settings, this
number was translated into a maximum height in pixels using
QFontMetrics::lineSpacing() before this commit.

In KStandardItemListWidgetInformant::itemSizeHint(), this maximum height
limited the size that is reserved for the item.

However, in KStandardItemListWidget::updateIconsLayoutTextCache(), the
maximum height was translated back into a maximum number of lines,
which limits the number of lines that are created using the QTextLayout.

This approach could lead to problems if the real height of the layouted
text is 1 pixel more or less than QFontMetrics::lineSpacing() times
"number of lines".

Now we do not store a "maximum height" inside the "maximum size"
explicitly, but store a maximum number of lines and a maximum with (for
Compact View) separately, and then use the number of lines also to
calculate the required size in
KStandardItemListWidgetInformant::itemSizeHint(). This should make sure
that the correct height is reserved for each item.

Thanks to Christoph Feck and Emmanuel Pescosta for helping to debug this
problem and testing the patch.

BUG: 323841
FIXED-IN: 4.13
REVIEW: 113871
2014-02-24 21:05:09 +01:00
Emmanuel Pescosta 0d37038b40 Handle font and palette changes in Dolphin list views.
Also update the font of the meta data widget in InformationPanelContent (smallest readable font).

BUG: 329186
BUG: 315061
FIXED-IN: 4.13
REVIEW: 115958
2014-02-24 14:17:03 +01:00
Emmanuel Pescosta c2887688f1 Remove some unused functions.
void KFileItemModel::slotClear(const KUrl& url)

bool UpdateItemsThread::lockPlugin()    <- Done with QMutexLocker
void UpdateItemsThread::unlockPlugin()

REVIEW: 115627
2014-02-11 20:30:50 +01:00
Frank Reininghaus 502016c1a7 Ensure that KItemListViewLayouter always has a size hint resolver
KItemListViewLayouter uses a KItemListSizeHintResolver to find out how
much space the items will need in the view.

Before this commit, the size hint resolver object could be changed at
runtime, and it could also be null. However, we never made use of these
possibilities, so all the code that checks if m_sizeHintResolver is
null is actually not needed at all.
2014-02-11 18:28:32 +01:00
Christophe Giboudeaux 709c336776 Fix includes 2014-02-07 15:41:48 +01:00
Frank Reininghaus 016cf47c53 Merge remote-tracking branch 'origin/KDE/4.12' 2014-02-07 10:26:00 +01:00
Frank Reininghaus bb22ac0a47 Only initialize the hash m_items in KFileItemModel if it is needed
Moreover, clear the entire hash if items are added or removed.

This saves time and memory when loading a directory, and it fixes
problems that might occur if the model is in an inconsistent state, such
as crashes that can happen when we try to remove individual items from
m_items.

BUG: 329494
FIXED-IN: 4.13.0
REVIEW: 115432
2014-02-07 10:22:17 +01:00
Frank Reininghaus 564dcb08fd Fix build if Baloo is not installed 2014-02-07 10:14:29 +01:00
Vishesh Handa 64afe7b226 Port Dolphin to Baloo
Nepomuk is being replaced with Baloo
2014-02-06 20:29:09 +01:00
Emmanuel Pescosta 2c20502c34 Set the Details View colummns width to the preferred column width, by double-clicking the header grips.
BUG: 293315
FIXED-IN: 4.13
REVIEW: 115503
2014-02-06 13:00:28 +01:00
Frank Reininghaus 75c0f24020 Restore the URLs of both views correctly when restoring a session
The problem was that we restored the URL of the right view while the
left one is still active. When we received the signal
urlChanged(KUrl& url) from the right URL navigator, we then set the URL
of the active (i.e., left) view to 'url', such that both views showed
the same URL.

BUG: 330047
FIXED-IN: 4.12.3
REVIEW: 115406
2014-02-02 10:19:57 +01:00
Emmanuel Pescosta 4d9193b85b Don't store the index of the file item in the VersionControlObserver::ItemState, get the index of the file item on demand instead.
Fixes some "old"-index problems, esp. when you copy/move around files while the version control thread is still running.

FIXED-IN: 4.13
REVIEW: 115410
2014-01-31 20:56:57 +01:00
Frank Reininghaus 900a4ba3b9 Always enable the "Create New..." menu if the URL is writable
This commit works around the problem that KDirLister may not provide a
"rootItem" for some kioslaves by setting up a KFileItem with the view
URL and using this to find out if the URL is writable.

BUG: 330001
CCBUG: 330015
REVIEW: 115405
FIXED-IN: 4.12.2
2014-01-30 22:10:31 +01:00
l10n daemon script df2179ec6b SVN_SILENT made messages (.desktop file) 2014-01-22 06:22:47 +00:00