Issue 338

4th May 2014 by KDE Commit-Digest Team

Contributors

Alex Fikl
Marta Rybczynska
Danny Allen
Jürgen Appel
Giacomo Barazzetti

This Week...

KDE-PIM sees huge performance improvement for POP3 users with large maildirs. KAddressbook adds a category filter. Krita implements support for more types of palettes. Also in Calligra, Docx export filter has partial support for comments. Digikam sees work on better support of multicore CPUs with important performance improvements. Bluedevil has an initial port to KF5.

Statistics

Commits 2282 by 155 developers
Open Bugs 22344
Open Wishes 16095
Bugs Opened 331 in the last 7 days
Bugs Closed 290 in the last 7 days

Commit Summary

Module Commits
/trunk/l10n-kde4
165
 
/branches/stable
65
 
/trunk/l10n-support
64
 
/tags/KDE
62
 
/src/CMakeLists.txt
50
 
/trunk/l10n-kf5
47
 
/trunk/www
28
 
/resources/imap
17
 
/src/core
15
 
/src/file
12
 
Files Developer Commits
756
 
Laurent Montel
266
 
258
 
David Faure
86
 
243
 
Patrick von Reth
82
 
198
 
Torgny Nyblom
66
 
159
 
Burkhard Lück
53
 
135
 
Bhushan Shah
48
 
132
 
Aleix Pol Gonzalez
45
 
120
 
Eike Hein
42
 
123
 
David Edmundson
41
 
111
 
Christophe Giboudeaux
38
 

Internationalization (i18n) Status

Language Percentage Complete
Polish (pl)
99%
 
Ukrainian (uk)
99%
 
German (de)
99%
 
Swedish (sv)
99%
 
Brazilian Portuguese (pt_BR)
99%
 
French (fr)
98%
 
Dutch (nl)
97%
 
Spanish (es)
96%
 
Bosnian (bs)
93%
 
Italian (it)
91%
 

Bug Killers

Person Bugs Closed
Christoph Feck
40
 
Jekyll Wu
39
 
Chao Feng
18
 
Boudewijn Rempt
15
 
Thomas Lübking
12
 
Frank Reininghaus
11
 
Albert Astals Cid
10
 
Marco Martin
9
 
Dawit Alemayehu
9
 
Martin Gräßlin
8
 

Commit Countries

Commit Demographics

Sex

Age

Contents

  Bug Fixes Features Optimization Security Other

Accessibility

     

Development Tools

[] []    []

Educational

  []    

Graphics

[]   []   

KDE Base

[] [] []   []

KDE-PIM

[] [] []   []

Office

[] []    

Konqueror

     

Multimedia

  [] []   

Networking Tools

[] []    

User Interface

  []    []

Utilities

  [] []   

Games

     

Other

  []    

There are 83 selections this week

Bug Fixes

Development Tools

Sven Brauch committed changes in [kdevelop/4.6] languages/cpp/parser/rpp/pp-engine.cpp:

cpp preprocessor: do not crash when dividing -2**63 by -1

The result of this operation can't be represented in a long, and thus
triggers a crash (yay for C++).
I think this is a special case, or are there more similar problems?

File reproducing the issue:
https://chromium.googlesource.com/native_client/nacl-toolchain/+/gcc-4.5.0/gcc/gcc/testsuite/gcc.dg/cpp/arith-3.c

Milian Wolff committed changes in [kdevplatform] /duchain:

Fix item repo issues with hash clashes and monster buckets.

1) Do not alter bucketPtr before freeing it up.

Before, we deleted an item and then sometimes changed the bucketPtr
when there where clashing items. If the new bucketPtr was then a
monster, we assumed its item was deleted and assert that. As we
deleted the item in a different bucket, the assertion did not hold
and we crashed...

The assertion happens when a normal item is deleted and another
monster item exists with the same hash in a different bucket.

2) Unset next bucket for hash, before deconverting it.

