Issue 273

3rd February 2013 by KDE Commit-Digest Team


Marta Rybczynska
Aleix Pol
Thibaut Gridel

This Week...

KDevelop adds basic support for typedefed function pointers; introduces fast documentation access; performance improves by caching the hash of indexed set nodes. KWin adds a new effect: Glow on approaching Screen Edge; Non-composited Outline is ported to XCB. Marble can now open .kmz files. Calligra adds an ability to transform layers recursively with a Transform Tool. Marble sees work on a plugin to draw polygons and placemarks on a map.


Commits 2843 by 176 developers
Open Bugs 21122
Open Wishes 15793
Bugs Opened 354 in the last 7 days
Bugs Closed 343 in the last 7 days

Commit Summary

Module Commits
Files Developer Commits
Gilles Caulier
Laurent Montel
Chetan Khona
Sebastian Kügler
Aleix Pol Gonzalez
Burkhard Lück
David Edmundson
Friedrich W. H. Kossebau
Ignat Semenov
Jan Kundrát

Internationalization (i18n) Status

Language Percentage Complete
Ukrainian (uk)
Estonian (et)
Swedish (sv)
Portuguese (pt)
Polish (pl)
Spanish (es)
German (de)
Dutch (nl)
French (fr)
Italian (it)

Bug Killers

Person Bugs Closed
Martin Gräßlin
Christoph Feck
Jekyll Wu
Dawit Alemayehu
Lamarque Souza
Myriam Schweingruber
Laurent Montel
ralf-engels gmx de
Milian Wolff
Thomas Lübking

Commit Countries

Commit Demographics



Bug Fixes

Development Tools

Milian Wolff committed changes in [kdevplatform/1.5] /dvcs:

Make it possible to kill DVcsJobs.

This is a safety measure, if a DVcsJob would be running and we close
KDevelop we cannot properly stop it. Then if result comes in we
might try to access our platform API in an invalid state.

This is the same reason why we see issues such as shown in bug
309715 - there for the CTestFindJob.

Eli MacKenzie committed changes in [kdevplatform/1.5] vcs/dvcs/dvcsjob.cpp:

Set error state correctly so that KJob notices

Setting the error number and text is not enough to precent KJob
from trying to run a job. I've also changed the job state to

REVIEW: 108689

Milian Wolff committed changes in [kdevelop/4.5] languages/cpp/parser/memorypool.cpp:

Fix the memory pool thread local data access for good.

The issue was quite apparent yet I wonder how I could have been so
lucky as to never encounter it until today...

Thing is, we create the parse session (and thus also the memory pool)
in the constructor of the CPPParseJob which is still in e.g. the main
thread. Only later inside ::run() are we actually in the background
thread - and there we access the thread local data from inside

Now we used to initialize the thread local data in the MemoryPool
but that is of course a different thread than what we encounter in
MemoryPool::allocateBlock later on.

The fix is quite simple and elegant, and actually makes the memory
pool even faster. We now initialize the thread local cache only
upon first destruction of a memory pool. Any access in allocateBlock
before could not find free blocks anyways.

Furthermore we now only allocate the first block once we actually
need it (i.e. upon first call to ::allocate()).

Milian Wolff committed changes in [kdevelop/4.5] /cmake/testing:

Make CTestFindJob killable to ensure it gets stopped on shutdown.

This should be the proper fix for the crash-on-close bug that
was encountered quite often. I do not understand how to trigger it
on startup though - can someone try with this patch again?


Barth Netterfield committed changes in /branches/work/kst/portto4/kst/src/widgets/curveappearance.cpp:

Respect dialog defaults and curve properties for point density.

Illya Kovalevskyy committed changes in [marble] /:

Big changes in MarbleWidget (mostly MarbleLegendBrowser)

(*) The TemplateDocument class added
(*) Cities bug fixed
(*) MarbleLegendBrowser tweaked (support of Twitter Bootstrap)
(*) MapInfoDialog improved (see MarbleLegendBrowser changes)

