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
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
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
When 'browse through archives' is enabled, open archive files
like folders on middle clicking, context menu -> new tab action
and context menu -> new window action.
BUG: 196035
REVIEW: 110487
Finding out whether shift is pressed initially can be done
with qApp->keyboardModifiers(), and finding out that the user is pressing
or release shift can be done with keyPressEvent/keyReleaseEvent.
This required to inherit from KMenu rather than having the KMenu
as a member.
KModifierKeyInfo is only implemented on X11, so this makes the code
more portable. If similar solutions can be found for other users of
KModifierKeyInfo, it will be deprecated in KF5.
REVIEW: 110303
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.
BUG: 306459
FIXED-IN: 4.9.3
- Determine group of a new entry dependent from the protocol
- Allow panels to forward error-messages to the view-container
(also applied to Folders Panel)
The places-entries for searching revealed some serious issues in
combination with the search-panel. Move the filtering away from
QDockWidget and bring it back below the search-bar.
Up to now the view-engine only provided a model-implementation that
supports file-items. The view-engine always had been designed to be able
to work with any kind of model, so now a KStandardItemModel is available.
The plan is to convert the places panel to the new view-engine. It should
be no problem to fix this until the feature freeze - in the worst case
the places-panel code could be reverted while still keeping the
KStandardItemModel changes.
The attached patch sets the main window on the main directory
lister in DolphinView and KIO jobs in DolphinMainWindow to ensure
that login data for remote protocols such as sftp, ftp are cached
properly for the duration of the application. Otherwise, the end
user is going to end up being unnecessarily re-prompted to enter
password login information.
Thanks to Dawit Alemayehu for the patch!
REVIEW: 104614
FIXED-IN: 4.9.0
See http://agateau.com/2011/04/21/kde-ux-2011/ for more details.
This simplifies the statusbar in Dolphin a lot and allows to
do a proper eliding in case if status-messages are too long: In
this case a tooltip will show the whole status-message (thanks
to Wolfgang Mader for the initial patch!).
There is still missing some finetuning but the general approach
seems to work quite nice.
BUG: 249638
BUG: 245618
BUG: 146533
FIXED-IN: 4.9.0
- Move all private headers from the kitemviews-directory into
the 'private' subdirectory.
- Get rid of DolphinDirLister and just use a directory-lister
internally in KFileItemModel.
- Minor interface-cleanups for signals
Aligning the control-button to the right of Dolphin has the problem
that sub-menus might be opened on the left of the menu if the Dolphin
window reaches the right of the desktop. So the toolbar-spacer has
been removed and a default label has been applied to the control-button
to increase the target-area for opening the menu.
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...)
The KAction instance of the panels is added to the menu instance
now instead of the QDock-actions. It is assured that the state
between the actions gets synchronized. Now it's possible for
the user to apply custom shortcuts and the shortcuts are also
shown in the menu as expected.
CCMAIL: lueck@hube-lueck.de
Use a queued connection to prevent that the menu
gets hidden during it is still open. Thanks to
Christoph Feck for the hint!
Frank and I could not reproduce the issue in our
environments even when following the steps from
bug 278366, however Christoph's hint sounds sane
and let's hope it works (leaves a bad gut feeling
to "fix" bugs without being able to verify them).
CCBUG: 286822
CCBUG: 278366
FIXED-IN: 4.7.4
- The view properties dialog mixed the details-view with
the compact-view (#285848).
- The view properties have been reset when applying a
setting from the "Dolphin Preferences" dialog. The rootcause
was that the obsolete DolphinSettings class implemented
the saving in a wrong way because of the recent refactoring
(will remove this class completely now to prevent such
issues in future).
BUG: 285848
FIXED-IN: 4.8.0
Until now the shortcuts of the Panel actions could not be changed
as they did not show up in the "Configure shortcuts..." dialog.
The patch is based on the work of "SiegeLord" and Fabian Henze
attached to bug 273050.
BUG: 273050
FIXED-IN: 4.8.0
- Open the context menu on the mouse-press event, not on the
mouse-release event.
- Provide an explicit position-information and don't use
QCursor::pos(). This fixes the issue that opening a context-menu
by the keyboard opens below the cursor.
- Provide different signals in the KItemListController for
the different context-menu types (item vs. view vs. header).
- Implement turning on/off roles by the header-context-menu.
Files selected via --select parameter did not get current item focus.
And if files were deleted while being current item, updating the view
would select the next item instead of the first item in the list.
BUG: 257805
CCMAIL: peter.penz19@gmail.com
CCMAIL: frank78ac@googlemail.com
Dolphin 2.0 will get a new view-engine with the
following improvements:
- Better performance
- Animated transitions
- No clipped filenames due to dynamic item-sizes
- Grouping support for all view-modes
- Non-rectangular selection areas
- Simplified code for better maintenance
More details will be provided in a blog-entry during
the next days.
Please note that the code is in a very
early alpha-stage and although the most tricky parts
have been implemented already very basic things like
drag and drop or selections have not been pushed yet.
Those things are rather trivial to implement but this
still will take some time.
Using Dolphin in default mode in master/4.7 whithout menubar the user has no actions to report a bug or switch language.
Add these missing actions the Help menu launched from the toolbar button Configure and control Dolphin.
REVIEW: 101597
Previous state: When the terminal is hidden, the cwd is not updated
anymore. If it was on a removable device when hiding, the hidden
terminal might prevent unmounting this device.
This patch fixes that bug by changing the cwd to "/" when hiding the panel.
REVIEW: 101387
BUG: 158264
FIXED-IN: 4.7.0
If the Search Panel is shown outside the context of the "Find" mode it
will be always enabled and does a global search. Only if the user is in
the "Find" mode and the searching is restricted to the current directory
the Search Panel might get disabled if the current directory is not
indexed. This solves the major usability issue that it was not clear
for the users whether a global or restricted search is done.
A possible crash in one Dolphin window should not result in crashing
other Dolphin windows. Beside this it also prevents issues with
modal dialogs or notifications.
BUG: 269950
BUG: 206053
BUG: 196034
FIXED-IN: 4.7.0
It got accidently lost during the menu-button changes. Also the
clearStatusBar() calls have been removed as this is handled in the
DolphinViewContainer internally since a long time already.
Use a similar default UI like in Rekonq and other browsers: Hide the
menubar and add access to all actions by a button in the toolbar.
Of course it is still possible to show the menubar so that the same UI
is given like before.
The search panel must get a hint whether clicking on the facets should result in searching everywhere or from the current folder. It is not sufficient to check the search-settings of the "Find:"-box, as when the "Find:"-box is invisible there is no hint for the user what kind of searching is done and the setting must be ignored.
When Dolphin is started with a directory as argument unnecessary reload operations of KDirListers are done. The patch improves this by just letting the DolphinView internally do a loading as soon as it gets visible (and without reloading). Also in case if only one directory is passed as argument the current tab gets reused instead of creating new tabs and removing the current tab.
Thanks a lot to David Faure for pointing out this unefficient handling.
Most developers seem to prefer
if (ptr) ...
if (!ptr) ...
in comparison to
if (ptr != 0) ...
if (ptr == 0) ...
Adjusted the Dolphin-code to use the "most-prefered style" to make contributors happy.
The filter-panel should be disabled if the current folder is not indexed at all. Also when triggering a "Find" the filter-panel should stay invisible per default when the current folder is not indexed.
CCBUG: 264969
"Move to trash (del)" action gets replaced by the "Delete (shift del)" action and replaced back to "Move to trash (del)" when you release
shift.
BUG: 194275
svn path=/trunk/KDE/kdebase/apps/; revision=1176493
- KNewMenu has been deprecated by KNewFileMenu. Reflect this in the names of related Dolphin classes.
- Provide context-sensitive actions also when a context-menu is opened on the viewport
BUG: 191938
FIXED-IN: 4.6.0
svn path=/trunk/KDE/kdebase/apps/; revision=1168586
Port all of kdebase' use of KNewMenu to KNewFileMenu.
Also port from KonqNameAndUrlInputDialog to KNameAndUrlInputDialog,
and from KonqMenuActions to KFileItemActions in dolphincontextmenu.cpp
svn path=/trunk/KDE/kdebase/apps/; revision=1080547
* Open a new tab if the URL navigator requests it.
* Get rid of a cyclic dependency between DolphinViewContainer and DolphinMainWindow.
BUG: 181223
svn path=/trunk/KDE/kdebase/apps/; revision=1079843
- Assure that the keyboard focus does not get lost when a tab is opened in background.
CCBUG: 183394
svn path=/trunk/KDE/kdebase/apps/; revision=1072868
* remember the search options when closing Dolphin, so that the user can adjust his "default search template"
svn path=/trunk/KDE/kdebase/apps/; revision=1052499
like Sabine's ".csv test files" folder, which did not appear in the directory view
after being created.
svn path=/trunk/KDE/kdebase/apps/; revision=1051124
* trigger progress information when starting a search
* let the information panel hide the meta data for the search string
* get the search string from the configurator
svn path=/trunk/KDE/kdebase/apps/; revision=1048721
So now all adjustments from the review have been adapted to the Dolphin code. After KDE 4.4 has been released some refactoring will be done so that the open topics above are handled in a nice way.
svn path=/trunk/KDE/kdebase/apps/; revision=1041547
* Postpone the creation of the searchcompleter, until the editor gets focused. This improves the startup time of Dolphin (reading all available tags is an expensive operation).
svn path=/trunk/KDE/kdebase/apps/; revision=1036658
the session manager - there's no need to reinvent the wheel ;-)
Thanks to Lubos Lunak for the hint.
svn path=/trunk/KDE/kdebase/apps/; revision=1013726
if Dolphin is closed by the session manager, i.e., if the user logs
out. The fix is inspired by the way this issue is handled in
Konqueror.
BUG: 201803
svn path=/trunk/KDE/kdebase/apps/; revision=1011002
- Don't connect to KDirLister::itemDeleted(const KFileItem&), but KDirLister::itemsDeleted(const KFileItemList&). Otherwise Dolphin is informed about each single file deletion instead of getting the deleted items as a list. Thanks to David Faure for the hint!
- DolphinViewContainer::updateStatusBar() can be expensive when a lot of files are selected, as the file size must get retrieved. Assure that fast calls for updateStatusBar() don't trigger a synchronous update, do the update after 300 ms where no further update has been triggered.
- Dolphin provides a list of file items when emitting the selectionChanged() signal. Collecting the file items is a quite expensive operation, so use the same approach as when updating the statusbar: only emit the selection changed signal when no change has been done within 300 ms. This improves the performance when doing huge selections a lot.
- Make updateStatusBar() a private method, the main window should not need to take care about updating the statusbar (this is done internally now by DolphinViewContainer).
BUG: 199090
BUG: 195787
CCBUG: 199352
CCBUG: 188218
svn path=/trunk/KDE/kdebase/apps/; revision=995015
- minor adjustment of name
- use same declaration order as other private methods
CCMAIL: predator106@gmail.com
svn path=/trunk/KDE/kdebase/apps/; revision=994089
Now they are ellided, so e.g. "really really long folder name...is" or something.
Few more cases left for me to fix(shortly), but those are not quite close to this section.
svn path=/trunk/KDE/kdebase/apps/; revision=993618
"file:" URL, but is nevertheless local (e.g., "desktop:").
This fix is also applied to the new "Open external Terminal" action
which will be in KDE 4.3.
BUG: 167810
svn path=/trunk/KDE/kdebase/apps/; revision=969265
completely by dragging the QSplitterHandle to the left or right. This
fixes the problem that a hidden view disappears completely after
closing the visible view. The root cause of this issue still seems to
be unclear though.
BUG: 190265
svn path=/trunk/KDE/kdebase/apps/; revision=957703
Note that there's no need to call setActiveTab() because the active tab is the same before and after the move operation - only its index in the tab bar has changed.
BUG: 189641
svn path=/trunk/KDE/kdebase/apps/; revision=954556
GUI:
The remote encoding code adapted from Konqueror to Dolphin. Now user can change
encoding for remote urls like ftp. Konqueror doesn't use
KRemoteEncodingPlugin anymore. Instead, this feature is supplied to
Konqueror via DolphinPart.
svn path=/trunk/KDE/kdebase/apps/; revision=944659
* Paths now ellide when they get too big. That is, according to the font size, not character length.
* Added automatic mnemomics (or however you spell that crazy word) to the menu's items.
svn path=/trunk/KDE/kdebase/apps/; revision=937504
This also kind of hides the Qt 4.5 tab bug (a very ugly one) from "regular" users (who don't use the split view).
svn path=/trunk/KDE/kdebase/apps/; revision=937116
The most recent tab will now always be shown right below the separator, which is right below the "Clear Recently Closed Tabs" action.
svn path=/trunk/KDE/kdebase/apps/; revision=933487
Closed tabs now become stored in the "Go"->"Recently Closed Tabs" menu.
To clear this list, there is an action within that menu.
Clicking on a remembered tab's action, will remove that entry, restore that tab, and focus it.
svn path=/trunk/KDE/kdebase/apps/; revision=933483
* Enable dragging of tabs thanks to the new feature in Qt 4.5, QTabBar::setMovable(), now that the KTabBar has been ported. The dragging is a very neat effect.
BUG: 164313
svn path=/trunk/KDE/kdebase/apps/; revision=930077
* assure that the URL navigator gets the focus when it is editable and a new tab is opened by File -> New Tab
BUG: 174594
svn path=/trunk/KDE/kdebase/apps/; revision=891367
* show an information message in the statusbar, if items are dragged into the same directory
TODO: although the signal seems to get connected correctly, the slot DolphinMainWindow::showInformationMessage() is not invoked when the signal is emitted -> will debug this later, it is important that the new string is added before the message freeze
svn path=/trunk/KDE/kdebase/apps/; revision=881627
* Move code which checks whether the dragging of a MIME type is supported to DragAndDropHelper. This allows adding an improved support for dropping compressed files from Ark to Dolphin later...
CCMAIL: haraldhv@stud.ntnu.no
svn path=/trunk/KDE/kdebase/apps/; revision=875611