Issue 315

24th November 2013 by KDE Commit-Digest Team

Contributors

Marta Rybczynska
Alex Fikl
Giacomo Barazzetti

This Week...

Device notifier works in Plasma 2, powerdevil ported to KF5/Qt5. Gwenview gains RAW preview. In KIPI, new GoogleDrive and Dropbox export plugins are available. New option in configuration Appearance->Borders->Scrollbars Visibility controls scrollbar visibility in Kate. Work on urlbar in rekonq continues. There are many new optimizations: Akonadi database structure changes, memory usage in Trojita, mail directories accesses in KMail. Akonadi removes Strigi and ODBC/Virtuoso backends support.

Statistics

Commits 2070 by 152 developers
Open Bugs 21216
Open Wishes 15923
Bugs Opened 266 in the last 7 days
Bugs Closed 388 in the last 7 days

Commit Summary

Module Commits
/trunk/l10n-kde4
165
 
/branches/stable
121
 
/trunk/l10n-support
54
 
/lib/marble
14
 
/tags/KDE
14
 
/trunk/www
14
 
/doc/index.docbook
13
 
/src/lib
10
 
/krita/ui
10
 
/kate/pate
9
 
Files Developer Commits
342
 
Laurent Montel
129
 
156
 
Gilles Caulier
54
 
147
 
Yuri Chornoivan
52
 
141
 
Boudewijn Rempt
49
 
144
 
Sven Brauch
48
 
144
 
Burkhard Lück
48
 
126
 
Aleix Pol Gonzalez
42
 
87
 
Albert Astals Cid
37
 
102
 
Alex Turbov
34
 
96
 
Shantanu Tushar Jha
33
 

Internationalization (i18n) Status

Language Percentage Complete
French (fr)
98%
 
German (de)
98%
 
Dutch (nl)
97%
 
Estonian (et)
93%
 
Galician (gl)
92%
 
Italian (it)
91%
 
Danish (da)
89%
 
Hungarian (hu)
88%
 
Catalan (ca)
86%
 
Greek (el)
84%
 

Bug Killers

Person Bugs Closed
Christoph Feck
104
 
Jekyll Wu
47
 
Christian Mollekopf
33
 
Gilles Caulier
18
 
Thomas Lübking
12
 
Ralf Habacker
10
 
Myriam Schweingruber
10
 
Dennis Nienhüser
7
 
Sandro Knauß
7
 
Boudewijn Rempt
6
 

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 70 selections this week

Bug Fixes

Development Tools

Ralf Habacker committed changes in [umbrello] /:

Resize all selected widgets, not only the one below the cursor.

Milian Wolff committed changes in [kdevelop/4.6] languages/cpp/cppduchain/cppducontext.h:

Do not delete anonymous contexts of instantiations.

This "fix" is ugly, but similar to what was done before in the
declaration builder which we happily live with since years.

So, better than crashing, lets workaround this nasty issue.

Sven Brauch committed changes in [kdev-python] /:

Support passing arguments to the PEP8 checker.

REVIEW:113989

Ralf Habacker committed changes in [umbrello] /refactoring:

Recursive crash fix opening refactoring assistant.

Educational

Illya Kovalevskyy committed changes in [marble] /:

Manual owncloud sync button is freezed right way

Once you start manual sync, 'Sync now' button is disabled and will
be enabled again as soon as sync had finished or after 30s timout

REVIEW: 113955

Illya Kovalevskyy committed changes in [marble] src/lib/marble/MarbleMap.cpp:

Map textures are updated in time

When you try to change a property in legend (like Relief) it's
getting updated only after dragging map plot. But it should get
updated as soon as possible after property set

REVIEW: 113950

Graphics

Gilles Caulier committed changes in [digikam] /:

Reload metadata filters with right config section.
Fix metadata filter parsing in metadata list view. I don't know what have changed in time here to break this code. At least, code is more robust now.
In digiKam, use AlbumSettings signal to force metadata viewer to reload filters
In Showfoto, use ApplySettings to force to reload filters