REVIEW: 108511

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


Aurélien Gâteau committed changes in [gwenview/KDE/4.10] /thumbnailview:

Bring back thumbnail buttons with Plastique or Cleanlooks style

The Qt::WA_Hover attribute was removed in commit 9c6ce9d5 to fix a
drag'n'drop bug, but setting WA_Hover was not the cause of the bug. The
problem came from the call to setMouseTracking().

Note that I set the attribute in the delegates instead of in the view,
this causes code duplication, but it makes more sense for the delegates to
set the attributes they need than to leak delegate needs in the view.

The code handling the thumbnail buttons should be moved out of the
delegates to avoid duplication, but that can't be done for 4.10.

REVIEW: 108660
FIXED-IN: 4.10.0

KDE Base

Martin Gräßlin committed changes in [kde-workspace] /:

Notify effects when the screen gets locked

EffectsHandlerImpl starts to monitor DBus for the screen being locked and
provides this information to the Effect system by allowing them to ask
whether the screen is currently locked and by emitting a signal when the
screen gets locked/unlocked.

This information is needed to ensure that no private data is shown on the
screen. The following effects are adjusted:
* taskbar thumbnails
* thumbnail aside
* mouse mark
* screen shot

FIXED-IN: 4.11
REVIEW: 108670

Aaron J. Seigo committed changes in [kde-workspace/KDE/4.10] plasma/desktop/shell/plasmaapp.cpp:

when the activity changes, hide the controller

* open activity manager with meta+q
* change activity by clicking on activity
* press meta+q again -> nothing (the window is on the other activity!)
* press meta+q -> finally shows

i considered keeping the activity manager visible and putting it on
all activities .. but that would mean having to manually close the
thing unless we closed it automatically anyways.

Gerald Senarclens de Grancy committed changes in [kate] /:

fixed and extended python indentation mode

Indentation is now correct even if a comment is at the end of a line.
Added two regression tests.

The updated version of the script also deals with opening and closing
argument lists and sequences as suggested in PEP8.

REVIEW: 108644

Aaron J. Seigo committed changes in [kde-workspace/KDE/4.10] ksmserver/screenlocker/greeter/greeterapp.cpp:

the window needs to be *raised*

it is not managed by the window manager (explicitly) so it needs to handle
this itself.

this completes the "fix the situation when new screens appear while locked"


Aurélien Gâteau committed changes in [homerun/extra-action-indicator] /contents/ui:

Remove flying highlight: it does not mix well with actionList button

Aaron J. Seigo committed changes in [kde-workspace/KDE/4.10] /screenlocker:

update geometry of the lock window when screen changes

