Issue 338
4th May 2014 by KDE Commit-Digest TeamContributors
Marta Rybczynska
Danny Allen
Jürgen Appel
Giacomo Barazzetti
This Week...
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
parser: fixed the parsing of hexadecimal and binary literals.
REVIEW: 116795
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:
https://chromium.googlesource.com/native_client/nacl-toolchain/+/gcc-4.5.0/gcc/gcc/testsuite/gcc.dg/cpp/arith-3.c
Graphics
adjust size hint when toolbar options might show up or hide
FIXED-IN: 4.13.1
KDE Base
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
shown.
To get back into a clean state discardPixmap() is called if there is no
texture but a bound low level pixmap.
REVIEW: 117824
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
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
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.
KRun doesn't really support schemeless urls
make sure the urls that are just a path, being representative
of local paths, make them file://
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.
REVIEW: 117903
KDE-PIM
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.
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.
Office
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-
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.
Networking Tools
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
Don't disable input box when disconnected.
Instead show a KMessageWidget that will tell the user that the account is offline.
REVIEW: 117809
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.
Features
Development Tools
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.
Use QML qualified identifiers to build uses
REVIEW: 117971
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
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
Add support for Variable and IncompleteArray types.
Educational
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.
Added OctavePackagingExtension::importPackage to Octave backend
KDE Base
better radial symmetry look for the icon
M +- -- src/desktoptheme/breeze/icons/device.svgz
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
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
[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
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.
Baloo Search Runner: Show the url in the subtext
KDE-PIM
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:
Start to implement rename note collection
Implement Note serializer for Akonadi backend
Implement the filtering on the collection content types
Office
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.
Add support for ConceptWidget
This is Ralph's patch, unmodified.
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).
Docx export filter - partial support for comments
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 [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
Multimedia
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.
REVIEW: 117915
Networking Tools
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.
User Interface
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
Utilities
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
Introduce kdoctools_install()
This function makes it easy to install all .docbook of a framework.
REVIEW: 117805
Optimization
Graphics
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
CC
KDE Base
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
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.
KDE-PIM
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
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.
Ubuntu: Lazy load Settings tabs
Only create the settings tabs when we need them
REVIEW: 117817
IMAP-Resource: Use batch-processing also for the flag fetch. Another optimization to avoid a full refetch.
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
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.
Multimedia
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
Utilities
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.
Other
Development Tools
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.
KDE Base
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
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
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.
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
Do not popup during initialization
The notifier should not popup if devices are detected during the
applet initialization phase (e.g. on plasma startup)
restore corona immutability
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).
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.
Initial port to KF5
Initial port to KF5 using KDELibs4Support.
REVIEW: 117841
KDE-PIM
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
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.