FIXED-IN: 4.0.0

KDE Base

Alex Fiestas committed changes in [kde-workspace] kcontrol/keyboard/xkb_rules.cpp:

Add a workaround to avoid a crash produced by a GCC bug

This bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58800
in nth_element makes QtConcurrent::blockingFilter crash since underneath
QtConcurrent uses QtConcurrent::Median which uses nth_element.

We need the workaround so we can continue working on
kde-workspace/frameworks without having kded5 crashing.

Martin Gräßlin committed changes in [kde-workspace] kwin/libkwineffects/kwinglplatform.cpp:

Fallback to XRender if scene-graph uses GUI thread for OpenGL rendering

This is a workaround fo QTBUG-34898 and affects the VirtualBox driver
and SandyBridge Mobile. OpenGL compositing is just not possible and
crashes as soon as there is anything rendered with QtQuick. This change
should be reverted once the Qt bug is fixed.

To nevertheless use OpenGL one can as always use the KWIN_COMPOSE env
variable, though this will result in crashes. An alternative is to set
QT_OPENGL_NO_SANITY_CHECK which forces Qt into using the threaded
rendering. At least for Sandybridge this seems to be a workable solution
as it's only causing flickering in fullscreen and KWin doesn't use any
fullscreen QtQuick elements.

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

Better handling for making the compositing OpenGL context current

With QtQuick2 it's possible that the scene graph rendering context either
lives in an own thread or uses the main GUI thread. In the latter case
it's the same thread as our compositing OpenGL context lives in. This
means our basic assumption that between two rendering passes the context
stays current does not hold.

The code already ensured that before we start a rendering pass the
context is made current, but there are many more possible cases. If we
use OpenGL in areas not triggered by the rendering loop but in response
to other events the context needs to be made current. This includes the
loading and unloading of effects (some effects use OpenGL in the static
effect check, in the ctor and dtor), background loading of texture data,
lazy loading after first usage invoked by shortcut, etc. etc.

To properly handle these cases new methods are added to EffectsHandler
to make the compositing OpenGL context current. These calls delegate down
into the scene. On non-OpenGL scenes they are noop, but on OpenGL they go
into the backend and make the context current. In addition they ensure
that Qt doesn't think that it's QOpenGLContext is current by calling
doneCurrent() on the QOpenGLContext::currentContext(). This unfortunately
causes an additional call to makeCurrent with a null context, but there
is no other way to tell Qt - it doesn't notice when a different context
is made current with low level API calls. In the multi-threaded
architecture this doesn't matter as ::currentContext() returns null.

A short evaluation showed that a transition to QOpenGLContext doesn't
seem feasible. Qt only supports either GLX or EGL while KWin supports
both and when entering the transition phase for Wayland, it would become
extremely tricky if our native platform is X11, but we want a Wayland
EGL context. A future solution might be to have a "KWin-QPA plugin" which
uses either xcb or Wayland and hides everything from Qt.

The API documentation is extended to describe when the effects-framework
ensures that an OpenGL context is current. The effects are changed to
make the context current in cases where it's not guaranteed. This has
been done by looking for creation or deletion of GLTextures and Shaders.
If there are other OpenGL usages outside the rendering loop, ctor/dtor
this needs to be changed, too.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 8 more) Revision d5de0b1...
Frank Reininghaus committed changes in [kde-baseapps/KDE/4.12] dolphin/src/dolphincontextmenu.cpp:

Make the "Create New..." menu in the "item context menu" work again

Since https://git.reviewboard.kde.org/r/111989/, the "Create New..."
menu in the context menu that appears when right-clicking a folder was
not a child of the DolphinMainWindow any more, but of the context menu
itself. This is the reason why the dialog that asks for a file name
when choosing one of the "Create New..." options disappeared
immediately.

This patch makes sure that the main window is the parent of the
"Create New..." menu again.


REVIEW: 113930

Chao Feng committed changes in [kdelibs] kdeui/widgets/kcmodule.cpp:

Do not delete old about if old and new are the same.

If set new about dialog using the same pointer, the memory will be cleaned.
For example, double click in system settings tree mode will cause crash.



FIXED-IN: 4.12.0
(cherry picked from commit 823b13c35a19bc61735eba986d10eadb4180a613)

Andrea Iacovitti committed changes in [kdelibs/KDE/4.11] /:

Crash protection against null layer.

FIXED-IN: 4.11.4

Ben Cooksley committed changes in [kde-workspace/KDE/4.11] systemsettings/classic/ClassicMode.cpp:

Track the currently active module, and don't try to change module if it is the same module.
This prevents a module from being closed and then immediately reopened.

KDE-PIM

Pali Rohár committed changes in [kopete/KDE/4.12] libkopete/kopetemetacontact.cpp:
Pali Rohár committed changes in [kopete] libkopete/kopetemetacontact.cpp:
Christian Mollekopf committed changes in [kdepim-runtime] /kolabproxy:

Recognise shared annotations.

The IMAP Resource exposes the annotations now with a /shared prefix.

Christian Mollekopf committed changes in [kdepimlibs/KDE/4.11] kimap/sessionthread.cpp:

Always reset doSslFallback.

Otherwise doSslFallback will remain true if the errors are ignored, although a connection is established.
If we then receive an error from the server (e.g. due to disconnect), the session
will go into a reconnect frenzy.


FIXED-IN: 4.11.4

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

The store job can fail if the itemset is empty.

Since we're too lazy to check what's available, we simply ignore errors.
Any actually IMAP compliant server shouldn't require this step anyways.

Office

Boudewijn Rempt committed changes in [calligra] /:

Remove wrong warning about non-rgb resource images

It is perfectly fine, in fact, by design that some resources (notably
brushes) are QImage::Format_Indexed, so we shouldn't warn if the user
selects one of those in the brush editor.

I have reviewed all places where KoResource::image() was used and found
that the only place where there was code expecting an RGB image was
KoResourceItemChooser::updatePreview, and that is in when we convert
an rgb image to grayscale in case the d->grayscalePreview is true.

That is only the case in the brush editor's texture selector.

This also means we can handle non-rgb patterns again -- many are mono
or indexed, and that is fine.

Boudewijn Rempt committed changes in [calligra] krita/plugins/paintops/sketch/kis_sketch_paintop.cpp:

Multimedia

Mark Kretschmann committed changes in [amarok] /:

Remove QGLFunctions as it's only needed for OpenGL/ES and might crash.


FIXED-IN: 2.8.1
BACKPORT

Networking Tools

Andrea Diamantini committed changes in [rekonq] /:

improvement on urlbar suggestions
STEP 1: clean up!

- remember deleting ASAP the UrlSuggester
- remove preview label icon to let loading being faster
- remove unused opensearch inventories
- let ESC key on suggestions behave like major browser
(restoring original string)

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

Games

Jaime Torres Amate committed changes in [knavalbattle] /:

stop the animation when the main window is about to be closed.

Stopping the animation avoids a crash, because the animation is a
singleton. If it is a variable of the mainwindow, then it will be
stopped/deleted before the mainwindow is deleted.


FIXED-IN: KDE/4.11.4 KDE/4.12

Features

Development Tools

Kevin Funk committed changes in [kdevplatform] /filetemplates:

OverridesPage: Merge the two last columns

It doesn't make sense to display checkable boxes for {signal, slot} in
case it doesn't do anything. Instead, just print the type of the
function as string.

Albert Vaca Cintora committed changes in [kdeconnect-kde] /plugins/pausemusic:

Added a config dialog to pausemusic plugin

Before this it was not possible to change the pause condition (was a TODO).

Diffs: 1, 2, 3, 4, 5, 6 Revision 2fdffd5...
Sven Brauch committed changes in [kdev-python] /:

basic code completion for string formatting options

REVIEW:114030
GCI-TASK:6364660764770304

Diffs: 1, 2, 3, 4, 5, 6 Revision 91ce654...
Niko Sams committed changes in [kdev-php] /:

CodeCompletion ImplementationItem: extend to support member variables

Example:
class A {
protected $x = 1;
}
class B extends A {
}
this change will allow overriding $x in B by adding "protected $x = "

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

Educational

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

new runner plugin to parse NMEA files using gpsbabel as backend

REVIEW: 113998

Diffs: 1, 2, 3, 4, 5, 6 Revision 97d3e33...

Graphics

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

RAW preview in gwenview

It uses KDcraw to extract the embedded jpeg preview (most of the raw formats
contain it for the purposes of quick viewing the photos on the camera display)
or loads half-scaled preview (otherwise) so it is fast, implementing was quite
easy and theoretically it enables gwenview to support everything dcraw supports
(I haven't found a raw file that gwenview doesn't show with this patch). The
patch does not perform full demosaicing nor any tweaks (set white balance or so)
and I don't think it shall - digikam, darktable or rawtherapee are much more
suited for developing the 'digital negatives'.

The patch enables support for Nikon NEF and NRW formats, Canon's CR2 and CRW,
Pentax PEF, Sony ARW, Fuji RAF, Olympus ORF, Minolta MRW, Panasonic RW2, Samsung
SRW and Adobe DNG. If you want to try another format, just adding its MIME type
to the list in lib/mimetypeutils.cpp shall be enough.

The patch is feature-complete (generating proper thumbnails and viewing the raw
images incl. EXIF metadata) and well usable.


REVIEW: 113397

Pankaj Kumar committed changes in [kipi-plugins] /:

Add GoogleDrive and Dropbox export plugin

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

KDE Base

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

introduce a 'locked' property for the qml lock screen

if password locking is turned off, this lets the locker not show a
password unlocker (e.g.)

if password locking is on but there is a grace period, then the
property gets set once the grace period times out and the locker
can show the unlock UI

Conflicts:
ksmserver/screenlocker/greeter/greeterapp.cpp
ksmserver/screenlocker/greeter/themes/org.kde.passworddialog/contents/ui/main.qml

Diffs: 1, 2, 3 Revision 86d6d10...
Alex Turbov committed changes in [kate] /kate/pate/src/plugins:

Implemented as a Python plugin.

Michal Humpula committed changes in [kate] /:

add option to hide view scrollbars ondemand

in case she likes the gui minimal, let her choose
between hide always, never and on demand

REVIEW: 114057
GUI: new option in configuration Appearance->Borders->Scrollbars Visibility

Diffs: 1, 2, 3, 4, 5 Revision 5c4bccf...
Sebastian Kügler committed changes in [kde-workspace] plasma/generic/applets/devicenotifier/package/contents/ui/devicenotifier.qml:

Make devicenotifier "mostly" work

This makes the devicenotifier work, including showing removable devices,
changing the config, changing status accordingly, reacting on newly
plugged in and removed devices.

- plasmoid.configuration seems broken in the systray, hardcode and warn
for now
- add compactRepresentation Component
- use PlasmaCore.IconItem inside that
- wire up setPopupIconByName to this using a property

A few things need to be fixed elsewhere first, but this makes it mostly
functional, and is a nice step forward.

screenshot: http://i.imgur.com/EaAH5in.png

DIGEST:Make device notifier work in Plasma 2

Michal Humpula committed changes in [kate] kate/app/kateappcommands.cpp:

vimode: add ability to specify "!" for q command

now supports: wq, wqa, wqall, q!, qa!, qall!

REVIEW: 114039

David Edmundson committed changes in [kde-workspace] /:

Restore SystemSettings classic mode

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

KDE-PIM

Laurent Montel committed changes in [kdepim] /:

Start to implement import vcard

Office

Boudewijn Rempt committed changes in [calligra] krita/ui/kis_part2.cpp:

Start loading all the resources when we create the KisPart

This loads things like patterns nicely in the background while the user
is considering what to do with the startup screen, instead of during
view creation (which is then blocked until the last resource is loaded).