this is the window that lays *under* the acdtual lock UI, and which
prevents visibility of the underlying desktop (and lets the window
manager know what's up) thereby allowing us to care a lot less about
whether the greeter crashes while improving security with compositing on.

previously it was not changing geom when the screen would .. which was
not noticed due to a combination of issues; but with kscreen being used,
its magic revealed the problem.

based on a patch by Thomas Lübking


David Faure committed changes in [kdelibs] /:

Fix mimetype handling when a desktop file lists base and derived mimetype.

I had the following issue:
emacs.desktop says: MimeType=text/plain;text/x-csrc;
My mimeapps.list says: text/plain=kde4-kate.desktop;emacs.desktop;
(and has no entry for text/x-csrc)

When opening a text/plain file, kate is selected, no problem.
But when opening a text/x-csrc file, emacs is selected, against my
expectations. Discussed on the XDG list, Alexander Larsson and I agreed
that when a desktop file lists both the base and derived mimetype, we
should simply ignore the derived mimetype, it's redundant.

The code is a bit complex, so let's test this in master before a possible
backport (if any; I couldn't find a bug report about this).

Diffs: 1, 2, 3, 4 Revision 871cccc...
Thomas Lübking committed changes in [kde-workspace] kwin/geometry.cpp:

constrain maximization/restorage for fixed ratio

when eg. vertically maximizing a cinemascope video in mplayer
it would horizontally exceed the (16:9) screen, so this
case is translated to a full maximization (effectively binding
the window into screen dimensions)

also, when restoring such video from a horizontal maximization
the restore would usually keep the height (thus breaking the
window aspect) so pass geom_restore -> restore through adjustedSize()

REVIEW: 108702

Frank Reininghaus committed changes in [kde-baseapps] dolphin/src/kitemviews/kfileitemmodel.cpp:

Fix crashes in KFileItemModel::removeItems()

These crashes were caused by the recent commit
ff3267c6dcd0f6d0621b3a96b5462a9581a03883. It introduced two problems:

a) A logic error in the code that removes the ItemData pointers from
m_itemData that could cause crashes if multiple item ranges are
removed, and there were un-removed items behind the last one.
b) The implicit assumption that any call of removeItems() will actually
result in items being removed in the model. This is incorrect if
the model is first cleared and then the hidden-files setting is
modified, which happens if "Save view properties for each folder" is
enabled, and a folder where hidden files are shown is left. In that
case, the dir lister emits itemsDeleted for the hidden items after
they have been removed from the model due to the folder change.

I'll add a unit test covering these issues soon.

Many thanks to Romário Rios and Hrvoje Senjan for testing!


David Edmundson committed changes in [ktp-common-internals] /:

Generally fix MessageProcessor to match the original design

- Make Message constructor private and a friend class of the message processor. This simplifies code, and makes accidentally skipping the escape filtering impossible
- Message now has two extra properties isHistory and messageDirection
- Message filters have access to the "message context" the account/channel in which the message was received
- Remove the broken filterIncomingMessage / filterOutgoingMessages with just one method. Plugins can use messageDirection to get the same functionality

This is a setup to fix a range of bugs in the message filters

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 1d8ae32...
David Faure committed changes in [kdepimlibs/KDE/4.10] kimap/sessionthread.cpp:

Calling reconnect from the disconnected signal confuses qt sockets.

Qt does some more cleanup after emitting disconnected, so if we're already
trying to reconnect, it will clean that up on the way. Better let Qt
finish, and only then reconnect.

Laurent Montel committed changes in [kdepim/KDE/4.10] ktimetracker/timetrackerwidget.cpp:

Apply patch from Chuso Perez

"MainWindow tries to connect TrayIcon slots to some signals sent by
TimetrackerWidget. But these signals are not being emitted by
TimetrackerWidget, they are being emitted by TaskView.
This code patches TimetrackerWidget to receive those TaskView signals
and propagate them so MainWindow can receive them to connect them to

REVIEW: 107482

Laurent Montel committed changes in [kdepim/KDE/4.10] /:

Fix Bug 310808 - Add context menus for list entries

Added menu when make sense.

FIXED-IN: 4.10

Laurent Montel committed changes in [kdepim/KDE/4.10] incidenceeditor-ng/eventortododialog.cpp:

Fix Bug 314079 - Kmail crashes while counter-proposal an event invite

FIXED-IN: 4.10

mInvitationDispatcher can be null if CalendarSupport::KCalPrefs::instance()->useGroupwareCommunication()
is false

Laurent Montel committed changes in [kdepim/KDE/4.10] messagecomposer/attachmentcontrollerbase.cpp:

Fix Bug 314221 - composer attaches directory without confirmation if

also a file is selected
FIXED-IN: 4.10.1


C. Boemann committed changes in [calligra] /textshape/dialogs:

Make sure we actually apply strikethrough and underline styles from character dialog
There were several logical errors in the previous code. Basically you had to select
both a type and a style in order to apply. Now selecting a type implies you have also selected
a style.

Diffs: 1, 2, 3 Revision 41063ed...


