Issue 312

3rd November 2013 by KDE Commit-Digest Team

Contributors

Marta Rybczynska
Alex Fikl
Giacomo Barazzetti

This Week...

In KTouch there is an easy way again to train on self-supplied texts. Systemtray makes the grid view more dynamically sized, remove pulse animation when battery is low to save energy even more. KCachegrind adds "cost per function call" column in the call view. Kdeconnect improves package dispatch to the different plugins. Konversation makes it possible to disable notifications for certain highlights. Important optimizations in Kate code completion and Dolphin item sorting.

Statistics

Commits 2031 by 139 developers
Open Bugs 21285
Open Wishes 15906
Bugs Opened 307 in the last 7 days
Bugs Closed 320 in the last 7 days

Commit Summary

Module Commits
/trunk/l10n-kde4
196
 
/branches/stable
63
 
/trunk/l10n-support
37
 
/akonadi/calendar
14
 
/trunk/www
12
 
/krita/ui
11
 
/trunk/playground
11
 
/generic/applets
10
 
/src/shell
10
 
/plugins/knotes
10
 
Files Developer Commits
381
 
Laurent Montel
140
 
177
 
Aleix Pol Gonzalez
60
 
138
 
Dennis Nienhüser
47
 
132
 
Roman Paholík
44
 
126
 
Yuri Chornoivan
42
 
120
 
Sergio Luis Martins
41
 
117
 
Pali Rohár
40
 
105
 
Gilles Caulier
35
 
105
 
David Faure
35
 
99
 
Giorgos Tsiapaliwkas
34
 

Internationalization (i18n) Status

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

Bug Killers

Person Bugs Closed
Jekyll Wu
78
 
Christoph Feck
30
 
Gilles Caulier
19
 
Boudewijn Rempt
17
 
Sergio Luis Martins
14
 
José Manuel Santamaría Lema
12
 
Martin Tobias Holmedahl Sandsmark
10
 
Andrea Iacovitti
9
 
Cedric Bellegarde
9
 
Aleix Pol Gonzalez
9
 

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

Bug Fixes

Accessibility

Jeremy Paul Whiting committed changes in [jovie] /:

Escape cdata sections in string replacer xml export and unescape on import.
Thanks to Chen Levy for the bug report and patch.

FIXED-IN:4.11.3

Educational

Aleix Pol Gonzalez committed changes in [analitza] /:

Fix crash in marchingsquares

Make sure we don't overflow when looking for the triangles... I think.
Improve the tests while at it.

José Manuel Santamaría Lema committed changes in [parley/KDE/4.11] src/parleydocument.cpp:

Don't crash when downloading .tar.7z files with KNS.

If I just download it manually, uncompress the *.tar.7z file and feed the kvtml
file into parley it doesn't crash.

There are 2 separate problems involved here:
1) KNS doesn't work with *.tar.7z files.
2) Even if the the file format of the file downloaded from KNS isn't recognized
for now, parley shouldn't crash.

The patch in this reviewboard is intended to fix the problem 2) and it was made
with help from Aleix Pol (thanks!).

Just in case you are curious about the problem 1) - the related code from
kdelibs is the following:

* knewstuff/knewstuff3/core/installation.cpp
(function Installation::installDownloadedFileAndUncompress)
Here knewstuff tries to use KTar to deal with the downloaded file.

