Issue 345

22nd June 2014 by KDE Commit-Digest Team


Alex Fikl
Danny Allen
Giacomo Barazzetti

This Week...

Marble can preview Geo Data files (GPX, OSM, KML, ESRI) in the file manager or file dialogs. Plasma workspace introduce a list of apps that are limited to single notification only to limit the number of notifications the user sees. KDE-PIM gains an initial implementation of native Gmail resource. Krita allows global selection masks to be shown in the Layers docker to be used with other tools; implements drag & drop of multiple layers. First approach to a KF5 port of KDE Connect.


Commits 1635 by 146 developers
Open Bugs 22696
Open Wishes 16071
Bugs Opened 268 in the last 7 days
Bugs Closed 274 in the last 7 days

Commit Summary

Module Commits
Files Developer Commits
Laurent Montel
Marco Martin
Gilles Caulier
Sébastien Renard
Aleix Pol Gonzalez
Roman Paholík
Dan Leinir Turthra Jensen
Antoni Bella Pérez
David Edmundson
Mohamad Reza Mirdamadi

Internationalization (i18n) Status

Language Percentage Complete
Swedish (sv)
Brazilian Portuguese (pt_BR)
German (de)
Portuguese (pt)
Polish (pl)
French (fr)
Dutch (nl)
Spanish (es)
Bosnian (bs)
Estonian (et)

Bug Killers

Person Bugs Closed
Chao Feng
Christoph Feck
Marco Martin
David Edmundson
Eike Hein
Boudewijn Rempt
Albert Astals Cid
Jasem Mutlaq
Martin Klapetek
Gilles Caulier

Commit Countries

Commit Demographics




  Bug Fixes Features Optimization Security Other



Development Tools



[] []    


[] [] []   

KDE Base

[] [] []   []


[] []    


[] []    





Networking Tools

  []    []

User Interface

  []    []







There are 58 selections this week

Bug Fixes


Inge Wallin committed changes in [parley] src/settings/languageproperties.cpp:

Fix a crash when adding a 3rd language and downloading the grammar

Thanks Andreas Xavier for the patch!

REVIEW: 118621


Jesper Pedersen committed changes in [kphotoalbum] /:

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.

Diffs: 1, 2, 3, 4, 5 Revision 344e34f...

KDE Base

Eike Hein committed changes in [plasma-desktop] applets/taskmanager/package/contents/ui/Task.qml:

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

Eike Hein committed changes in [plasma-workspace] /:

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

Vishesh Handa committed changes in [plasma-framework] /plasmaquick:

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.

REVIEW: 118849

David Faure committed changes in [kio] /core:

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).

Diffs: 1, 2, 3, 4, 5 Revision 7b541b2...
Marco Martin committed changes in [plasma-workspace] /:

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

Aurélien Gâteau committed changes in [konsole/frameworks] /:

Fix crash on close

Move code responsible for 'forgetting' a view outside of code responding to the
TerminalDisplay deletion.

This avoids a loop like this:

=> ~QStackedWidget
=> ~TerminalDisplay
=> QObject::destroyed
=> ViewContainer::viewDestroyed
=> ViewContainer::removeViewWidget
- internal cleanup
- try to remove TerminalDisplay from QStackedWidget which is being deleted and

Instead the code now does:

=> ~QStackedWidget
=> ~TerminalDisplay
=> QObject::destroyed
=> ViewContainer::viewDestroyed
=> ViewContainer::forgetView (does the internal clean up)

And if one tries to explicitly remove a view, sequence is:

=> ViewContainer::forgetView
=> ViewContainer::removeViewWidget

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
removed it.

REVIEW: 118839

Martin Klapetek committed changes in [plasma-desktop] containments/folder/package/contents/ui/ItemDelegate.qml:

[folder] Format file sizes in tooltip using KFormat

Reviewed-by: Eike Hein

Bhushan Shah committed changes in [plasma-workspace] shell/panelview.cpp:

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.

REVIEW: 118847

Aleix Pol Gonzalez committed changes in [plasma-workspace] shell/shellcorona.cpp:

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.


Dan Vratil committed changes in [kdepimlibs] /:

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.


Boudewijn Rempt committed changes in [calligra/calligra/2.8] krita/plugins/paintops/colorsmudge/kis_colorsmudgeop.cpp:

Fix anisotropy in Color Smudge brush engine

The offset must be calculated correctly

Stephane Mankowski committed changes in [skrooge] /:

OFX file import duplicates the last 12 transactions

Boudewijn Rempt committed changes in [calligra/calligra/2.8] /plugins/filters/blur:

Fix Lens Blur filter artifacts when used as an Adjustment Layer

Dmitry Kazakov committed changes in [calligra] /:

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()).


Ashish Madeti committed changes in [plasma-mediacenter] /:

Fixed highlight not following the current playlist after a playlist have
been removed or added.

REVIEW: 118824


Development Tools

Denis Steckelmacher committed changes in [kdev-qmljs] /:

Support versioned module imports

REVIEW: 118795

Diffs: 1, 2, 3, 4, 5, 6 Revision 223c6d8...
Milian Wolff committed changes in [kdevelop] /cpp/cppduchain:

C++11: properly support "auto* v = ..." syntax.


Friedrich W. H. Kossebau committed changes in [marble] /:

Add a thumbnailer for the supported geo data files (GPX, OSM, KML, ESRI)

FEATURE: Geo Data files (GPX, OSM, KML, ESRI) now can be previewed in the file manager or file dialogs

REVIEW: 118681