Sinny Kumari committed changes in [plasma-mediacenter] shells/newshell/package/contents/ui/mediacenter.qml:

auto hide toolbars when user clicks on picture to view

Jean-Baptiste Mardelle committed changes in [kdenlive] src/onmonitoritems/onmonitorpathitem.cpp:

Fix possible crash in monitor scene

Networking Tools

Dan Vratil committed changes in [ktp-text-ui] app/chat-window.cpp:

Fix window presence icon when more tabs are open

Reviewed-By: David Edmundson

Urs Wolfer committed changes in /trunk/KDE/kdenetwork/krdc/rdp:

- fix handling of usernames containing a domain
- fix default setting when you set a custom resolution
- cleanup some old stuff

Thanks to Norbert Marx for noticing and reporting these issues.

Harald Sitter committed changes in [konversation] src/application.cpp:

manually manage Konversation::Sound (Phonon::AudioOutput)

when parenting a phonon audiooutput to a qapplication an access to
pulseaudio happens after it was destructed already.
qapplication's ctor first destructs q_global_statics and after that
deletes children. however in the phonon's factory global static all
backend objects (including the root object) are deleted which in turn
will shut down the pulseaudio support. at that point from a phonon
perspective everything is shut down, except qapplication then goes on to
delete its children which then causes headaches.

generally speaking this is a problem all phonon frontend objects have,
except only the audiooutput does things that will trigger a sigsev.
so inside phonon a different workaround needs to be made for some future

the fact that global statics are deleted before children seems wrong
though and perhaps needs addressing within qt.


Development Tools

Milian Wolff committed changes in [kdevelop/4.5] /cpp/cppduchain:

Add basic support for typedef'ed function pointers.

Properly deduce the function type and create correct declarations
with the identifier of the sub_declaration id in cases such as:

void (*funcptr)(int x);
funcptr myFunc;
int main() {


Aleix Pol Gonzalez committed changes in [kdevplatform] /:

Make it possible to search and open documentation from QuickOpen

With this patch you'll be able to query the available documentation by
using Ctrl+Alt+D through the QuickOpen, instead of having the ToolView
opened right away.

REVIEW: 108654

Diffs: 1, 2, 3, 4, 5, 6 Revision 150caa4...


Thibaut Gridel committed changes in [marble] src/plugins/render/CMakeLists.txt:

Annotate: a plugin to draw polygons and placemarks on a map

The revival of osmannotate plugin which never got to release state.
The plugin layer handles SceneGraphicsItems for mouse event actions,
and maintains a document which is rendered with classical layers.
Still lots of work needed for production delivery, but already quite
- Adds/Removes Point Placemarks, Polygons
- Import/Export to kml file
- Reshape Polygons by moving points
- Placemark "edit bubble" which sets name and description

Needs work:
edit bubble is weak with painting and refreshing

REVIEW: 108618

Dennis Nienhüser committed changes in [marble] /:

Basic .kmz support

Extends the KML plugin to handle .kmz files (zipped .kml files).
Introduces quazip as an optional dependency for that purpose: When
quazip is available, .kmz is available as well. Otherwise only .kml
support is available (as before).
- Respect base url correctly (to load other resources from the archive)
- Register .kmz files to be handled by Marble (if quazip found)

DIGEST: Marble can now open .kmz files. See

KDE Base

Kevin Ottens committed changes in [kdelibs/frameworks] /frameworkintegration/src/platformtheme:

Provide our own icon engine for QIcon::fromTheme

Now when the platform theme is active we reroute through KIconLoader and
its interprocess cache. Nice bonus for Qt based applications ran from a
KDE Workspace session. :-)

Note this patch needs a patch in Qt5 to have any effect, review is

Diffs: 1, 2, 3 Revision 0bfa2f7...
Kevin Ottens committed changes in [kdelibs/frameworks] /frameworkintegration/src:

Add platform theme plugin