* files under kdecore/compression/*
Here is kfilterdev, if I'm not mistaken this is what KTar uses to deal with
files compressed gz,bzip,etc. The thing is: there is no filter for *.7z files,
so that's why they can't work in KNS right now.

REVIEW: 113484

Aleix Pol Gonzalez committed changes in [analitza/KDE/4.11] /:

Fix usage of polar functions with FunctionEditor

Make sure theta grows towards the correct end

Aleix Pol Gonzalez committed changes in [analitza/KDE/4.11] analitzagui/plotsview3d.cpp:

Support rotation using arrow keys

This is a regression.

Aleix Pol Gonzalez committed changes in [analitza/KDE/4.11] /:

Make it possible to Zoom in and out using W and S.

This was a regression from the porting away from Graph3D

Aleix Pol Gonzalez committed changes in [analitza] /:
Aleix Pol Gonzalez committed changes in [kalgebra] /:

Use the same Variables in the console and 2D

Graphics

Gilles Caulier committed changes in [kipi-plugins] rajceexport/rajcewidget.cpp:

apply patch from Jiri Slaby to prevent RajceExport tool crash at dialog init.

REVIEW: 112098
FIXED-IN: 4.0.0

Gilles Caulier committed changes in [kipi-plugins] /:

Apply patch #82683 from Tim Newsome about to make smug export work with smugmug's new interface.

Changed most http_post() calls to get() calls. Apparently POST doesn't
work with the new interface albums.
Upgraded the interface we use from 1.2.0 to 1.2.2, since that's the
latest version in the 1.2 train.
Sort the list of albums that we receive from smugmug before presenting
it to the user.


FIXES-IN: 4.0.0

Gilles Caulier committed changes in [digikam] /progressmanager:

add eventloop in ProgressManager to wait progressitem deletion is complete when slotAbortAll() is called.
By this way, if user close digiKam when progressitems are currently running in background (as some maintenance tools),
this prevent violent crash due to close remain active objects in memory.

FIXED-IN: 4.0.0

KDE Base

David Stephen Hubner committed changes in [kde-workspace] /:

Change sidepanel events from activated to clicked

Change the events due to the single click, double click setting
in KDE not being taken into account.


FIXED-IN: 4.12

Dominik Haumann committed changes in [kate] /:

swap file recovery: properly restore cursor position

Now undo and redo cursors are set correctly for the data that is
restored with the swap file recovery process. Thanks to this, you
can now undo/redo and see what text changed. This was not possible
before. So this is a nice improvement, since you now really know
what data is recovered, if you want this information.

Diffs: 1, 2, 3, 4 Revision c52e5cf...
Christoph Feck committed changes in [kde-workspace/KDE/4.11] plasma/generic/runners/calculator/calculatorrunner.cpp:

Fix krunner calculator letter check

To make it work, you have to start or end the calculator
input with a '=' symbol again. For inputs not containing
letters, you can still omit it.


FIXED-IN: 4.11.3
REVIEW: 113504

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

Fix brightness not being correctly reset on AC plugged-in

immediately trigger the simulated user activity by hand, otherwise it
will only be called later in mainloop after load the new profile.


FIXED-IN: 4.11.3
REVIEW: 113478

Mirko Boehm committed changes in [kdelibs/frameworks] /threadweaver:

Ensure neither queue nor thread keep a reference to a previous job.

See comments on JobTests::JobsAreDestroyedAfterFinish:

Verify that neither the queue nor the thread keep a reference to the job
after completing it.

This is necessary because user-allocated objects like queue policies may
be registered with the jobs. If the jobs stick around until the thread
or queue are deleted, the user-allocated objects may have gone out of
scope or been deleted already, causing potential errors. From
ThreadWeaver's point of view, a job seizes to exist once the processing
thread asks for the next job.

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

[kwin] Do not allow Qt to raise decoration widget above the Client

If the user actions menu is closed Qt looks for a QWidget at the mouse
position. If it finds one it tries to activate and raise it. If the
QWidget at the mouse position is a window decoration, it gets raised
above the Client. This makes the window unfortunately unusable.

To prevent this from happening we listen for the ZOrderChange event
in our event filter on the decoration widget and unconditionally lower
the decoration widget again - we never want the decoration widget to
be above our Client, so we can just always lower it. We have to use
the low level functionality and cannot use QWidget::lower as that would
result in a loop.

Albert Astals Cid committed changes in [kde-workspace/KDE/4.11] /generic/applets/notifications/contents/ui:

Fix crash when removing a notification while we are adding one

Reading https://bugs.kde.org/show_bug.cgi?id=311871#c41 you can see that it happens that we are doing a
78 0x00007f4eff8c5ffb in QDeclarativeListModel::insert (this=0x1ebbdb0, index=0, valuemap=...) at util/qdeclarativelistmodel.cpp:436
and then we end up reentring and doing
16 0x00007f4eff8c737f in QDeclarativeListModel::remove (this=0x1ebbdb0, index=6) at util/qdeclarativelistmodel.cpp:402

Some of the stuff that depends on the QDeclarativeListModel doesn't seem to like getting a "remove" while a "insert" is happening and to be honest m in no mood to fix that, so basically I'm protecting against that happening in our QML code. From what i read you have to be extremely unlucky since the timer only triggers each 10 minutes and it has to trigger at the same time a notification is being added, but oh well, the backtrace points to it and two different people in two different systems say it has stopped the crashes so I don't think it hurts to have this in.

Acked by Aaron J. Seigo
REVIEW: 113471

FIXED-IN: 4.11.3

Oswald Buddenhagen committed changes in [kde-workspace/KDE/4.11] kdm/kcm/main.cpp:

fix kcm botching unrelated user settings

KDE-PIM

Sergio Luis Martins committed changes in [kdepimlibs/KDE/4.11] akonadi/calendar/incidencechanger.cpp:

Don't send CANCEL to attendees when deleting an event we didn't organize.

When deleting something that's not ours, only a REPLY with
PartStat=Declined must be sent, and to the organizer only.

Due to a bug, CANCEL was being sent to everybody, as if we were
the organizer.

Unit-test will go in master.

Bug 318394 should be similar, but for modification instead of deletion.




FIXED-IN: 4.11.3

Laurent Montel committed changes in [kdepim] knotes/knotesapp.cpp:

Fix Bug 314825 - KNotes opens an empty note on startup

FIXED-IN: 4.12

Dan Vratil committed changes in [kdepimlibs/KDE/4.11] akonadi/resourcebase.cpp:

Wait for changes from resource to be written to Akonadi before marking change as processed

This fixes a problem with invalid RIDs after inter-resource moves.
When there is an another changeReplay for the just moved item
scheduled in the new parent resource, the item will have invalid RID
(or rather RID assigned to it by the previous parent resource).
It's because the ItemModifyJob dispatched from ResourceBase::changesCommitted()
with the new RID is not finished yet when the next task is dispatched,
and so the item in resource's EntityCache is not invalidated
and the resource will use it instead of the updated one.

By waiting for the ItemModifyJob dispatched from changesCommited()
to finish before marking the change as processed and dispatching
next task we make sure that in case the next task involves the
same item the change will be stored in Akonadi and the item will
be invalidated in local caches, forcing the resource to fetch the
item again from Akonadi before starting the task.

This fixes 'Invalid uidset' error reported by IMAP resources after
the MailDispatcher agent moves the mail from local Outbox to remote
Sent folder and updates it's flags.




FIXED-IN: 4.11.3

Laurent Montel committed changes in [kdepim/KDE/4.11] kaddressbook/mainwidget.cpp:

Fix Bug 231540 - Alternative row colours in contacts list

Apply patch from wuertz

FIXED-IN: 4.11.3

Multimedia

Matěj Laitl committed changes in [amarok] /:

MySqlEmbeddedStorage: fix failure to start embedded server because of wrong options

This was because we were passing --myisam-recover-options and this
options does not exist in MySQL 5.1 (and MariaDB). The *command-line*
option (as opposed to system variable name) to set recovery mode is
tricky:
MySQL <= 5.1: --myisam-recover [1]
MySQL >= 5.5: --myisam-recover-options, should also accept
--myisam-recover [2]
MariaDB: --myisam-recover [3]

*However*, the *system variable name* has always been named
myisam_recover_options, that's why it worked in Amarok <= 2.8.

No need to backport this because of the above.

Simple fix is to rename the option to --myisam-recover


FIXED-IN: 2.9

[1] https://dev.mysql.com/doc/refman/5.1/en/myisam-start.html
[2] https://dev.mysql.com/doc/refman/5.5/en/myisam-start.html
[3] https://mariadb.com/kb/en/myisam-server-system-variables/

Mark Kretschmann committed changes in [amarok] /:

Fix compilation with libc++. Workaround for QTBUG-25960.

Due to QTBUG-25960, compilation would fail with libc++ when STL algorithms
are used with Qt iterators. This patch works around the issue.

This should also fix compilation on OSX and FreeBSD, where Clang and libc++
is used by default.


FIXED-IN: 2.8.1
BACKPORT

Networking Tools

David Edmundson committed changes in [ktp-text-ui/kde-telepathy-0.7] lib/chat-widget.cpp:

Fix sorting in MUC contact list

REVIEW: 113579

FIXED-IN: 0.7.1

Jan Grulich committed changes in [plasma-nm] vpn/pptp/pptpprop.ui:

Password input should be enabled, because the default value is store

Jan Grulich committed changes in [plasma-nm] /model:

Allow to have same connections under different names

i.e you can have two connections for some AP with different IPv4 configuration, before there was only one of them

User Interface

Hugo Pereira Da Costa committed changes in [oxygen-transparent] style/oxygenargbhelper.cpp:

Fixed window positionning issues when setting translucent background.
Patch is based on QtCurve code.
Many thanks to Yichao Yu

Utilities

Martin Tobias Holmedahl Sandsmark committed changes in [filelight] src/part/localLister.cpp:
Wolfgang Bauer committed changes in [apper] libapper/PkTransaction.cpp:

Fix accepting multiple license agreements

This patch fixes the handling of more than one license agreement by
setting d->handlingActionRequired = false in requeueTransaction().

Before, this was still true when entering slotEulaRequired() for the
second license. That one was not shown therefore, but Apper aborted
instead.

Games

Nemanja Hirsl committed changes in [konquest] dialogs/newgamedlg.cc:

The game will never end if none of the players has any planets. This
patch makes sure that the game can only be started if all non-spectator
players do have at least one planet.

Some internal variables are renamed to make the name match their
content/purpose much better.

REVIEW:113446

FIXED-IN:4.12.1

Punit Mehta committed changes in [khipu] src/spaceinformation.cpp:

Other

Marco Martin committed changes in [bodega-webapp-manager] /:

init the tooltip manager

Marco Martin committed changes in [bodega-webapp-manager] /:

proxied connections are "close"

when doing proxy connection to the server, seems that if they are keep-alive only one request will work, subsequent requests will get lost. Probaby is an issue of life-span of the proxy_request and proxy_response objects

Features

Development Tools

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

Improved package dispatch to the different plugins

Before this patch, all plugins had to discard received packages that were
not for themselves. This could be a security problem (a plugin could sniff
other plugin's packages) and also adds some complexity and processing.

This patch makes the device instance aware of what services are required
by the different plugins and when a package is received the corresponding
plugins will get the package.

These services will be listed on the plugin's desktop file, so the user
can decide whether to enable a plugin.

Note that this only works for receiving, not sending.

REVIEW: 113210

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 12 more) Revision 5e151d1...
David Faure committed changes in [kcachegrind] /:

Add "cost per call" column in the call view.

This is especially useful when comparing two callgrind runs, if the number
of calls to the methods can vary between runs (e.g. number of widget repaints).

This column is unaffected by the "use percentages" setting, which makes
it even more useful (one can look at overall percentages and at cost-per-call
at the same time).

Diffs: 1, 2, 3, 4 Revision 1087b2a...
Milian Wolff committed changes in [kdevelop] /:

Paint full splash screen in QML.

This is especially nice since it reduces the maintenance whenever
we increase the version number. Now we simply show the version
of the compiled KDevelop application which is much better than having
to update a pixmap everytime.

And if the QML fails to load for some reason, well its a bug and
should be fixed. Having a pixmap fallback for that does not make
sense in my eyes.

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

Educational

Aleix Pol Gonzalez committed changes in [kalgebra/newcalculator] /calculator2:

Create a new calculator plasmoid, based on qml

It will deprecate the still QGV-based one, will do after KDE 4.12 branching,
hoping to minimize disasters

Sebastian Gottfried committed changes in [ktouch] src/CMakeLists.txt:

merge branch 'custom-lessons'

And with that, there is an easy way again to train on self-supplied
texts in KTouch. This fills the biggest remaining feature regression
in comparison to KTouch 1.x, only in a much improved way.

Instead of providing a simple file dialog to pick a text and use
that immediately, we organize the custom lessons in a special
course so the user can track his progress on these lessons like
for the built-in courses. Also the custom lessons are kept separately
for each user profile and keyboard layout.

In the editor for custom lessons, a much simplified form of the full
blown course editor, we offer the usual quality checks. This is
important, so the user has a chance to identify characters he can't
type with his keyboard before he actually hits them during training.

DIGEST:

Graphics

Albert Astals Cid committed changes in [okular] core/fileprinter.cpp:

Pass down to lpr the printer margins

This makes automagically work the printing on printers with
hard-margins since the QPrinter dialog margins are initialized to the printer
hard-margins. If you still want the old and mostly unuseful
behaviour of not having any margin (and thus your printer not printing things on the borders) you
can always set the margins to 0 in the dialog


FIXED-IN: 4.12.0

Gilles Caulier committed changes in [kipi-plugins] /:

FlickrExport: apply patch #80324 to try to automatically guess new flickr set name from image folders

FIXED-IN: 4.0.0

KDE Base

Sebastian Kügler committed changes in [kde-workspace] /generic/applets/systemtray2/package/contents/ui:

Systemtray: Delegate Sizing

This commit makes the gridview more dynamically sized. I think in a
world of Retina displays, we should move away from pixel-based sizes as
much as possible. From this point on, protocols are simply not allowed
to determine the size of their items. We can still apply tricks in the
possible x11 protocol, and have support for images and movies of fixed
size working well. The input area absolutely has to be client-defined,
we can't have applications tell us "the interactive area for this app is
22x22 pixels" -- that is not going to happen, as it simply breaks on
different dpi *and* input devices.

As such, the item size is now more dynamic, the logic is not complete
yet, but the direction of this gets clearer. This makes the "basic"
itemSize a "recommendation" to the UI for now (it will become an even
more internal detail later).

Otherwise, the system tray is coming along nicely. What works:

- Display of status notifier items (not interactive yet, just icons)
- Embedding of plasmoids such as battery, network
- Status: items are shown and hidden (moved between the models, really)

A few things that I want to improve at a later stage is the messy popup
situation. We can probably embed the popups of the plasmoids and
statusitems into the systemtray popup and streamline this navigational
process a bit, while keeping the same interaction model.

We're obviously not feature-complete yet and it's all very
work-in-progressish, but it's "coming along nicely". :)

Here's a screenshot: http://i.imgur.com/LuQdkDL.png


DIGEST:

Diffs: 1, 2, 3 Revision f5e0dde...
Albert Astals Cid committed changes in [kdelibs/KDE/4.11] solid/solid/backends/udev/udevdevice.cpp:

Improve mtp support

A simple hack to make media players more distinguishable until a better solution can be integrated in KF5 as discussed with afiestas at Akademy 2013. Follows up on his patches that never got integrated.

Returns the product instead of the description.

Approved by Lukáš Tinkl and Àlex Fiestas

REVIEW: 111576

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

Rework superbuild to make it easier to use

One can now build a framework with superbuild using `sb_<framework>` or build
all frameworks with `sb_all`.

REVIEW: 113506

Diffs: 1, 2, 3, 4 Revision 359dec5...
Lukáš Tinkl committed changes in [kdelibs/KDE/4.11] /solid/backends/upower:

port to UPower 0.99.0 which changed a couple of signals

Diffs: 1, 2, 3 Revision 44afff9...
Sebastian Kügler committed changes in [kde-workspace] /generic/applets/systemtray2/plugin:

Bookkeeping for tasks

This makes migration of task objects between shown and hidden work.
Depending on their status, and the shown property of the task, the task
is moved between the lists when its status updates. This commit also
fixes forwarding the status in the PlasmoidInterface, which wasn't wired
up yet.

Memory management has changed a bit, too, we now keep references to the
declarative lists in the private object.

In order to make shown / hidden preferences for tasks work, we need to
book-keep this information in host, not in the individual tasks (as
these are global objects, and we want to change configuaration per host.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 4ef8cea...

KDE-PIM

Dan Vratil committed changes in [kdepimlibs/akonadi-idle] /:

Implement IdleJob - client-side IDLE handler

IdleJob handles the entire IDLE session. It sends IDLE START
on start, automatically parses filters to generate IDLE FILTER
command and also listends for incomming notifications. Incoming
notification is parsed into IdleNotification and notify() signal
is emitted once the entire batch is received.

Laurent Montel committed changes in [kdepim] /plugins/knotes:

Add dialog box to show which notes will removed

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

Office

Thomas Baumgart committed changes in [kmymoney] /:

Added scripts for automatic price download

The two scripts provided by Joe W. Byers for automatic
price information download have been added. They need
to be configured before they can be used in another
environment than the one of the original author.

Dmitry Kazakov committed changes in [calligra/krita-testing-kazakov] /:

Added an option for High Quality image downsampling for OpenGL canvas

1) This option activates a custom shader, which filters the image
with a variation of trapezoidal filter using "one-but-nearest"
mipmap level. This gives quite decent results, although it might
be not perfect from the maths point of view.

2) The patch also sets the default texture size to 256. Otherwise
activation of mipmap generation will make the painting with smaller
brushes insanely slow. This happens because the mipmap is regenerated
for the whole texture every time we change a small portion of it.

Networking Tools

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

[ #33826 ] Add ability to add contact from File menu

Diffs: 1, 2, 3, 4 Revision a4afe71...
Jan Grulich committed changes in [plasma-nm] vpn/openconnect/openconnectauth.cpp:

Display loaded password in the VPN secret dialog

Patch from Peter Klotz

Shaheed Haque committed changes in [krdc] /:

Improve the handling of passwords with respect to reconnection

1. Stop trying to reconnect if the password is bad/goes bad.
2. Don't get into reconnect mode if we don't have a password.
3. Don't keep an extra copy of the password.
4. Fix a pre-existing error where an auth failure due to excessives
retries is elided by a less specific message.

Sven Brauch committed changes in [konversation] /:

Make it possible to disbable notifications for certain highlights.

This is useful for "negative" highlights.
REVIEW:110261

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

Other

Albert Vaca Cintora committed changes in [kdeconnect-android] /main:

Added rewind and fast-forward buttons to MPRIS controls

Diffs: 1, 2, 3, 4 Revision 2f26fa5...
Marco Martin committed changes in [plasma-framework] /shell/qmlpackages/desktop/contents/activitymanager:

a very raw activity manager

it's just a port of the old qml code, will need more rework

Aaron J. Seigo committed changes in [bodega-client] /bodega/handlers:

a generic asset handler

it just installed into Downloads and uses xdg-open to open the result

Albert Vaca Cintora committed changes in [kdeconnect-android] /main:

Added a settings activity to change the publicly visible device name

When changed the new name will be used instead of the one from
HumanDeviceNames

REVIEW: 113204

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

Optimization

Educational

Aleix Pol Gonzalez committed changes in [analitza/KDE/4.11] analitza/operations.cpp:

Improve the definition of some trigonometric functions

Especially Inverse hyperbolic functions

KDE Base

Andriy Rysin committed changes in [kde-workspace] kcontrol/keyboard/xinput_helper.cpp:

Reconfigure layouts even if only pointer device is connected

FIXED-IN: 4.11.3

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

Store the selected items in a more efficient way

Since Dolphin 2.0, we have stored the selected items in a QSet<int>,
which is neither space-efficient nor particularly fast when inserting
many items which are in a consecutive range.

This commit replaces the QSet<int> by a new class "KItemSet", which
stores the items in a sorted list of ranges. For each range, we only
store the first index and the length of the range, so we need a lot
less memory for most common selection patterns, and we also save quite
a few CPU cycles in many situations, because adding an item to the
KItemSet will in many cases not need a memory allocation at all, and
it's particularly easy when inserting sorted items into the KItemSet in
a row.

KItemSet contains a minimal subset of QSet's API which makes it
suitable as a drop-in replacement for our needs. It also has iterators,
such that the items can be iterated through easily, also with foreach.
One advantage of KItemSet compared to QSet<int> is that the items are
always iterated through in ascending order.

REVIEW: 113488

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 16 more) Revision 5c5d87f...
Milian Wolff committed changes in [kate] /:

Optimize Kate code completion.

a) Don't resort when we narrowed the filter, as then the sorting
should be preserved. This has a great effect (~50% faster).

b) Don't rematch items whose text did not change. This is mostly
an issue for KDevelop e.g. which has often multiple completion models
per view (word completion, language completion, snippets) and up
until now we would filter all items three times.

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

Sort in items in two stages to speed up natural sorting

Sort the items in a folder first according to their name, without doing
a natural/locale-aware sorting. This is very fast, but the order of the
items is then already close to the final order in most cases.

The number of expensive natural comparisons required to sort the items
is thus greatly reduced.

In my experiments with a folder with 100,000 items, the time required
to sort the files was reduced by 63% with this patch.

REVIEW: 113485

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

Prevent storing some redundant data in KItemListViewLayouter

In KItemListViewLayouter, we have always stored a QRectF for each item,
which is "the area that the item occupies". However, the size of the
QRectF is already stored in the size hint resolver.

Therefore, it is sufficient to store the position of the top left
corner of the QRectF in a QPointF and construct the QRectF on demand.

This patch reduces the memory usage by 16 bytes for each item in the
view:

* a QRectF is 4 doubles -> 32 byes
* a QPointF contains only 2 doubles -> 16 bytes

REVIEW: 113487

Kai Uwe Broulik committed changes in [kde-workspace/KDE/4.11] /generic/applets/batterymonitor/contents/ui:

Remove pulse animation when battery is low.
It can cause full-screen repaints and causes significant stress to the CPU/GPU and thus to the battery,
if and only if we should actually conserve battery.
Also, the systemtray in Plasma 2 is likely to have its own animation of tray icons when they set the
NeedsAttention status. So just kill it. :-)

Networking Tools

Alex Fiestas committed changes in [ktp-filetransfer-handler/kde-telepathy-0] /:

Implement speed calculation for incoming/out-going transfers

This is not done automagically by KJob so we have to implement it
by ourselves.

Other

KDE Base

Mirko Boehm committed changes in [kdelibs/frameworks] /threadweaver/src/Weaver:

Add convenience API for queueing and creating job objects.

Move Weaver class into it´s own file. Make ThreadWeaver.h the catch-all
header to include the most important ThreadWeaver components.

Diffs: 1, 2, 3, 4 Revision da4da04...
Alex Merry committed changes in [kdelibs/frameworks] tier1/kguiaddons/src/plugins/imageformats/eps.cpp:

Fix writing EPS files

QPrinter is no longer capable of producing PostScript files, so we
output to PDF then used GhostScript (or pdftops from Poppler) to convert
the result to EPS. Note that GhostScript is already used by the reading
code.

REVIEW: 113704

Alex Fiestas committed changes in [bluedevil/bluez5] /actionplugins/sendfile/helper:

Port sendFile to bluez5

First code dump of the port to bluez5 of send file, everything works
more or less.

Diffs: 1, 2, 3, 4, 5, 6 Revision 3398860...
Alex Fiestas committed changes in [kdelibs/frameworks] /:

Move KDED files into a proper Framework structure

Martin Tobias Holmedahl Sandsmark committed changes in [kdelibs/frameworks] /kio/src:

Add support for retrying to KIO.

Add an explicit retry button to the kio skipdialog.

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