Thanks tackat and earthwings for review

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 4 more) Revision eabcd70...
Jasem Mutlaq committed changes in [kstars] /:

Enable adding of nameless stars in HD catalog to observing list. More works need to be done still.

Filipe Saraiva committed changes in [cantor] /backends/python2:

Add plot assistant to Python 2 backend

Diffs: 1, 2, 3, 4 Revision 2757a94...


Johannes Zarl committed changes in [kphotoalbum] /:

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!


KDE Base

Kai Uwe Broulik committed changes in [plasma-workspace] /batterymonitor/contents:

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

Diffs: 1, 2, 3, 4, 5 Revision e0978f4...
Martin Klapetek committed changes in [plasma-desktop] applets/pager/package/contents/ui/main.qml:

[pager] Add changing desktops by scrolling mouse wheel

Reviewed-by: David Edmundson

Aleix Pol Gonzalez committed changes in [plasma-workspace] /contents:

Make it possible to switch sessions from the lock screen

Vishesh Handa committed changes in [plasma-workspace] /:

KRunner: Auto restart on crash

Sebastian Kügler committed changes in [ki18n] /:

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.


Martin Klapetek committed changes in [plasma-workspace] /notifications:

[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.

REVIEW: 118796

Diffs: 1, 2, 3, 4 Revision 299ba61...
Martin Klapetek committed changes in [plasma-framework] /declarativeimports/calendar:

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
that change.

REVIEW: 118668

Vishesh Handa committed changes in [plasma-workspace] dataengines/powermanagement/powermanagementjob.cpp:

PowerManagementJob: The krunner switchUser function is back

Martin Gräßlin committed changes in [kglobalaccel] /:

Introduce convenient methods to set active and default shortcut

Simplifies the setting of shorctus when default and active should be
the same or if only one shortcut is needed.

REVIEW: 118844


Dan Vratil committed changes in [kdepim-runtime/gmail-resource] /gmail:

Gmail Resource: Initial implementation of native Gmail resource

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 13 more) Revision 5ee0a36...
Dan Vratil committed changes in [kdepimlibs] /:

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
is provided.

Dan Vratil committed changes in [akonadi] /:

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.

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 78ddb15...
John Layt committed changes in [kdepimlibs] /parsers/plan2:

Add Category support to the Plan2 format

Add support for assigning categories to a holiday. A holiday must have
one or more categories.

Diffs: 1, 2, 3, 4 Revision 22eae7b...


Boudewijn Rempt committed changes in [calligra] /:

Add import/export for R16 heightmaps

These are used for games. The format is undocumented, but basically
just a stream of 16 bit integers.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 2 more) Revision 2da6346...
Dmitry Kazakov committed changes in [calligra] /:

[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

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 49f4726...
Boudewijn Rempt committed changes in [calligra] /:

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.

Dmitry Kazakov committed changes in [calligra] /:

[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 :)

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1 more) Revision aa6fb99...
Dmitry Kazakov committed changes in [calligra] /:

[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.

Networking Tools

Alexander Reinholdt committed changes in [smb4k] /:

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.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 3 more) Revision 5d1de3b...
Alexandr Akulich committed changes in [telepathy-morse] connection.cpp:

WIP on authentication interface stuff.

SMS code sending disabled.

Pali Rohár committed changes in [kopete] /jabber:

Use XEP-0027 (Current OpenPGP Usage) instead inline PGP for signed and encrypted messages when recipient client support it

User Interface

Martin Gräßlin committed changes in [kwin] /aurorae/src:

[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...

Diffs: 1, 2, 3 Revision bc236f3...


Vishesh Handa committed changes in [powerdevil] daemon/actions/bundled/brightnesscontrol.cpp:

BrightnessControl: Show the OSD on pressing the brightness key

The brightness is currently always shown when it changes. This patch
doesn't change that.

REVIEW: 118792


Jeremy Paul Whiting committed changes in [kanagram] /:

Add word checking backend functionality.

Diffs: 1, 2, 3, 4 Revision d780810...



Milian Wolff committed changes in [kgraphviewer] /part:

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.

Milian Wolff committed changes in [kgraphviewer] src/part/canvaselement.cpp:

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.

KDE Base

Milian Wolff committed changes in [kconfig] src/core/kconfig.cpp:

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.

REVIEW: 118586

forward-port of commit eaffd50adfd7fcbeafadb0248904176808b4499d

Vishesh Handa committed changes in [baloo/frameworks] /file:

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.

Frank Reininghaus committed changes in [kio] /core:


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.

REVIEW: 118775

Diffs: 1, 2, 3 Revision 4b49819...


Kai Uwe Broulik committed changes in [plasma-workspace] /batterymonitor/contents:

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!

Emmanuel Pescosta committed changes in [kde-workspace/KDE/4.11] powerdevil/daemon/powerdevilcore.cpp:

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!

FIXED-IN: 4.11.11
REVIEW: 118801

Sebastian Kügler committed changes in [plasma-desktop] applets/kickoff/package/contents/ui/Header.qml:

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.

Rohan Garg committed changes in [plasma-workspace] /:

Port the webshortcuts runner to Plasma 5

REVIEW: 118797

Diffs: 1, 2, 3, 4 Revision abc0214...

Networking Tools

Aleix Pol Gonzalez committed changes in [kdeconnect-kde/frameworks] /:

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.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 42 more) Revision a1a560c...

User Interface

Martin Gräßlin committed changes in [kwin] /kwincompositing/qml:

[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.

REVIEW: 118790