Bring back some more integration in Qt, loads our settings, palettes and
fonts. Also pulls in KFileDialog use.

Diffs: 1, 2, 3, 4, 5, 6 Revision ba0ac4b...
Martin Gräßlin committed changes in [kde-workspace] /effects:

New Glow on approaching Screen Edge Effect

Feature stolen from hidden Plasma Panel now available for all edges on
approach by mouse.

Diffs: 1, 2, 3, 4, 5 Revision c50c854...
Martin Gräßlin committed changes in [kde-workspace] /:

Screen Edges may belong to fullscreen windows

Corners are still ours (it's a valid use case to still be able to switch
window through e.g. Present Windows even when running a fullscreen app).

How is it done? An Edge can be blocked and does no longer trigger if it
is blocked. For WindowBasedEdges the edge windows get unmapped in the
blocking case and mapped again when the blocking condition is no longer

The blocking is so far connected to:
* changes of active window
* changes of fullscreen windows

Whenever one of the events occurs it is checked whether there is:
1. an active client
2. it is fullscreen
3. on the same screen as the edge

If this is the case the edge will be blocked, otherwise unblocked.

FIXED-IN: 4.11

Ignat Semenov committed changes in [kde-baseapps] /applets/folderview:

redo the title configuration ui

- move the title configuration UI to the Location page
- use one combobox + one lineedit
- use an enum instead of comparing strings
- clean up the code



Dmitry Kazakov committed changes in [calligra] /:

Added an ability to transform layers recursively with a Transform Tool

Now the transform tool supports transforming of a group of layers or
masks recursively in a single pass. You can use it for transforming a
set of layers grouped into a Group Layer or just transform a single
layer with all its masks (e.g. with transparency masks). This option
is enabled by default, but you can disable it by switching a small
button in the transform tool configuration docker. This button has a
icon of a small spider (the tool "crawls" through the layers :) ) [0].

It would be cool, if someone tested it a bit ;)

[0] - you can suggest any other icon for this, actually =)


Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision e30395b...
Stephane Mankowski committed changes in [skrooge/Feature] /:

feature: Buttons on dashboard widgets to discover the contextual menu

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

Networking Tools

Emmanuel Lepage Vallee committed changes in [sflphone-kde/macro] /:

Implement the model part of the macro subsystem (2/2)

Diffs: 1, 2, 3, 4 Revision b25c7f2...
Alexander Reinholdt committed changes in /trunk/playground/network/smb4k/smb4k/configdlg:

Implement Wake-On-LAN features.


Development Tools

Milian Wolff committed changes in [kdevplatform] /:

Optimize: Cache the hash of indexed set nodes.

hashlittle is apparently quite expensive - it shows up quite often
when looking at KDevelop traces - e.g. using perf top while its
parsing a project. This way we only calculate the hash once per
node and not multiple times.

Looking at the new environmenttest benchMerge:500 benchmark in the
C++ language plugin, we can see in callgrind, that hashlittle is now
only being called ~300k times instead of ~600k times before. The total
cycle estimation cost decreased by ~7%. I'd have hoped for more but
thats a start.

Diffs: 1, 2, 3, 4, 5, 6 Revision 4cedfc1...

KDE Base

Vishesh Handa committed changes in [nepomuk-core/KDE/4.10] /:

Resource: Do not auto update the cache by default

The resource class generally connects to the ResourceWatcher, and
updates itself whenever any other application changes any data. While,
this may be desirable at times, most of the times, it is not required.

1. It creates a massive number of watches which increase the number of
messages that are sent across dbus.

2. It slows down the Resource class because its own changes are also
propogated back to it.

3. It doesn't really notify anyone that the data has been changed, so
the ui code doesn't know when it is supposed to refresh.

Added a function setWatchEnabled( bool ), which configures if the
Resource should be auto-updated.

Diffs: 1, 2, 3, 4, 5 Revision a398d44...
Martin Gräßlin committed changes in [kde-workspace] /effects:

