|Commits||1635 by 146 developers|
|Bugs Opened||268 in the last 7 days|
|Bugs Closed||274 in the last 7 days|
|Aleix Pol Gonzalez||
|Dan Leinir Turthra Jensen||
|Antoni Bella Pérez||
|Mohamad Reza Mirdamadi||
Internationalization (i18n) Status
|Brazilian Portuguese (pt_BR)||
|Albert Astals Cid||
There are 58 selections this week
Implemented the Page-Up and Page-Down keypresses to select the previous and next image in the annotation dialog if the curser is positioned in the description edit field. Now the whole annotation dialog behaves alike, no matter where the cursor is.
fire adaptToScreen only once
this makes the desktops and panels more deterministically
follow the primary screen
* adaptToScreen is useless per se in moveEvent, but what's worse will cause a recursion loop
* disconnect the geometry sync from the old screen
Fix crash on close
Move code responsible for 'forgetting' a view outside of code responding to the
This avoids a loop like this:
- internal cleanup
- try to remove TerminalDisplay from QStackedWidget which is being deleted and
Instead the code now does:
=> ViewContainer::forgetView (does the internal clean up)
And if one tries to explicitly remove a view, sequence is:
The patch also removes ViewManager::focusActiveView() because it causes a crash
when closing a TerminalDisplay as it tries to put the focus on the deleted
TerminalDisplay. I initially called it through a queued connection, but realized
it is actually not needed for focus to be passed to the correct view, so just
[folder] Format file sizes in tooltip using KFormat
Reviewed-by: Eike Hein
Set alignment of the panel before setting the thickness
if we will not set it panel geometry will end up being wrong and hence availableScreenRect
This fixes plasmoids and icons being disappeared when adding panels.
Restore the original icon and label positioning approach.
Now again actually looks at the theme element's frame margins
to shift things around and size things.
- When exactly multi-line wrapping occurs.
- Relative alignment between text and icons.
Please move changes to this through RB next time :)
Breeze has to be tweaked a little for nice results, commit
Improve how we figure out the screenGeometry for a screen
Leverage on the vector position rather than looking through it, this way
it works even before the containment is set.
AppletQuickItem: Do not remember the popup dialog size
The popup dialog can currently never be resized, so it doesn't make
sense to record its height in a config file. Additionally, this also
causes problems when applet writers change the size of their plasmoid.
Since the old size is saved in the config file, it is shown with the old
dimensions instead of the new ones.
More explicit approach to grouping strategy destruction vs. group uncollapse.
Avoids ungrouping while GroupManager is destroyed and unnecessary
work in connected visualizations, and in practice a crash in Task
Manager from the ungroup model transaction hitting a half-destroyed
Use QDBusConnection instead of KDBusConnectionPool.
The races I was seeing were mostly a helgrind false positive (reported),
plus the race on serviceNames (QTBUG-39285) that is now fixed in Qt (5.3).
CollectionPathResolver: add API to specify collection to resolve relatively to
Top-level collections don't have to have a unique name (for instance one can have
a calendar and a mail account both called 'Work'), but CPR is too stupid for that
and will try to resolve the path from the first matching collection it finds,
which can lead to false or wrong results.
The new constructor allows specifying a collection that the CPR should resolve the
path relatively to. This can be used by resources for example, which can set their
root collection (which they usually now) and then resolve relatively to it.
Fixed crash when color picking from a group layer
Also fix all the pickers to read from projection() instead of paintDevice().
All nodes in Krita are expected to have projection() which is a visual
representation of the node in the stack.
The only new behavior this patch introduces is the picking from
Filter layers. Now it picks not from their 'selection' (which is
a paintDevice()), but from the filtered area cache (projection()).
OFX file import duplicates the last 12 transactions
Fix anisotropy in Color Smudge brush engine
The offset must be calculated correctly
Fixed highlight not following the current playlist after a playlist have
been removed or added.
Enable adding of nameless stars in HD catalog to observing list. More works need to be done still.
Add plot assistant to Python 2 backend
Implement copying images from the Viewer.
Select in the context menu or by pressing F7, as it is possible in GwenView.
Thanks to Tobias Leupold, who submitted this patch!
PowerManagementJob: The krunner switchUser function is back
[notifications] Introduce a list of apps that are limited to single notification only
This prevents some apps to spam lots of notifications when all it needs
is actually just one single notification.
Imagine you're switching songs in your playlist quickly and each song
change sends new notification, but when you get to the tenth song, you
still see the notification from the 3rd song (because timeouts) and you
don't really care about all those songs changes still in the queue as
you see it in the playlist anyway.
So this patch limits certain apps to have only one single notification
which is always updated. So far Clementine and Spotify is there.
Switching songs or changing playback status creates only one single
Additionally, the list gets added entries from a config file too.
Split startDate property into today and displayedDate in calendar component
Basically splits the Calendar::m_startDate into 'today' and
'displayedDate', where displayedDate is the date that is displayed (it
controls the days model etc) and can be manipulated by the user by eg.
changing months in the plasmoid, and today is the current day, populated
by our dataengine (which means it auto-updates with no need for a
This allows for greater flexibility and things like "Go back to today"
when eg. the plasmoid is hidden or when the user have browsed too far in
the calendar and just wants to get back to today (the button to do that
Also this fixes a problem where the time dataengine is being polled
every 30secs for the clock and would reset the calendar view as the
startDate is currently bound to the dataengine and the view resets on
KRunner: Auto restart on crash
New API: allow querying installed catalogue
New method: KLocalizedString::availableDomainTranslations(QByteArray)
This method allows querying for "installed" translations without using
setApplicationDomain(). This is useful to find language catalogs other
than the current one.
This method will be used in the new translations KCM.
Breezify Battery Monitor
- Batteries are now in a proper ScrollView since in Plasma 5 popups can not (yet?) be resized
- Get rid of that expanding thing for details, it was fancy and all in 4 but doesn't play well with 5
- Use ToolTip for battery details
- Remove redundant information (non-power supply display name is always vendor + model, no need to show these in the details again)
- Make icons medium size to be consistent with Plasma NM
- More refined spacing
[pager] Add changing desktops by scrolling mouse wheel
Reviewed-by: David Edmundson
Make it possible to switch sessions from the lock screen
Add Category support to the Plan2 format
Add support for assigning categories to a holiday. A holiday must have
one or more categories.
Add support for XOAUTH2 authentication method
XOAUTH2 is used by Gmail to authenticate via OAuth tokens instead of regular
username + password.
This adds support for XOAUTH2 to KIMAP. However cyrus-sasl does not support
XOAUTH2, so this won't work out of the box, unless a 3rd-party SASL plugin
Implement fetching Virtual References via FETCH command
This adds a new parameter to fetch scope called VIRTREF. When listed in fetch
scope, the FETCH response will include list of virtual collections that the item
is linked to. This allows resources to link/unlink items incrementally, without
having to make a full listing of all collections to find exact inconsistency
between the cache and backend storage.
[FEATURE] Allow activation of the Isolated Mode with Alt+click on a layer
This also adds a special activation role to KoDocumentSectionModel,
which happens on Alt+Click only. In case of event the model gets the following
sequence of event roles:
1) The active element is switched
2) The model gets a ActiveRole notification
3) The model gets one more SpecialActiveRole, telling
that an additional action should be done
[FEATURE] Edit Selection Mask
This patch adds an action
Selection->Show Global Selection Mask
When the checkbox is toggled, it makes the global selection masks be
shown in the Layers docker. When you activate this mask, you can use
any tool you like on top of it. For example Transform or Brush tools :)
[FEATURE] Fixed painting and color picking on global selections
This patch fixes three problems:
1) Painting on a global selection now is not recursively limited to
the selected area of the selection itself. If current node and active
selection mask are the same entity, KisResourcesSnapshot will report
no selection active.
2) Color Picker can now pick from selection masks. Yes, it converts the
color into compositionSourceColorSpace() to make it paintable.
3) The Color Picker's option widget now shows alpha value correctly,
although the resource server gets opaque color.
Multilayer selection: implement drag & drop of multiple layers
This changes KisMimeData to handle a list of layers. If you try to drag a
complex selection with groups and so on, it will check whether the group
that contains a selected layer is selected and then drag the group; otherwise
it will drag all the layers in a flat list, instead of trying to keep
the group hierarchy with the unselected layers discarded.
This is the behaviour that Photoshop shows for me as well.
Use XEP-0027 (Current OpenPGP Usage) instead inline PGP for signed and encrypted messages when recipient client support it
Implemented more CIFS mount options under Linux as well as a whitelist
of mount.cifs options that are save to be entered via the "Additional options"
line edit in the configuration dialog.
The new (and removed) mount options are:
- 'cache=none|strict|loose' replacing 'directio' that is deprecated as of
kernel 3.7 and was thus removed. In the configuration dialog the respective
setting is named 'Cache mode'.
- 'vers=1.0|2.0|2.1|3.0'. In the configuration dialog the respective setting
is named 'SMB protocol version'.
- 'forceuid'. In the configuration dialog the respective setting is named
'Definitely assign the UID'.
- 'forcegid'. In the configuration dialog the respective setting is named
'Definitely assign the GID'.
To ensure a seamless transition, configuration updates are provided.
To enforce proper checking of the additional options provided by the user,
the "Additional options" line edit has been set read-only and the user must
use the new edit button to be able to enter the options. All options that
are not whitelisted - i.e. they have already been defined elsewhere or they
pose a potential security risk - will be removed from the list upon commit.
This is, among others, the proper fix to the security issue reported
by Heiner Markert (aka CVE-2014-2581) and initially fixed in version 1.1.2.
WIP on authentication interface stuff.
SMS code sending disabled.
[aurorae] Improve reading the border elements from C++ side
The KWin::Borders element is provided by an extension plugin. The reason
for that is to be able to use it from e.g. the kcm or Plasmate without
needing to compile the code in.
But this results in Aurorae itself not being able to access the element.
The solution is to first load our decoration plugin and afterwards
register the borders element again with the version compiled in from
With that we can now read all borders and paddings without using
properties. Also we could connect to change signals and have the borders
and padding handling completely stateful. Might be an idea for extending
the decoration library...
Add word checking backend functionality.
Optimize: Cache string keys used for attribute lookup.
The string literal will otherwise be transformed into a QString,
which requires two allocations (QString's data and the actual
QChar* array in there). Saving this gives a noticeable boost, esp.
considering how often these methods are being called during painting.
Optimize: Disable semi-expensive debug output generation.
This debug message was never used, but still constructed on every
paint event. Getting rid of it makes this a bit faster.
RegExpCache: Use 'QRegularExpression' instead of "QRegExp"
This results in a performance increase of almost 10x. This is especially
important because with this we will now consume less cpu when checking
which files should be indexed, and we will be faster.
Make KFileItem a Q_MOVABLE_TYPE
The motivation for this change is that this reduces the memory usage of
a QList<KFileItem> a.k.a. KFileItemList, which is used extensively in
KCoreDirLister's API and in applications, by 32 bytes per item on a
64-bit system, and that it may also improve the performance in some
situations because many memory allocations are saved.
Some changes in KCoreDirListerCache were required because this class
stores raw pointers to KFileItems and expects that these always remain
valid. To guarantee that this is the case and that the KFileItems owned
by KCoreDirListerCache do not move, a new class NonMovableFileItem is
introduced, which inherits KFileItem, but is not a Q_MOVABLE_TYPE.
A better solution would be to modify KCoreDirListerCache such that it
does not need the KFileItem pointers any more. The current solution is
meant as a temporary workaround for this problem, to make it possible
to make the binary incompatible Q_MOVABLE_TYPE change for KFileItem
before KF5 is frozen for such changes.
Optimize KConfigGroup::exists and similar operations.
Before, these kind of read-only operations did a lot of allocations:
1) allocate a list of all sub groups
2) for the above, also allocate a sub-group match key
3) iterate over sub groups, allocate a list of all keys in there
and then finally check whether that list is non-empty
All of the above is now done without a single allocation, by simply
iterating over the list of entries.
Note: The whole list was iterated even before in allSubGroups. Now
we still do that, but check for non-empty keys in the group or
sub group directly. Much more efficient.
Note2: While at it, allSubGroups is also optimized to not require the
allocation of the subgroup match key.
forward-port of commit eaffd50adfd7fcbeafadb0248904176808b4499d
Consider additional batteries for power management (when the critical battery timer is running)
After resuming from suspend, all batteries are added
to powerdevil. When a battery, with charge lower or
equal than the critical charge percentage is added, the
critical battery timer will be started.
In the current version the critical battery timeout can
only be interrupted by plugging in AC.
But if the system has more than one battery, the global
charge percentage can be greater than the critical charge
percentage and so the system shouldn't suspend. To achive
this behaviour, we calculate the global charge percentage
whenever a new battery was added and if the critical
battery timer is running and the global charge is high
enough, we stop the timer.
Also we use the already calculated global charge percentage
for the battery charge percentage notification instead of
the charge of each individual battery.
With this patch, the user can not only interrupt the critical
timer by plugging in the AC but also by plugging in a new or
additional battery (if the battery has enough charge).
Note: The 30 sec timeout message will still popup.
Tested with a Thinkpad T440s (two batteries)
@Philipp Paris: Thanks for testing!
Alternate between system info and search hint
Instead of showing the search hint once, we now alternate between the
info and the hint once every 8 seconds.
Some people have complained that the hint is not clear enough for users
to discover the search feature. This change makes the "Type to
search..." hint more prominent.
Always show battery remaining time
I am really tired of this topic. Yes, the battery remaining time is not that accurate and
jumps around (the latter is something that could be fixed using a moving average). But if
we jump onto that train we would also need to remove the battery percentage itself as it's not
accurate either. 30% on a dead battery can quickly become 5% and then the notebook suddenly
turns off. "Battery: Present".
The remaining time is in the battery's tooltip, many distributions have even patched the
battery monitor to show the time by default, there's even a clone of the original battery
monitor on GHNS just with that option enabled; every other desktop environment even emphasizes
the remaining time, Windows prefers the time over percentage, Mac OS X allows you to put
the remaining time in the panel rather than the percentage, etc etc.
As a maintainer I now made the decision to show remaining time by default - it's no
"in your face" display but in the battery's detail section - and I would kindly
ask all the people involved in this discussion to respect this. Thank you!
First approach to a KF5 port of KDE Connect
Ported using KDELibs4Support, for a smaller delta, so we can keep
developing on master until we decide not to.
At the moment, it builds and installs but tests don't pass because
of a QCA2 initialization problem I didn't manage to debug yet.
[kcmkwin/kwincompositing] Drop the OpenGLErrorView from Effects
As we have the split between Effects and Compositor settings nowadays
it's incorrect to have an Compositor related option exposed in the
Effects settings view. Thus the OpenGLErrorView should be removed. As
a nice side-effect that simplifies the main qml file quite a bit by
turning the EffectView from Item into Rectangle.
If it shows that we need the reset GL check in the effects view it would
be better to use a KMessageWidget like in the compositing view.