|Commits||2282 by 155 developers|
|Bugs Opened||331 in the last 7 days|
|Bugs Closed||290 in the last 7 days|
|Patrick von Reth||
|Aleix Pol Gonzalez||
Internationalization (i18n) Status
|Brazilian Portuguese (pt_BR)||
|Albert Astals Cid||
There are 83 selections this week
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.
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:
adjust size hint when toolbar options might show up or hide
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.
Trigger the Present Windows effect when control-clicking on a group.
Forward-port of kde-workspace:87a7549.
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
To get back into a clean state discardPixmap() is called if there is no
texture but a bound low level pixmap.
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
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.
fix adding programs to autostart
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.
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
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
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.
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.
IMAP-Resource: Detect inconsistency in local cache and refetch.
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.
Fix Transfrom Tool arrows on mirrored canvas
Thanks Koushik S for preparing this patch!
Fix Palettes docker to support color managed rendering of colors
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.
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
Don't disable input box when disconnected.
Instead show a KMessageWidget that will tell the user that the account is offline.
Map connection presence type to string
In libkpeople we pass the presence around as a string as that's all
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.
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
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
Add support for Variable and IncompleteArray types.
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
Added OctavePackagingExtension::importPackage to Octave backend
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
Reviewed-by: Sebastian Kügler
[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.
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
Baloo Search Runner: Show the url in the subtext
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.
Start to implement rename note collection
Implement Note serializer for Akonadi backend
Implement the filtering on the collection content types
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.
libodf2: Add a page layout style object
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).
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.
Value list's menu label changes for adding/changing values
As requested in comment 4 of Gna! bug 21870  ("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  was supplied by Jürgen Spitzmüller and committed with minor
modifications by Thomas Fischer.
Start work on ProjectManagerView.
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.
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.
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
LocalContrast tool : add Multicore support through QtConcurrent API
On my i7 CPU, 24Mpx image processing time is divised by 2
CCBUGS : 289204
UnsharpedMask tool : add Multicore support through QtConcurrent API
CCBUGS : 289204
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.
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
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:
RESULT : IndexerExtractorTests::benchMarkPlainTextExtractor():
697.0 msecs per iteration (total: 6,970, iterations: 10)
RESULT : IndexerExtractorTests::benchMarkPlainTextExtractor():
88.2 msecs per iteration (total: 883, iterations: 10)
Switch from IconItem to QIconItem for performance reasons.
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.
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.
IMAP-Resource: Increased the batch size.
This speeded the synchronization of mailbox up by ~30% on my system.
Do not sort the directory entry list in listNew() and listCurrent():
According to callgrind dumps at
QDir sorts the list of directory entries unless specified otherwise.
After disabling the sorting the callgrind is quite different already:
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
Thanks to Sergio and David for help and pointing out how to disable
DIGEST: Huge performance improvement for POP3 users with large maildir.
IMAP-Resource: Use batch-processing also for the flag fetch. Another optimization to avoid a full refetch.
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
go away completely as demonstrated in the callgrind dumps at:
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
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.
DIGEST: Huge performance improvement for POP3 users with large maildirs.
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.
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.
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.
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").
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
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.
Do not popup during initialization
The notifier should not popup if devices are detected during the
applet initialization phase (e.g. on plasma startup)
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).
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
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.
First bach of porting for XRandR 1.1 backend
Remove queryExit, 12 years after Lubos documented it as a bad idea :-)
I ported all the applications away from it.