Jarosław Staniek committed changes in [calligra] libs/db/queryschema.cpp:

Make records in reports sorted according to the sorting of the query

Probably applies to forms as well.

Multimedia

Shantanu Tushar Jha committed changes in [plasma-mediacenter] mediaelements/playlist/Playlist.qml:

Highlight for playlists

Networking Tools

Andrea Diamantini committed changes in [rekonq] /:

improvements on urlbar
STEP 2:
- work & fix on search engine favicons
- simplify code (and remove dead one)
- API clean up
- delete ASAP list items and suggestions
- let the URL in the suggestions be an hard grey

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9 Revision cc6fa97...
Dan Vratil committed changes in [ktp-text-ui] logviewer/message-view.cpp:

Improve Previous/Next Conversation links in LogViewer

Use Older/Newer Conversation instead, as it's more clear that way

Games

Alexander Schuch committed changes in [konquest] /:

Group messages by turn number.

All messages logged to the messages dock now are grouped by turn number
for faster visual recognition.

REVIEW: 113929
GUI:

Alexander Schuch committed changes in [konquest] /:

Add production and fleet size to standings.

The standings overview now contains the current production and the overall
fleet size (planet defence plus attacking fleets) of each player.

This is implemented in Konquest 2.3.


FIXED-IN: 4.13
REVIEW: 113914
GUI:

Other

Jan Grulich committed changes in [libmm-qt] /:

Support only one SIM card
Fix crash during initialization of private class

Diffs: 1, 2, 3 Revision 29f25ed...

Optimization

Development Tools

Joris Steyn committed changes in [umbrello] /:

Refactor decoding of clip data

Decoding of UMLObjects now uses the same code path on all clips. Fixes that
recently went to clip1 are now also active for clip2 (diagrams). List view
items are never decoded, but created in response of a signal of new UMLObjects.

When pasting clip2 in the same file, only the diagram gets duplicated and not
all contained UMLObjects, like described in feature request 85807.

Milian Wolff committed changes in [kdevelop] languages/cpp/cppduchain/expressionvisitor.cpp:

Optimize: Remove obsolete duchain locks and constify statics.

The locks where apparently historically required, but nowadays its
perfectly fine to operate on AbstractTypes which are not part of
the duchain (yet). This is the case for the expr. visitor, which
just creates new types. This pattern is used in other areas as well,
so I'm fairly confident I don't break things that way. I also success-
fully parsed my big session froms cratch with this patch applied.

Still, better safe than sorry, so I put it into master.

The constifying of the statics should be a no-brainer.

Educational

Bernhard Beschow committed changes in [marble] src/apps/marble-mobile/MobileMainWindow.cpp:

delay reading of bookmarks to reduce startup time

KDE Base

Frank Reininghaus committed changes in [kdelibs] /:

Save memory by sharing QStrings in UDSEntry

If many UDSEntries are received from a kioslave, some of the QString
fields will often be the same for many entries in a row (for example,
the user name and the group). In this case, we can save memory by making
use of QString's implicit sharing feature for these strings.

Moreover, this commit adds a unit test that verifies that storing some
UDSEntries to a QDataStream and re-loading them works as expected.

REVIEW: 113591

Diffs: 1, 2, 3, 4 Revision 6d8fac9...

KDE-PIM

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

IMAP: speed up the FETCH response parsing

Previously, the code would happily hit the LowLevelParser::parseList even on the
top-level level, which is rather expensive. Instead of that, this change parses
the individual data fields separately and takes into account the knowledge of
the expected data type. Furthermore, the order in which these fields are checked
against is changed so that FLAGS, UID and MODSEQ are checked first because these
are going to be the most widely encountered entities during mass-syncing, which
was traditionally the bottleneck.

A high-level measurement: the whole test suite takes 9.5 seconds instead of
11.5, i.e. this is a 17.5% speedup.

Diffs: 1, 2, 3, 4 Revision 68ac229...
Jan Kundrát committed changes in [trojita] /:

tree: Use tagged pointers to save memory

