Issue 326

9th February 2014 by KDE Commit-Digest Team


Marta Rybczynska
Alex Fikl
Giacomo Barazzetti

This Week...

Akonadi server now supports searching via 3rd party search plugins which means it can retrieve results very quickly; it also supports server-search, so searching items not indexed by a local indexing service. Systemtray allows DBus-activation for Plasmoids. Dolphin and KMail's messagelist filter and search windows have been ported to Baloo. Okular adds tabbed interface. In KDevelop, it is now possible to jump to runtime output error messages. Kate adds keyword-based completion model. Google Drive API support has been added.


Commits 1679 by 133 developers
Open Bugs 21472
Open Wishes 15980
Bugs Opened 261 in the last 7 days
Bugs Closed 240 in the last 7 days

Commit Summary

Module Commits
Files Developer Commits
Laurent Montel
David Faure
Boudewijn Rempt
Vishesh Handa
Marco Martin
Burkhard Lück
Sebastian Kügler
Dan Vratil
David Edmundson
Iñigo Salvador Azurmendi

Internationalization (i18n) Status

Language Percentage Complete
Brazilian Portuguese (pt_BR)
French (fr)
Dutch (nl)
Bosnian (bs)
Galician (gl)
Estonian (et)
Italian (it)
Danish (da)
Hungarian (hu)
Catalan (ca)

Bug Killers

Person Bugs Closed
Jekyll Wu
Christoph Feck
Boudewijn Rempt
Jarosław Staniek
Dmitry Kazakov
Kurt Hindenburg
Thomas Lübking
Tom Hughes
Harald Sitter
Frank Reininghaus

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

Development Tools

Milian Wolff committed changes in [kdevelop] debuggers/gdb/gdbvariable.cpp:

Fix inspecting of nested STL containers.

The problem is that GDB MI shows no children for dynamic STL objects,
it just add "dynamic" attribute to it. Here is -var-list-children
output for std::map< int, std::vector<std::string> > object:

SEND: "-var-list-children --thread 1 --frame 0 --all-values "var1" 0 5
kdevelop(20230)/kdevelop (gdb debugger) GDBDebugger::GDB::processLine:
GDB output:
exp="[0]",numchild="0",value="0",type="const int",thread-id="1"},
type="std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
> >",thread-id="1",displayhint="array",dynamic="1"}],has_more="0""

As you see, the second variable, std::vector<std::string> has
numchild="0", but dynamic="1". This patch adds extra check for
"dynamic" attribute in variables.


Alexander Rieder committed changes in [cantor] /:

- change the font of the help panel to monospace
- escape spaces in the help messages, as they might be important for formatting

Patch by Yichao Zhou, thanks!

Andreas Cord-Landwehr committed changes in [parley] /:

Removes gradient in grade statistics.

This closes the mentioned bugs, as it removes the gradient in learning statistics and uses solid color.
It also makes it even more intuitive for the user, as it uses a single color for all the grades with different alpha values, increasing as grades increase. Thus darker shades mean higher grades.
Also, the grade color settings in Parley configuration have been changed, removing the different color palletes for all grades and leaving just a single base color for all the grades.
The "Use colors" option has been removed from the configuration.
Also, the font color for the translations in the editor has been changed to be the default black, making the text more readable.

, #328279

REVIEW: 115449

KDE Base

Dominik Haumann committed changes in [kate/frameworks] /src:

Quick Open in tab bar: Show number of hidden documents

With this patch, the quick open button in the view space tab bar shows
the number of hidden documents by showing e.g. "+5" as button text. This
way, the users should always be aware that there are more documents open
that currently do not fit into the tab bar due to lack of space.

Further, this patch adds a What's This tip to the quick open button that
explains in detail what this is all about.

Kurt Hindenburg committed changes in [konsole] /:

Restore --background-mode

For now restore this option that was removed for 2.11. This option
is somewhat a hack and abnormal feature. However, it seems a number
of people use it and I can see how it would be useful. So instead of
spending a lot of time right now trying to correct the issues, just
restore the previous code.
Ideally for KDE 5, this portion of the code can be better handled.


FIXED-IN: 2.13#

Vishesh Handa committed changes in [baloo] src/file/fileindexerconfig.cpp:

FileIndexerConfig: Disable initial update for files

When baloo_file starts it looks through every file in your filesystem
which should be indexed and compares the mtime of each of them with the
mtime stored in the db.

This is useful to detct changes which occured when baloo_file was not
running. However, baloo should always be running so we don't really need
to check this on startup. It causes large amount of disk io on startup.

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