This is probably just a workaround, as a comment above hints at
a general problem here, that this should be done more regularly.
Calling setNextBucketForHash(hash, 0) always though leads to other,
new problems and assertions. So I'll leave it as is for now.

The assertion happens when a monster item is deleted and another
item exists with the same hash in a different bucket.

Miquel Sabaté committed changes in [kdev-php] /:

parser: fixed the parsing of hexadecimal and binary literals.

REVIEW: 116795

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

Graphics

Martin Koller committed changes in [kolourpaint] widgets/toolbars/kpToolToolBar.cpp:

adjust size hint when toolbar options might show up or hide


FIXED-IN: 4.13.1

KDE Base

Colin Guthrie committed changes in [kde-runtime/KDE/4.11] phonon/kcm/audiosetup.cpp:

phonon: Fix PulseAudio card profile list.

If two profiles had the same priority, the map insert would overwrite any
previous profile with that priority.

Simple solutions is to use insertMulti() instead.

Reported by Andrei-Florin Amuraritei
via https://plus.google.com/u/0/+RobinJacobs/posts/GGLemECK6tp

Eike Hein committed changes in [plasma-desktop] applets/kicker/plugin/favoritesmodel.cpp:

Fix incorrect state of add/remove actions for some favorites.

KService::serviceByStorageId is quite lenient (which is nice), but
means we need to update to the storageid of what it ends up finding
instead of sticking to the one we started with, or the comparison
against the service instance backing the favorite can fail later.

Concretely, this currently happens when foo.desktop is turned into
kde4-foo.desktop for the unported apps in the default favorites.

Eike Hein committed changes in [kdeplasma-addons] applets/konsoleprofiles/package/contents/ui/konsoleprofiles.qml:

Don't try to be clever with the highlight item opacity.

Turns out the original author's intent to tie the existence of the
highlight deco strictly to mouse contact is basically incompatible
with the desires of keyboard-only users, who need persistent and
immediate feedback on the view's current item.

Eike Hein committed changes in [plasma-desktop] /taskmanager:

Trigger the Present Windows effect when control-clicking on a group.

Forward-port of kde-workspace:87a7549.

Martin Gräßlin committed changes in [plasma-framework] src/declarativeimports/core/windowthumbnail.cpp:

Discard window thumbnail pixmap after texture got destroyed by SceneGraph

If the window holding the WindowThumbnail item goes away the texture hold
by the node is destroyed but our bound window pixmap is not yet freed.
This results in incorrect state the next time the WindowThumbnail is
shown.

To get back into a clean state discardPixmap() is called if there is no
texture but a bound low level pixmap.


REVIEW: 117824

Albert Astals Cid committed changes in [libkscreen] backends/xrandr1.1/xrandr11.cpp:

Do not crash on systems without XRandr

Deleting m_x11Helper on systems that don't have XRandr doesn't seem to work, so delay the initialization of it until the checks for XRandr have been made

Acked by Dan

REVIEW: 117927

Marco Martin committed changes in [plasma-desktop] containments/folder/plugin/foldermodel.cpp:

KRun doesn't really support schemeless urls

make sure the urls that are just a path, being representative
of local paths, make them file://

Marco Martin committed changes in [plasma-desktop] kcms/autostart/autostart.cpp:

fix adding programs to autostart

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

Fix memory leaking in notifications

Up to this patch there was a new Dialog created for each and every new
notification incoming. After the notification was timed out, it would
close and delete the Dialog, but somehow that didn't free all the memory
and over time plasma-shell could get huuuge mem usage.

Now the notifications reuse only 3 Dialogs the whole lifetime --> memory
does not skyrockets anymore.

Note that the original leak in Dialog might still be present, but
notifications do not expose it anymore.


REVIEW: 117903

KDE-PIM

Kevin Ottens committed changes in [kdepim-runtime] resources/imap/retrieveitemstask.cpp:

Insert a body to empty messages

When we download an empty message, add to it a body containing a single
space in it. This way we don't wrongly believe that the body is missing
from the cache... it's just that there was no body to begin with.