This change exploits the fact that the TreeItem structure has to be aligned,
typically to four or 8 bytes. This means that the m_parent cannot ever have the
couple of lowest bits set, so we can merge the m_fetchingState and m_parent into
a single member variable and save memory by that.

REVIEW: 114018

Diffs: 1, 2, 3, 4, 5, 6 Revision 94d266f...
Jan Kundrát committed changes in [trojita] /Imap:

Do not use dynamic_cast in inner loops and other hot paths

There isn't much point in checking the correctness of our internal tree
representation all the time. Rough measurements indicate that one can get
another 1% speedup by switching to static_cast at these places.

REVIEW: 114014

Diffs: 1, 2, 3 Revision abd1248...
Jan Kundrát committed changes in [trojita] /:

Use QVector for TreeItem child management

This merges a series of commits which try to improve the speed efficiency of
child housekeeping for the in-memory tree which is maintained by the IMAP model.
This is deliberately not squashed into a single commit so that we can later take
a look at which data structure is actually the best one.

Both QVector and std::vector are close contenders; however, in our case QVector
appears to be *slightly* better -- an empty QVector only takes 8 bytes, while an
empty vector takes 24 bytes on my amd64 system. This is a useful optimization on
huge mailboxes as chances are that only a very small subset of messages will be
needed any given time.

std::vector offers slightly better performance, but I'll take the small memeory
saving in this context, I guess.

REVIEW: 114013

Jan Kundrát committed changes in [trojita] /Imap/Model:

tree: only allocate memory for message metadata when actually needed

Previously, all messages in a mailbox would be allocated as soon as a mailbox
was opened. The data was not being loaded from the cache or fro mthe network,
but the memory was still being consumed. This patch move those data which are
not immediately needed into an auxiliary struct which is only allocated upon the
first request.

This cuts the memory usage of the testFlagReSyncBenchmark to 25 MB from 45 MB of
the old version.

What will be interesting to do is implementing periodical freeing of resources,
so that messages which are "not needed" anymore could be reclaimed. However,
that will require tracking the actual usage patterns of the individual items
which is rather hard to do -- the Qt MVC API unfortunately doesn't help here,
not even when using the persistent indexes.

v2: Release the full MessageDataPayload when freeing the per-message memory.
Thanks to Thomas Lübking for his suggestion, and shame on me for not doing this
in the first place. Train coding apparently didn't work this time.

REVIEW: 113912

Diffs: 1, 2, 3 Revision 55085b7...
Andras Mantia committed changes in [kdepim-runtime] /maildir:

Use QDirIterator for listing the maildir folders. This:
- avoids some extra stats
- avoids calling into Maildir::findRealKey that caches the keys and uses a lot of memory for no real reason (in this case)

REVIEW: 113918

Laurent Montel committed changes in [kdepim] /:

Reimplement lock/alarm support

Diffs: 1, 2, 3, 4 Revision 049d46c...
Jan Kundrát committed changes in [trojita] /Imap:

tree: Switch to QVector for the list of item children

Benchmarking the testFlagReSyncBenchmark on top of 10k messages with callgrind
suggests that there's roughly a 0.6% speedup here.

Diffs: 1, 2, 3 Revision 0e8401c...
Dan Vratil committed changes in [akonadi] /:

Merge branch 'parttable-optimization'

The 'name' column in PartTable has been removed and it's content is
now stored in PartTypeTable table. Instead PartTable has partTypeId
column that references respective records in PartTypeTable.

This positively improves performance of SQL queries on PartTable
(which is the largest table in Akonadi, >1 million records is not
uncommon), as the database does not have to perform string
comparision against the entire table in WHERE queries, but only does
numerical comparision during JOIN, and the strings are compared against
the PartTypeTable, which is much smaller (~15 rows).

By having numerical, rather than string index and by removing massive
string duplication, size of the PartTable file on disk is reduced by
up to 30%.