Save filemetadata in a sqlite db if xattr are not supported

We are essentially making a triple store with (fileid, property, value)
where all the metadata is going to be stored.

Diffs: 1, 2, 3, 4 Revision 1f82ef5...
Marco Martin committed changes in [plasma-framework] /plasma:

port improve cache file dropping to plasma-framework

this ports revision c03052935b082 on kdelibs

improve cache file dropping

* fix regression: version the image cache file name
* version the svg elements
* drop old svg elements files
* respond to changes at runtime by watching the theme's metadata.desktop for changes
* move creation of the svg elements file into ThemePrivate::useCache()


Diffs: 1, 2, 3 Revision 5174030...
Martin Klapetek committed changes in [kde-workspace] plasma/generic/applets/digital-clock/contents/ui/DigitalClock.qml:

[plasma/digital-clock] Improve the time-format-extending regexp

Three small improvements in the regexp:

* No need for global matching
* Rather than .*h use anchored matching hh*
* Slight optimisation by replacing .* with .*?

Frank Reininghaus committed changes in [kde-baseapps] /src/kitemviews:

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

FIXED-IN: 4.13.0
REVIEW: 115432

Thomas Lübking committed changes in [kde-workspace/KDE/4.11] kwin/effects/zoom/zoom.cpp:


Laurent Montel committed changes in [kdepim] /core:

Bug 293653 - filterbar should be similar like in Thunderbird

Improve search bar. Now we can specify if you want to search in subject/body/bcc etc.


Dmitry Kazakov committed changes in [calligra/calligra/2.8] /ui/canvas:

Disable Calligra-wide global Esc and Space shortcuts

We don't need it since we use a different shortcut handling.

Dmitry Kazakov committed changes in [calligra/calligra/2.8] krita/plugins/extensions/dockers/advancedcolorselector/kis_color_selector_base.cpp:
Dmitry Kazakov committed changes in [calligra] /:

The weirdest patch ever

There is a bug in Qt/X11 which prevents the QPainter::drawText() call
be used in any non-gui thread, even when
QFontDatabase::supportsThreadedFontRendering() returns true. It seems
like some function in the font rendering routine eats the X11 replies
which are awaited by the GUI thread, effectively making the GUI thread
to hang up. The hangup happens in xcb_wait_for_reply().

This dirty workaround makes the text brush be initialized in the
GUI thread, saved to a global singleton and then fetched by the
threaded code in the paintop. Yes, that is weird, but this is the
best thing we can do right now :(

Dmitry Kazakov committed changes in [calligra/calligra/2.8] krita/ui/input/wintab/kis_tablet_support_win.cpp:

Don't eat WinTab Proximity packets from the WinTab's queue!

Qt also needs these packets to issue the Enter/Leave events. So
just use the *Peek variant of the function instead of *Get.

Jarosław Staniek committed changes in [calligra] /:

Improve focus, keyboard interaction and painting in table and form views

- Focus combo box after accepting or cancelling selection in combo popup
- Show focus in combo box after accepting or cancelling row changes
- Remove focus from combo box after clicking outside of its popup
- Improve appearance of combo box' button in table view
- Fix missing re-display of table view combo box popup
- Fix focus in table view combo box popup
- Make clipboard shortcuts work again in table view cells
- Properly set focus inside table view after activation


Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 5 more) Revision 2b6e380...
Dmitry Kazakov committed changes in [calligra/calligra/2.8] krita/ui/input/kis_input_manager.cpp:

Fix the ignored mouse events after using the tablet

Now each Mouse Event corresponds exactly to one Tablet Event.

Dmitry Kazakov committed changes in [calligra] krita/ui/kis_mimedata.cpp:

Fix a crash when trying to D&D too big layer (>20MiB)

Qt implements D&D using X11 window properties, which were probably
not supposed to be used for transferring 20+MiB between applications.
So we indroduced a new "application/x-krita-node-url" mime format
which saved the image into a temporary directory and passes the url only.
That is the way Qt handles "application/x-qt-image" itself.

Dmitry Kazakov committed changes in [calligra] krita/ui/

Fixed the half of the Pen/Eraser flip bug

We should call the update slot explicitly when changing the paintop preset
and do not rely on the widgets, which would also emit the update signal, but
later. We can't wait for widgets because they use a deferring timer

Now it is left to fix the Windows-only problem.

Dmitry Kazakov committed changes in [calligra] /basicflakes/tools:

Allow the user not to merge the last point in KoCreatePathTool