Jan Kundrát committed changes in [trojita] src/Gui/Window.cpp:

Prevent duplicate signals on model recreation

This is directly related to commit e9619f03311aa71f16bfad41e97011757e327727
which changed the lifetime of ImapAccess. Previously, it used to be recreated
whenever the IMAP Model got recreated, but that commit changed ImapAccess to be
created exactly once (and in future, once for every IMAP account).

The rest of the signals appear to be fine; they do not connect ImapAccess, but
instead work on various models which are published by ImapAccess. In future when
ImapAccess changes to emit signals when the models actually change (and not when
e.g. an unrelated piece of settings like the human readable name, or the SMTP
prefs or something else change), the reconnecting of signals should happen at
that level.

This double-emitting led to a bug when a new account was added the first time,
and some SSL errors were shown. By mistake, two dialogs would pop up, and if a
wrong password was entered, the Q_ASSERT on OpenConnectionTask.cpp, line 493 was
hit.

Dan Vratil committed changes in [akonadi] cmake/modules/FindSqlite.cmake:

Check whether Sqlite is compiled with SQLITE_ENABLE_UNLOCK_NOTIFY

The QSQLITE3 driver now requires that SQLite is compiled with
SQLITE_ENABLE_UNLOCK_NOTIFY, which enables the unlock_notify API.

It turns out that some distributions ship SQlite compiled without
this option and Akonadi then fails to compile.

To prevent this, we detect whether SQlite is compiled with unlock_notify
API at configuration time by compiling a simple check in FindSqlite.cmake.

Christian Mollekopf committed changes in [kdepim-runtime] resources/imap/retrieveitemstask.cpp:

IMAP-Resource: Detect inconsistency in local cache and refetch.

Office

Dmitry Kazakov committed changes in [calligra/krita-testing-kazakov] /plugins/extensions/dockers/palettedocker:

Fix Palettes docker to support color managed rendering of colors

Diffs: 1, 2, 3 Revision da3b27a...
Arjen Hiemstra committed changes in [calligra] krita/sketch/qml/panels/Panel.qml:

sketch: Drop down the panel from the handle instead of moving the handle

This prevents the panel from overlapping other handles, making it easier
to switch between panels.

Dmitry Kazakov committed changes in [calligra] krita/plugins/tools/tool_transform2/kis_tool_transform.cc:

Fix Transfrom Tool arrows on mirrored canvas

Thanks Koushik S for preparing this patch!

Joris Steyn committed changes in [umbrello] umbrello/widgets/messagewidget.cpp:

Fix loading of message widgets from XMI 1.1 files

The floating text widgets of messages in old XMI files failed to load
correctly in all recent versions of Umbrello, and since 4.13 result in a
crash. This fixes the observed crash when opening a file containing
message widgets, and renders the labels correctly.

CC-

Networking Tools

Ahmed I. Khalil committed changes in [ktp-text-ui] /:

Don't disable input box when disconnected.

Instead show a KMessageWidget that will tell the user that the account is offline.

REVIEW: 117809

David Edmundson committed changes in [ktp-common-internals/kde-telepathy-0.8] kpeople/datasourceplugin/im-persons-data-source.cpp:

Map connection presence type to string

In libkpeople we pass the presence around as a string as that's all
KABC::custom() supports.

We used to use presence->status(); this is problematic as it is free
text which can contain anything; especially when on multiple protocols.

A presence might have the status "chat" which is mapped to the presence
type Tp::ConnectionPresenceTypeOnline. We want to use this mapping and
only have a subset of presence strings.

Dan Vratil committed changes in [ktp-text-ui] /:

Don't leave group chat room when window is closed

When "Don't leave chat room when window is closed" settings is enabled, the
channel is not closed when user closes the tab or window, but is maintained
by TelepathyChatUi. The channel can be left via Conversation -> Leave room
action.

REVIEW: 117543

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

Features

Development Tools