Port Magnifier Effect to XCB

First XRender effect which gets ported over. Therefore required bits are
added to CMakeLists.txt.

Port to xcb is luckily rather straight forward. Though the QPixmap usage
needs to be replaced by xcb_pixmap_t together with a XRenderPicture.

Diffs: 1, 2, 3 Revision c5efc52...
Thomas Lübking committed changes in [kde-workspace] kwin/manage.cpp:

add stricter heuristics to initial maximization

instead of just checking whether the decorated client will be bigger
than the workarea and take that as reason to maximize it, we will not do
so if it's smaller than the full are and the managed client bigger than
the screen (because it makes sense for the user to move it around and the
requested dimension is out of what the client could have stored when closing

REVIEW: 108705

Martin Gräßlin committed changes in [kde-workspace] /:

Port non-composited Outline to XCB

Use xcb to create and manage the X11 backend of Outline. In addition the
used background pixmaps are rendered with XRender instead of using a
QPainter on a QPixmap. This is done because QPixmap is no longer bound to
an X Pixmap.

To create the XRender Picture the available functionality from
kwinxrenderutils is used. To be able to use it in KWin core the compile
option to build without XRender is removed for kwinxrenderutils, but
still supported for effects.

Obviously the port to XCB is not complete as xremderutils itself is still
on XLib.

REVIEW: 108642

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

Light-weight wrapper class for an xcb_window_t

The idea behind this class is to relieve the developer from having to
call xcb_destroy_window once it is no longer needed. That is having a
RAII approach to windows.

In addition the class provides some simple method wrappers for the most
common use cases inside KWin:
* map
* unmap
* setGeometry - basically a moveResizeWindow
* ...

Diffs: 1, 2, 3, 4 Revision f48c045...
Frank Reininghaus committed changes in [kde-baseapps] dolphin/src/kitemviews/kfileitemmodel.cpp:

Performance improvements in KFileItemModel::removeItems()

The performance of this method is improved by:
a) Not removing items one by one, but doing it in a way that minimizes
the number of moves to prevent O(N^2) worst-case complexity.
b) Not sorting the removed items using the potentially extremely slow
KFileItemModel::lessThan. We can get the indexes of the removed items
very easily from the hash m_items, and sorting ints is a lot faster.
c) Preventing repeated rehashing of m_items when removing the deleted
URLs by replacing remove() by erase().

REVIEW: 108540



Michel Ludwig committed changes in [kile] /:

Quote the substituted strings properly in the arguments given to the tools

Note that it is necessary to reset all the tools after this commit.


Development Tools

Aleix Pol Gonzalez committed changes in [kdevelop] /welcomepage:

Improve welcome page looks

Since some changes in the air plasma theme, some margins were removed.
Specify some margins in the code side.

Diffs: 1, 2, 3, 4 Revision 21c1215...

KDE Base

Ignat Semenov committed changes in [kde-baseapps/fvport] plasma/applets/folderview/folderview.cpp:

int -> QVariant for ProxyModel::FilterMode

This also fixes filterChanged() and configAccepted() wrt this config key.
Use the actual filter mode value instead of the combobox index which is
error-prone in case the order of the items in the combobox changes.

Christoph Feck committed changes in [kdelibs/KDE/4.10] kimgio/xcf.cpp:

Even more tolerance in layer size sanity check

Appearantly, there are files out there with layers much
larger than the actual image. The layer size is now checked
against larger limits (32K in each dimension, 256M total).

FIXED-IN: 4.10


Aleix Pol Gonzalez committed changes in [muon/resources-updater] /:

Move the updater APT-dependent actions initialization to the backend

To do so by keeping it the same way, the updaters will return a list of
actions. The actions with higher priority will be put as KMessageWidgets
and the rest as tool bar buttons.
The StandardUpdater won't report any actions and the actions have been
moved from updater to ApplicationUpdates (those will have to be tested
later on).

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