Now the user has a choice:
1) Shift+Click on the start point and the path will be merged and smoothed
2) Click and drag on the start point and the tangent of the last point
will be configured dynamically

Dmitry Kazakov committed changes in [calligra] /:

Fix interprocess updates of the configuration and a shortcut scheme

This patch does two things:
1) Removes handwriten saving of the shortcuts into the kritarc. Now the
shortcuts are saved into XML gui tree as it is supposed to.
2) Added synchronization between different instances of Krita using
QFileSystemNotifier on kritarc file.

Dan Vratil committed changes in [ktp-common-internals] /:

Fix for sending ini and exe files using Google Talk account

Each file transfer is checked for using Google Talk and forbidden extensions.
In that case, "_" character is appended to suggested file name. For all other
cases transfer process remains the same.

REVIEW: 115463

FIXED-IN: 0.8.0

User Interface

David Edmundson committed changes in [plasma-framework] /declarativeimports/core:

Fix multiscreen popup positioning

This patch makes two changes:
1) don't rely on window()->screen() it's rubbish.

2) if the dialog is parented to a desktop, we want to position
inside the parent, not outside the parent object

REVIEW: 115448

Sebastian Kügler committed changes in [plasma-framework] /declarativeimports/core:

Units reads longDuration from config file.

This reads the global animation duration value from plasmarc, and gets
notified of changes: change the file, all animations are updated

Put this into your plasmarc to disable animations globally:


As you might guess, other values will work as well.

shortDuration will always be 1/5 of this. (For now.)


Wolfgang Rohdewald committed changes in [kajongg/KDE/4.12] src/

make Random shuffle work with both Python 2.7.5 and 2.7.6

2.7.6 changed the API for shuffle(), released in November 2013.

This fix may change the minimal python version needed (currently 2.6.0).
But since I do not have anything older than 2.7.5 installed, it is
difficult to tell. I checked the history of python lib
and there _should_ be no problem.

People installing KDE/4.12 should already have some recent python,
so it should not matter. Anyway this is why I will not backport
this fix to KDE/4.11. And since 4.12.2 is about being released, I put
this fix into 4.12.3

FIXED-IN: 4.12.3


Development Tools

Milian Wolff committed changes in [kdevplatform] /subversion:

SVN plugin: Never launch configured external diff and diff3 tools.

I have my command-line Subversion client set up to use colordiff
instead of the internal diff implementation, so of course instead of
seeing a nice diff in KDevelop, I got a mess of ANSI colour escape

This patch disables any external diff or diff3 tools configured in
the ~/.subversion/config file. It does this by modifying
configuration in memory right after it is parsed from disk (or
possibly the registry on Windows). This way, we can safely assume
that running a diff or merge will produce unidiff format, and the
config file doesn't have to be changed.

N.B., it may be necessary to override the merge-tool command

REVIEW: 115444

Sergey Kalinichev committed changes in [kdev-clang] /:

Implement IBuddyDocumentFinder interface.

Now it's possiple to switch between source/header files.

REVIEW: 115518

Diffs: 1, 2, 3, 4, 5 Revision 142b86f...
Andrey Matveyakin committed changes in [kdevplatform] /contextbrowser:

Add code navigation via mouse forward/backward buttons

REVIEW: 115436

Kevin Funk committed changes in [kdevplatform] /:

Introduce NativeAppErrorFilteringStrategy

It's now possible to jump to runtime output error messages, such as
those from Qt:

Example (clickable) message:
ASSERT: "errors().isEmpty()" in file /tmp/foo/bar.cpp, line 49

REVIEW: 115533


Albert Astals Cid committed changes in [okular] /:

Tabbed interface


REVIEW: 110914

KDE Base

Michal Humpula committed changes in [kate] part/syntax/data/puppet.xml:

add puppet.xml syntax file

REVIEW: 115589

Sven Brauch committed changes in [kate] /:

Keyword-based completion model


Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 5 more) Revision ec9a0f7...
Martin Gräßlin committed changes in [kde-workspace] /:

[kwin] Re-enable KActivities support

* KWin lists the activities in the Alt+F3 menu
* Kcmrules though looks wrong

Diffs: 1, 2, 3, 4, 5 Revision ee7470e...
Thomas Lübking committed changes in [kde-workspace/KDE/4.11] kwin/effects/presentwindows/presentwindows.cpp:

spatial present windows zoom calculation

instead 1/16 of the area, 1/4 of the bigger and 1/32
of the smaller screen/window ratio
(ie. a shaded window would typically zoom to 1/32 of the screen height)