Aki Koskinen committed changes in [libqgit2] /:

Added diffing between two trees in a repository

A new method in Repository - diffTrees() - can be used to produce an
object of a new class: Diff. The diffTrees() method is a direct wrapper
to libgit2's git_diff_tree_to_tree() method and the Diff class is a
wrapper to the git_diff type.

The Diff object can be used to get the deltas from the diff. The needed
classes - DiffDelta and DiffFile - were already present in libqgit2
beforehand.

Diffs: 1, 2, 3, 4, 5, 6 Revision 53fcf5a...
Trevor Blight committed changes in [ktexteditor] /:

improve comment handling for pascal indenter

line up comments when they might not have been before, mostly
check document variables have a value before using them
make outdent keywords const rather than var

Diffs: 1, 2, 3 Revision 4b991df...
Denis Steckelmacher committed changes in [kdev-qmljs] /:

Also return the SourceLocation of a QML attribute in getQMLAttribute

This allows the highlighting of "foo" in

Rectangle {
id: foo
}

because DeclarationBuilder is now able to see from where comes the "foo".

REVIEW: 117885

Diffs: 1, 2, 3 Revision 4bfb55a...
Milian Wolff committed changes in [kdev-clang] /:

Add support for Variable and IncompleteArray types.

Diffs: 1, 2, 3 Revision d130df1...
Denis Steckelmacher committed changes in [kdev-qmljs] /:

Use QML qualified identifiers to build uses

REVIEW: 117971

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

Educational

Sebastian Gottfried committed changes in [ktouch] src/declarativeitems/traininglinecore.cpp:

implement optional error correction enforcement

If disabled the user doen't have to (and can) to correct his typing
mistakes anymore. The Backspace key is ignored completly.

Since the default is still to enforce correction, nothing changes for
existing users.

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

Added OctavePackagingExtension::importPackage to Octave backend

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

KDE Base

Jonathan Riddell committed changes in [plasma-workspace] startkde/startkde.cmake:

Use Breeze mouse cursor theme by default
In startkde set the breeze mouse cursor theme to be the default for new plasma next users
REVIEW:117899

Vishesh Handa committed changes in [baloo/KDE/4.13] src/runner/baloosearchrunner.cpp:

Baloo Search Runner: Show the url in the subtext

Marco Martin committed changes in [plasma-framework] /:

better radial symmetry look for the icon



M +- -- src/desktoptheme/breeze/icons/device.svgz

Martin Klapetek committed changes in [plasma-desktop] /kickoff/package/contents/ui:

Word-wrap Kickoff's tab button text

Otherwise it doesn't fit, especially in the vertical panel use case

This however also requires the main height to be a bit higher as
Plasma's TabBar make all buttons always the same size, so if one button
is bigger because of word wrap, all buttons will grow -> we need more
height.

Reviewed-by: Sebastian Kügler

Martin Gräßlin committed changes in [plasma-workspace] kglobalaccel/kglobalaccel_x11.cpp:

[kglobalaccel] Update X11 appTime from key press events

KGlobalAccelD sends the current appTime through DBus to the application
and KF5::GlobalAccel updates the appTime from the timestamp. This is
needed for following actions to succeed. E.g. KWin needs the updated
appTime for grabbing the keyboard following the kill window shortcut.

To get the current timestamp we just use the timestamp of the key press
event delivered to kglobalacceld. These events are filtered out, so that
Qt doesn't see them. Thus we need to update the timestamp and cannot hope
for Qt to update them.

REVIEW: 117839

Vishesh Handa committed changes in [baloo/KDE/4.13] /file/extractor:

Extractor: Check if the file should be indexed

The check is a file should be indexed was intitally only performed
during the first phase. With this we also do it in the second phase.

This is useful as if the cleaner stops running (killed, crashed, system
shut down) it does to respawn itself and stuff continued to get indexed.
With this the extractor will clean up all the files which should not be
indexed.

KDE-PIM

