Elvis Angelaccio [Sun, 20 Nov 2016 11:21:29 +0000 (12:21 +0100)]
Fix slow scrolling in dock panels
Commit f688bcd1f1 fixed slow scrolling with xf86-input-libinput on DolphinView.
However the commit also exposed a bug in the Dolphin scrolling
algorithm, which was previously hidden. This resulted in slow
scrolling in dock panels (Places and Folders), with both
xf86-input-evdev and xf86-input-libinput drivers, as well as libinput on
Wayland.
KItemListContainer::updateScrollOffsetScrollBar() relied on the view's
itemSize() method to compute the scrollbar's singleStep, but this QSize
was invalid for the dock panels' views.
We use a new itemSizeHint() method instead, which is always valid and
also adapts to the current icon size set in the view.
Kai Uwe Broulik [Fri, 28 Oct 2016 11:40:50 +0000 (13:40 +0200)]
[Places Item Edit Dialog] Fix accepting dialog with Return
By setting a parent for the QDialogButtonBox we let QDialog handle everything by itself.
Also, store the dialog button box as a member rather than just the OK button.
This removes the need to set the OK button as default manually (which didn't work anyway)
and fixes pressing Return while the input is focused erroneously opening the folder browser
rather than accepting the dialog.
Elvis Angelaccio [Wed, 21 Sep 2016 16:13:29 +0000 (18:13 +0200)]
Properly check Shift toggling in DolphinRemoveAction
Documentation of QGuiApplication::keyboardModifiers() says that "It should
be noted this may not reflect the actual keys held on the input device at
the time of calling but rather the modifiers as last reported in one of
the above events".
Since this method is called in DolphinContextMenu's keyPressEvent()
and keyReleaseEvent(), the first time that keyboardModifiers() is
called it doesn't report that shift has been pressed.
Replacing this method with queryKeyboardModifiers() does the job
because the latter doesn't care about the event queue.
Elvis Angelaccio [Tue, 23 Aug 2016 15:58:48 +0000 (17:58 +0200)]
Filter json-only KFileItemAction plugins by mimetype
Commit d48b733 introduced support for kfileitemaction plugins with json
metadata, but forgot to filter them by the commonMimeType (like
KMimeTypeTrader::query() does with old-style plugins).
So we need to load a plugin only when commonMimeType is equal to (or child of) one
of the mimetypes supported by the plugin.
David Edmundson [Thu, 26 May 2016 12:51:23 +0000 (13:51 +0100)]
Port all instances of Kauthorized action/shell_command to shell_command
The KAuthorized key to prevent shell access according the documentation
is simply "shell_action" not "action/shellAction" so should use
authorize not authorizeKAction
This appears to have come about as part of a porting bug when going from
KApplication::authorize to KAuthorized in kdelibs3 to kdelibs4.
To currently block shell access a sysadmin currently needs to
have both keys set already, so we can be confident it won't have any
actual compatibility problems.
Fix crash when closing split view with ownCloud plugin loaded
KPluginLoader::instantiatePlugins() wraps QPluginLoader::instace(),
which doesn't return a new object for each call, so if we set the
KFileItemModelRolesUpdater instance as parent to the plugin the shared
instance will be deleted leading to crashes when other instances of
KFileItemModelRolesUpdater tries to use their plugin objects.
Fix crash when closing split view with ownCloud plugin loaded
KPluginLoader::instantiatePlugins() wraps QPluginLoader::instace(),
which doesn't return a new object for each call, so if we set the
KFileItemModelRolesUpdater instance as parent to the plugin the shared
instance will be deleted leading to crashes when other instances of
KFileItemModelRolesUpdater tries to use their plugin objects.
Marco Martin [Fri, 13 May 2016 09:48:30 +0000 (11:48 +0200)]
use selected icon state for selected sidebar item
Since now the breeze icons can be recolored by kiconloader
with svg stylesheets, use this feature to recolor the
currently selected icon in the sidebar and in the
details view (not the icon view)
look wouldn't change if used with icon themes that
don't support this feature
This makes it look more in line with the breeze style
Wolfgang Bauer [Tue, 26 Apr 2016 14:11:26 +0000 (16:11 +0200)]
Specify a fallback icon to QIcon::fromTheme()
The default fallback of QIcon::fromTheme() is QIcon(), i.e. a null icon.
Set the generic "unknown" icon as fallback to prevent missing icons for
filetypes that specify an icon name that doesn't exist.
This also gets rid of "QPixmap::scaled: Pixmap is a null pixmap"
warnings in that case.
Wolfgang Bauer [Thu, 28 Jan 2016 20:03:14 +0000 (21:03 +0100)]
Fix check whether window is closed by session management
qApp->isSessionRestored() specifies whether the application has been
restored by session management. This is obviously wrong here. Use
qApp->isSavingSession() instead.
Do not delete sub menus of the control menu explicitly
This is not necessary because the sub menus are children of the main
menu, such that they are deleted together with the other actions by
QMenu::clear().
This prevents a crash that can happen if a sub menu is open while
another menu action is clicked.
Thanks to Fabian Vogt and Wolfgang Bauer for investigating this issue!
Marco Martin [Tue, 12 Jan 2016 13:01:51 +0000 (14:01 +0100)]
Take into account QApplication::wheelScrollLines() in wheel events
when setting a different "mouse wheel scrolls by" value in the
mouse kcm, the user expects every view to scroll more or less
accordingly (even if it's not strictlya text view)
This makes the scroll in dolphin take that into account