FIXED-IN: 4.11.7
REVIEW: 115455

Vishesh Handa committed changes in [kde-baseapps] /src:

Port Dolphin to Baloo

Nepomuk is being replaced with Baloo

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 23 more) Revision 5707e1e...
Martin Gräßlin committed changes in [kwindowsystem] /:

Introduce runtime platform support in KWindowSystem

This is a change similar to the one in KWindowInfo, but with variation
to the pattern due to the static container.

There is now a generic implementation of KWindowSystem which is
completely windowing system platform independent. This implementation
delegates all methods into a KWindowSystemPrivate class.

Each windowing system platform implementation needs to provide a
subclass (e.g. KWindowSystemPrivateX11) and provide all the methods
which are delegated. To make use of a platform implementation it needs
to be included in the ctor of KWindowSystemStaticContainer.

There is a dummy implementation for all not supported windowing system

This change also includes some API changes:
* KWindowSystem::windows() returns a copy instead of const-ref
* All methods are provided, there is no longer X11 specific methods
* private methods and enums are removed

NOTE: This change breaks the implementation for Windows and Mac OS!
They are currently excluded from build.

REVIEW: 115459

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 58d46fc...
Martin Gräßlin committed changes in [kde-workspace] /desktop/applets/taskmanager/package/contents/ui:

Add window thumbnail to taskmanager

It forks the DefaultToolTip qml and adds the window thumbnails.

Window thumbnail size is currently hard-coded to the same value
as in old implementation. This needs to become DPI independent!

REVIEW: 115536

Diffs: 1, 2, 3 Revision b12619c...
Sebastian Kügler committed changes in [kde-workspace] /generic/applets/systemtray/plugin/protocols/plasmoid:

[Systemtray] DBus-activation for Plasmoids

This feature allows loading and unloading Plasmoids when dbus services
come and go. Applets can specify in their metadata which service should
control their lifecycle.

This has the following advantages:
- We can dynamically only load Plasmoids when they're useful
- Applications can provide Plasmoids that appear and disappear bases on
the application running
- We can load controls for system service dynamically as they come and
- It makes it easier to delay loading of Plasmoids on startup until when
a specific service appears
- It makes Plasmoids and features more discoverable

One immediate user for this is the media controller applet, which will
now only be loaded once an MPRIS2-compatible media player is running.

Internally, this works as follows:
- we collect a list of plugins and related services in
- we query DBus for the list of services, async (initDBusActivatables())
- we go over that list, adding tasks when a service and plugin match
- we start watching for new services, and do the same
- whenever a service is gone, we check whether to unload a Plasmoid

Adding the following to the metadata.desktop file will trigger loading
the applet whenever a service matching the service name appears. The
applet will automatically be unloaded once the service disappears.


This feature was discussed and requested during the Plasma Sprint in

DIGEST:[Systemtray] DBus-activation for Plasmoids in system tray

Sven Brauch committed changes in [kate] part/syntax/data/mathematica.xml:

Syntax highlighting for the Mathematica language


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

Implement AgentSearchInterface into IMAP resource

The IMAP resource can now be queried by Akonadi server to perform
search via IMAP SEARCH command.

Squashed commit from akonadi/server-search branch.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 2 more) Revision 8cd21fe...
Christian Mollekopf committed changes in [kdepimlibs] /:

KIMAP new search api.

Diffs: 1, 2, 3 Revision dbbfced...
Dan Vratil committed changes in [kdepimlibs] /:

Implement support for server-side search in Akonadi