Rémi Benoit committed changes in [zanshin] /:

Implement Note serializer for Akonadi backend

Kevin Ottens committed changes in [zanshin] /:

Implement the filtering on the collection content types

Jonathan Marten committed changes in [kdepim] /:

KAddressBook: Add a category filter

This is a widget which by default appears to the right of the
quick search bar. Checking or unchecking categories in this list
filters the entries that are shown.


REVIEW:117834
FIXED-IN:4.14
GUI:

Laurent Montel committed changes in [kdepim] /configdialog:

Start to implement rename note collection

Office

Inge Wallin committed changes in [calligra] /libodf2:

libodf2: Add a page layout style object

Diffs: 1, 2, 3 Revision 5fdaeb9...
Thomas Fischer committed changes in [kbibtex] /program/docklets:

Value list's menu label changes for adding/changing values

As requested in comment 4 of Gna! bug 21870 [1] ("the menu entry should
make it clear whether the value is appended or replaced"), this commit
changes the label of the context menu item of the value list depending
on if the current value list value is added to the selected elements in
the main list or if the value replaces the selected elements' values.

Patch [2] was supplied by Jürgen Spitzmüller and committed with minor
modifications by Thomas Fischer.

[1] http://gna.org/bugs/?21870#comment4
[2] http://gna.org/support/download.php?file_id=20594

Boudewijn Rempt committed changes in [calligra] /:

Feature: implement support for more types of palette

A todo from 2004, we now support RIFF_PAL palettes.

For good measure, also add support for paintshop pro palettes and Photoshop
ACO palettes (which support rgb, cmyk, hsv, lab and gray, at 16
bits/channel, so a nice addition to default gimp palettes).

Diffs: 1, 2, 3 Revision 92ba535...
Lassi Nieminen committed changes in [calligra] /:

Docx export filter - partial support for comments

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 3 more) Revision ac8cbd1...
Lukáš Tvrdý committed changes in [calligra] /plugins/extensions/gmic:

Feature: Implement search box for filter names for GMIC plug-in

Now you can use line box below tree of filters
to find the GMIC filter by name.

You have to expand the category manualy so far.

Diffs: 1, 2, 3, 4 Revision c9ced55...
Joris Steyn committed changes in [umbrello/KDE/4.13] /widgets:

Add support for ConceptWidget

This is Ralph's patch, unmodified.

Alexander Semke committed changes in [labplot] /:

1. Implemented "select and zoom in"-function for cartesian plot.
2. Fixed couple of issues with "use view size" in worksheet.
3. Removed legacy DataPlotDialog.

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 350f878...

Multimedia

Till Theato committed changes in [kdenlive] /:

Start work on ProjectManagerView.

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 7b2bc87...
Shantanu Tushar Jha committed changes in [plasma-mediacenter] /baloosearch:

Fetch photo-taken Date/Time for Images and file created Date/Time for other files

Just like the Nepomuk media source, the Baloo media source needs to
provide the date/time information for media. This is used to sort the
media to show the more recent media first.
For images, the date/time when the photo was actually taken is used,
and the file creation date/time is used for other media.

REVIEW: 117915

Diffs: 1, 2, 3, 4, 5 Revision 121e51d...

Networking Tools

Alexander Reinholdt committed changes in [smb4k] /:

Moved and partly renamed four settings. They all were located under "User Inferface"
and were now moved to the "Network" and "Shares" sections in smb4k.kcfg, respectively.
This is a first stept towards the separation of the gui and the core settings.

This will break some user configurations.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision d9669a1...

User Interface

Alex Fiestas committed changes in [libkscreen] /:

Adds signal Config::primaryOutputChanged

Adds a new signal called Config::primaryOutputChanged, specially
useful for apps that need to track the primary output like plasma or
any presentation app.

REVIEW: 117882

Diffs: 1, 2, 3, 4, 5 Revision a79ae50...

Utilities

Mark Gaiser committed changes in [cutepaste] frontends/desktop/main.cpp:

Use QCommandLineParser (and friends) for more command line options.
Trim content since it had an extra empty line
Add support for language in the command line using -l or --lang using QCommandLineParser
Add support for setting the paste service via the command line using -p or --pasteService. Defaults to http://pastebin.kde.org

Other

Aurélien Gâteau committed changes in [kdoctools] KF5DocToolsMacros.cmake:

Introduce kdoctools_install()

This function makes it easy to install all .docbook of a framework.

REVIEW: 117805

Optimization

Graphics

Steve Allewell committed changes in [kxstitch] /:

Implement cached rendering methodology

Contents drawn onto QImage then the QImage is drawn during the
paintEvent, reducing the time taken during painting.
The Renderer has been made a class member instead of a pointer.

Gilles Caulier committed changes in [digikam] /:

Blur Tool : add support of multicore CPU. Use new fast algorithm of simple blur based on original implemntation from
libkimageeffect2 code (never released) written by Daniel M Duley.
Code have been ported to DImg and to support 1§ bits color depth image of course.
CImg dependency to Blur tool have been dropped.
Old and slow Guaussian blur algorithm have been removed

CC

Gilles Caulier committed changes in [digikam] /:

LocalContrast tool : add Multicore support through QtConcurrent API
On my i7 CPU, 24Mpx image processing time is divised by 2
CCBUGS : 289204

Diffs: 1, 2, 3 Revision 0f5b0e8...
Gilles Caulier committed changes in [digikam] /dimg/filters/sharp:

UnsharpedMask tool : add Multicore support through QtConcurrent API
CCBUGS : 289204

KDE Base

David Edmundson committed changes in [plasma-workspace/davidedmundson/faster_s] applets/systemtray/plugin/host.cpp:

Do not construct a map inside a lessThan function

lessThan functions have to be fast.
Also Map -> Hash as we're not using order here.

Eike Hein committed changes in [plasma-desktop] /kicker/package/contents/ui:

Switch from IconItem to QIconItem for performance reasons.

Milian Wolff committed changes in [kfilemetadata/KDE/4.13] src/extractors/plaintextextractor.cpp:

Optimize word count in PlainTextExtractor.

Regular expressions are notoriously slow. Implementing a simple
word-count directly in C++ is much faster, as shown by the benchmark:

Before:
RESULT : IndexerExtractorTests::benchMarkPlainTextExtractor():
697.0 msecs per iteration (total: 6,970, iterations: 10)

After:
RESULT : IndexerExtractorTests::benchMarkPlainTextExtractor():
88.2 msecs per iteration (total: 883, iterations: 10)

REVIEW: 117789

KDE-PIM

David Edmundson committed changes in [libkpeople] src/personsmodel.cpp:

Use QPixmap for loading images

QPixmap has an implit cache when loading from a path. QImage does not.
This saves a lot of QImage::load calls.

As it goes via QVariant .toImage and .toPixmap work the same as before.
ktp-contactlist used pixmap anyway.

REVIEW: 117850

Christian Mollekopf committed changes in [kdepim-runtime] /imap:

IMAP-Resource: Use batch-processing also for the flag fetch. Another optimization to avoid a full refetch.

Diffs: 1, 2, 3 Revision 553ffb5...
Martin Steigerwald committed changes in [kdepim-runtime] resources/maildir/libmaildir/maildir.cpp:

Do not sort the directory entry list in listNew() and listCurrent():

According to callgrind dumps at

https://bugs.kde.org/show_bug.cgi?id=334218#c4

QDir sorts the list of directory entries unless specified otherwise.

After disabling the sorting the callgrind is quite different already:

https://bugs.kde.org/show_bug.cgi?id=334218#c7

This already helps shortening the time to synchronize folders visibly,
but KMail gets still blocked for half a minute or more. There is another
occurence of QDir entry sorting in keycache.cpp which the next commit
will address.

Thanks to Sergio and David for help and pointing out how to disable
the sorting.