To apply this changes a migration of PartTable is necessary. The
migration happens only once - the first time Akonadi is started after
update. Since the migration involves copying /all/ records in PartTable
to another table and reconstructing an index on the entire table, the
migration can take up to 10 minutes (depending on size of the table).
During that time all Akonadi-enabled applications cannot be used and
will show a busy progressbar and a message that Akonadi is being
upgraded.

Internally this merge introduces so called 'complex updates'. Complex
updates are implemented in DbUpdated as a Q_SLOT called
complexUpdate_%targetVersion%() and allows more complicated logic to
be involved during the update. The classical way of updating DB schema
by placing queries into dbupdate.xml file is still supported.

Conflicts:
server/src/akonadi.cpp
server/src/handler/fetchhelper.cpp
server/src/storage/datastore.cpp
server/src/storage/dbinitializer.cpp
server/src/storage/dbupdate.xml
server/src/storage/dbupdater.cpp
server/src/storage/dbupdater.h
server/src/storage/itemretriever.cpp

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

Office

Boudewijn Rempt committed changes in [calligra] filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp:

Optimize splitToRowAndColumn by not creating so many temporary qstrings

Boudewijn Rempt committed changes in [calligra] /plugins/paintops:

Clear the brush pyramid when selecting another brush

To save quite a bit of memory over the runtime of Krita.

Utilities

Harsh Kumar committed changes in [kate] part/utils/katebookmarks.cpp:

[patch 1/2] Improvements in KateBookmarks::insertBookmarks()

1.) Earlier code added one line number to sortArray in each iteration &
then sorted sortArray in each iteration.
Now, all the line numbers containing bookmarks are first added in
bookmarkLineArray & then sorted. Thus, the sorting algorithm is called
only once rather than calling it everytime a line with bookmark is
encountered.

2.) After all the bookmark line numbers are in bookmarkLineArray, just
iterate on that array. So, no loop is required to find out the index of
line number under consideration in the sorted array.
Removes a 'for' loop entirely which earlier ran for each iteration of
outer loop.

3.) Added some comments

REVIEW: 113974

Other

Educational

Sebastian Gottfried committed changes in [ktouch] /:

data: add Turkish keboard layout

Created during GCI 2013 by 'binaryking'.

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

KDE Base

Alex Fiestas committed changes in [kde-workspace] /:

[powerdevil] First port to KF5/Qt5

Plugins are the only thing left to be ported, the rest should be ok.

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

[kwin] NETWinInfo2 becomes NETWinInfo

And takes a xcb_connection_t instead of Display. Also our own class
is adjusted to no longer need the connection being passed in.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1 more) Revision eb2d308...
Aleix Pol Gonzalez committed changes in [kdelibs/frameworks] /:

KDED modularization

Add dependencies.
List in superbuild.
Don't look for DBus twice.
Re-enable documentation generation.

Reviewed by Alex Fiestas (who did kded splitting)

Diffs: 1, 2, 3 Revision 6031c64...
Christoph Cullmann committed changes in [kate/frameworks] /:

initial quick and dirty ktexteditor compilation on KF5

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

KDE-PIM

Volker Krause committed changes in [akonadi] /:

Remove non-functional ODBC/Virtuoso backend support.

REVIEW: 113977

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 13 more) Revision b645311...
Volker Krause committed changes in [akonadi] /:

Remove Strigi support.

As discussed during the KDE PIM sprint.

REVIEW: 113921

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

User Interface

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

Remove KDE4Support dependency from plasma-frameworks (almost)

Stop using classes from kde4support:
- KComponentData is deprecated, it will be using QCoreApplication::
applicationName() and QCoreApplication::applicationVersion(). Of course,
this means that the existing shells will have to be ported. I have no
problem with doing that port myself, if I'm told where to look into.
- Drop usage of KLocale, ported to QLocale
- Drop usage of KStandardDirs, ported to QStandardPaths
- Drop usage of KIcon, ported to QIcon

Furthermore, there's a module in src/declarativeimports/locale that IIUC
exposes KLocale bindings to QML. A specific plan to port it should happen
as well.

REVIEW: 113920

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