Instead of using Nepomuk and SPARQL queries, we now use SearchQuery and SearchTerm objects
to construct queries (internally represented as a JSON query language based on Baloo's
query language.

We now also support server-search, so agents that implement AgentSearchInterface can search
their storage service (like IMAP SEARCH for example) and return results back to Akonadi. This
allows us to search even items that are not indexed by a local indexing service, like Nepomuk
or Baloo.

Big thanks to Christian Mollekopf for his help

Squashed commit from akonadi/server-search branch.

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

Port KMail's messagelist filter and search window to Baloo and SearchQuery

Big thanks to Christian Mollekopf and Vishesh Handa for their help

Squashed commit from feature/baloo

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9 Revision ad06fa3...
Dan Vratil committed changes in [akonadi] /:

Merge branch 'server-search'

Akonadi server now supports searching via 3rd party search plugins (for
example Baloo plugin), which means we can retrieve results very quickly,
while not having to depend on 3rd party code, like we did with Nepomuk.

More importantly, we now support so called server search (or agent search).
Search results are not retrieved only from the search plugins, be the server
will also query agents and resources that implement AgentSearchInterface
to retrieve search results from their storage search service (for example
IMAP SEARCH extension). This makes it possible to retrieve search results even
for items that don't have full payload cached in Akonadi and therefore cannot
be indexed by Baloo or Nepomuk.

Big thanks to Christian Mollekopf for his help with implementing this.


Diffs: 1, 2, 3, 4, 5 Revision cbcb5b1...
Dan Vratil committed changes in [kdepimlibs] /:

Implement logging of Akonadi Session into a log file

Set AKONADI_SESSION_LOGFILE env variable, and Session will log all communication
between Akonadi server and client application. A file per PID per session is created.

Laurent Montel committed changes in [kdepim] /storageservice/webdav:

Implement download

Laurent Montel committed changes in [kdepim] /storageservice:

Start to implement gdrive suppport

Diffs: 1, 2, 3 Revision 52025c2...


David Faure committed changes in [calligra] filters/words/applixword/

Allow importing older versions of applixword files (from 1995-1996 !)


Dan Vratil committed changes in [libkgapi] /:

Merge branch 'drive'

Add support for Google Drive API.

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


Ian Wadham committed changes in [palapeli] /:

Re-organise zooming. Do just one rendering and scaling of the scene.

The zoom range (0 to 200) is adjusted to fit each puzzle as it loads,
with close-up view near one end and full-puzzle view near the other and
smoother operation in between. The close-up view is always larger than
the full view and can never be closer than a noticeable margin, even in
puzzles with a small number of pieces.

The scene is populated with items and sized only when all pieces have
been loaded from files, constructed, positioned and joined together (if
previously solved). A frame is added and the whole scene is fitted into
the view closely, showing the whole puzzle. Loading times are improved.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 3 more) Revision d4c88c8...
Ian Wadham committed changes in [palapeli] /:

Start implementing piece-holders, for use in large puzzles.

Diffs: 1, 2, 3, 4, 5 Revision 0debf09...


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

Add support for generating dependency diagrams to kgenframeworksapidox


Development Tools

Sergey Kalinichev committed changes in [kdev-clang] codecompletion/context.cpp:

Use MatchQuality role for Best matches items.

Also sort Best matches items a little bit. From now on items from the
current file will be shown at the top of the completion list.

REVIEW: 115446

KDE Base

Thomas Lübking committed changes in [kde-workspace/KDE/4.11] kwin/scene_opengl.cpp:


Cristian Oneț committed changes in [kmymoney] /widgets:

Performance optimization of the register view.

Instead of setting one delegate (the same) for each row by using
QAbstractItemView::setItemDelegateForRow() set the delegate for the
whole view using QAbstractItemView::setItemDelegate(). This way the
view will perform better because the delegate it uses does not depend
on the row on which it needs to be used.

QAbstractItemView::setItemDelegateForRow/Column should only be used if
a different delegate is needed for different rows/columns.

Wouldn't have spotted this without the help of callgrind. I must have
used setItemDelegateForRow() in the early days of my MV programming.

Cristian Oneț committed changes in [kmymoney] /mymoney:

Performance optimization for MyMoneySeqAccessMgr::price().

Added testcases for this method.

According to valgrind this was the most expensive method of the
MyMoneySeqAccessMgr class which, in turn, was the most expensive
KMyMoney class considering the execution time.

After this price() moves bellow the transactionList() and
calculateBalance() methods and MyMoneySeqAccessMgr moves bellow
clases like MyMoneySplit and MyMoneyTransactionFilter.

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



Anton Kreuzkamp committed changes in [qmlweb] /:

Refacture object creation & property type handling

This commit brings a refactoring of how
- the meta code from the parser looks like (it's now using javascript
constructors more extensively)
- QML elements are constructed (mostly moving code around)
- property values are assigned to the properties. Now each property has a
proper type and the new value will be passed to a constructor to match the
type. This considers basic types like integer, strings, colors and lists as
well as object types like Item, Rectangle or Component (assigning a Rectangle
to an Item-property is handled correctly (create a rectangle) as well as
assigning it to a component (create a component)).

Moreover property values are now assigned to the properties during the object
construction. Bindings are assigned but not evaluated. The evaluation happens in
a second run after all objects are created (prior all property values were
assigned here). This fixes context problems with object type properties (like
states) in conjunction with components (see last commit) and fixes the issue
that those objects were created multiple times.