REVIEW: 117975

DIGEST: Huge performance improvement for POP3 users with large maildir.

Christian Mollekopf committed changes in [kdepim-runtime] /imap:

IMAP-Resource: Switched to uid based item retrieval

Just using uid's instead of sequence numbers is a lot less error prone,
and will make it easier in the future to i.e. only retrieve a certain
range of messages.

Diffs: 1, 2, 3 Revision 280821d...
Christian Mollekopf committed changes in [kdepim-runtime] resources/imap/imapresource.cpp:

IMAP-Resource: Increased the batch size.

This speeded the synchronization of mailbox up by ~30% on my system.

Martin Steigerwald committed changes in [kdepim-runtime/KDE/4.13] resources/maildir/libmaildir/keycache.cpp:

Also do not sort directory entries in listCurrent and listNew in key cache:

QDir sorts the list of directory entries unless specified otherwise.
The last commit already disabled the sorting in maildir.cpp.

This commit completes the work and makes the remaining sorting calls
in the callgrind dumps at

https://bugs.kde.org/show_bug.cgi?id=334218#c7

go away completely as demonstrated in the callgrind dumps at:

https://bugs.kde.org/show_bug.cgi?id=334218#c12

Subjectively this has a huge impact on the performance of KMail with huge
maildir. KMail hardly blocks anymore on folder changes and feels much more
responsive now.

Akonadi maildir resource went from hogging a Sandy Bridge core for minutes
to not appearing using 100% of one core in even one averaged 10 second
interval in atop. I hardly see it in atop at all anymore, except when
accessing very large folders such as one with Linux Kernel mailing list
and more than 245000 unread mails.

Thanks to Sergio for pointing out the remaining sorting calls in the second
callgrind dump and for help.

Now the bottleneck appears to be MaildirResource::listRecursive but I do
not know whether further optimization is necessary at this point.

Both changes tested with kdepimlibs master as of today and KMail 4.12.4
from Debian unstable packages with an enormous maildir including a
folder for Linux Kernel mailing list with more than 245000 unread mails.



REVIEW: 117975

DIGEST: Huge performance improvement for POP3 users with large maildirs.

Jan Kundrát committed changes in [trojita] /Ubuntu/qml/trojita:

Ubuntu: Lazy load Settings tabs

Only create the settings tabs when we need them

REVIEW: 117817

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

Multimedia

Shantanu Tushar Jha committed changes in [plasma-mediacenter] /:

Do not cache media lists to a database

We started caching results from media sources due to our primary data
source (Nepomuk) was quite slow and the experience was quite bad both
for fetching media and searching through it. Going forward, Baloo is
our primary data source, and was found to be quite performant. Given
this, the additional complexity of maintaining a cache in DB is too much
for the 1-2 second increase in Media Library load times.

Note that we are still able to pull in data from multiple data sources,
we just won't store it on disk.

REVIEW: 117867

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

Utilities

Michel Ludwig committed changes in [kile/2.1] /:

Use the KXMLGUIFactory::plugActionList mechanism to populate user-editable menus

Previously we constructed such menus ourselves and were using 'KXMLGUIFactory::refreshActionProperties()'
to load shortcuts for the actions involved. However, due to a limitation
in that method (in 'KXMLGUIClient::reloadXML()', more precisely) the XMLGUI
for Kile was reset to an unmerged state (without the standard actions). By using
'plugActionList' we don't have to resort to 'refreshActionProperties' any more.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision 883e3e0...

Other

Development Tools

Giorgos Tsiapaliwkas committed changes in [plasmate/terietor/kdevplatform] /:

Initial commit for porting plasmate to kdevplatform

We introduce a new class named PlasmateApp which will
show the Startpage and hide it, when it must do it.

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

KDE Base

Jacopo De Simoi committed changes in [kde-workspace/KDE/4.11] plasma/generic/applets/devicenotifier/package/contents/ui/devicenotifier.qml:

Do not popup during initialization

The notifier should not popup if devices are detected during the
applet initialization phase (e.g. on plasma startup)

Frank Reininghaus committed changes in [kde-baseapps/KDE/4.13] dolphin/src/dolphinmainwindow.cpp:

Update the "Paste" action only if it is necessary

Updating this action is only required if the clipboard contents change,
or if the "is writable" state of the current location changes. In all
other cases, an update of this action should be prevented because it
can be very expensive if many files are in the clipboard.

In particular, the update when the selection changes could make
changing the current item in the view very slow.


REVIEW: 117782
FIXED-IN: 4.13.1

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

Change the icon text for Previous and Next toolbar buttons

In addition to the current long text for previous and next toolbar
buttons ("Activate Previous/Next Tab"), this commit adds shorter icon
texts for them to be used only on the toolbar ("Previous/Next Tab").


REVIEW: 117794
FIXED-IN: 4.14.0

Milian Wolff committed changes in [kate] part/syntax/data/isocpp.xml:

Remove "AlignedCommentends" feature from isocpp.xml.

This feature is broken and very confusing to people. We had a
discussion on this and most people want to have ti removed. Just
now again a user was complaining about it:

> Could somebody tell me how blue "//" comment symbols are
> different from their gray counterparts?

Since this feature depends on the indent-depth and also requires
indentation with spaces, it should not be shipped with the default
syntax highlight, which must cope with all kinds of indentation
configurations.

Sebastian Kügler committed changes in [plasma-desktop] /:

Basic port of dbus helper for kfontinst

This subdirectory had been disabled during the port, leading to a
non-functional kfontinst KCM.
This patch enables the build and makes it successfully build. There's
some commented code and a hardcoded runtime path which I'll fix in
subsequent commits.

David Rosca committed changes in [bluedevil/frameworks] /:

Initial port to KF5

Initial port to KF5 using KDELibs4Support.

REVIEW: 117841

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 54 more) Revision d629cb1...
Marco Martin committed changes in [plasma-framework] src/plasma/corona.cpp:

restore corona immutability

David Faure committed changes in [kio] /:

Kill mark.

Not the person, the method in KFileItem :-)
The two algos in kcoredirlister using it have been ported away.
The method was bad because it was incompatible with implicit sharing
(marking should detach? shouldn't? both equally bad).

Diffs: 1, 2, 3 Revision aaaf9b0...
Martin Klapetek committed changes in [plasma-desktop] /kickoff:

Improve Kickoff's scrolling when changing categories

Use case: I'm in All Applications, I scroll down, select Utilities,
category switches inside Utilities and the scrollbar is at the same
bottom position from my first scroll, which means that I see the apps in
Utilities that are at the bottom instead starting from the top.

These are two changes: always scroll the view to top when going into a
subcategory and then always center on the parent category when going
level up. The breadcrumbs however store QModelIndex (which makes sense)
and QModelIndex cannot be used from QML, so I added a helper method to
the model that returns a row of the given index and the view then
centers on that row when going category up. Might not be good at all but
imho works&looks better.

REVIEW: 117757

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

KDE-PIM

Dan Vratil committed changes in [akonadi] server/src/connection.cpp:

Tag context should not be persistent accross commands

Unlike with SELECT for collections, we have no way to change tag context
or unset it, so if one command sets the context, all subsequent commands
would have to override it.

Instead we make tag context non-persistent (it's reset before every new
handler is started).

Once (if) we kill SELECT in KF5 and specify the context in each command
instead for collections too, we can make the entire context to be per-
command instead of per-connection.

User Interface

Alex Fiestas committed changes in [libkscreen/frameworks] /:

First bach of porting for XRandR 1.1 backend

Diffs: 1, 2, 3, 4, 5 Revision 2dac1c1...
David Faure committed changes in [kxmlgui] /:

Remove queryExit, 12 years after Lubos documented it as a bad idea :-)

I ported all the applications away from it.

Diffs: 1, 2, 3, 4 Revision 43c7515...