5th May 2013by KDE Commit-Digest Team
|Commits||1967 by 139 developers|
|Bugs Opened||308 in the last 7 days|
|Bugs Closed||249 in the last 7 days|
Internationalization (i18n) Status
|Brazilian Portuguese (pt_BR)||
|aleixpol kde org||
There are 44 selections this week
Fix source annotation for file names with non-ASCII chars
For non-ASCII characters in source file names, KCachegrind
always assumed latin1 encoding. It is far better to assume
file name encoding taken from the systems locale (fromLocal8Bit).
In strange cases, this still may go wrong, but then the developer
also has other issues, and can convert the encoding of the
profile dump himself.
Fix suggested in bug 319143 by Vadim Ushakov.
Don't visit decorators and base classes twice
This led to crashes because the second turn was done within
the class context.
Fix crash when member group category doesn't exist.
When the category of the member-group does not exist, a warning is
printed on the console and a matching category is created.
Fix thumbnails disappearing when columns are too wide.
The idea here is that for landscape images, we adjust the height to
to be as high as the row height as long as the width can stretch enough
because the column is wider than the thumbnail size.
However, digiKam limits the thumbnail size to 256, so we also do that here.
Check toolbars visibility before FullScreen mode and restore it after.
Don't go into an infinite loop if we '#' on the last, blank line of the document.
Rename multiple files: Determine correctly if the name pattern is valid
The "Rename" button in the dialog should be enabled if and only if the
"new name" pattern is valid. This is the case if the pattern contains
exactly one sequence of '#', which will be replaced by digits.
This patch fixes the problem that
(a) A pattern that contains a single '#' is not considered valid, and
(b) A pattern without any '#' at all is not recognized as invalid.
Use the same text color for selected hidden and non-hidden items
This fixes the problem that the names of selected hidden items are
unreadable with some color schemes.
Fix animation timer running forever when the index isn't visible.
(e.g. index is scrolled out of view)
This happened to me due to a favorite that was a grand-child of an imap inbox.
It got painted initially, but then scrolled out of view, so it was never repainted
so the animation timer was never stopped. Waste of CPU.
Fix Bug 319034 - Create tag from "Mark Message" context menu
Fix loading of images with selection masks.
Selections masks call KisMask::selection() in setVisibile, which
asserts if there initSelection() hasn't been called yet. But we cannot
call initSelection at this stage of loading because we're only creating
the node hierarchy, not the binary content yet.
So, add a flag "loading" that inhibits that call & all signal emissions.
Ordering of z level was indeterministic, so this should hopefully fix it
foreground is not more in front than default - meaning it only depends on z-level at that point
anchor as char ordering is always the lowest of any child shape
Avoid warning messages when closing the settings dialog
KWidgetItemDelegate doesn't like it if its view is deleted before
the delegate itself. This happens though if the delegate is
parented to the dialog itself, since the dialog will delete the UI
in its destructor (thus deleting the view), but the delegate is only
deleted by ~QObject's deleteChildren() call (which happens later).
Parenting the delegates to the dialog's main layout instead
prevents the problem.
This might fix crash bug 314400, but it's not clear if it will.
Make sure that 'runCommand' reads the full output of the command (as opposed to fixed max size);
Changed first argument to std::string.
Fix misbehavior due to multiple action connections
Provide a more obvious way to create assistant actions
When implementing a problem resolution assistant for kdev-python,
I noticed some very strange behaviour in the assistants API: actions
would only be executed if they were added to the assistant in the
actions() method (which is const, and should not create actions!),
while creating them in the constructor of the assistant made them
show up, but do nothing when triggered. The root of the problem turned
out to be that the assistants are instantiated in the parse job,
thus if you create the actions in the assistant's constructor, they
will live in the parse job thread, not in the application main thread;
the KAction's created from the assistant actions however would
live in the main thread, because the method to convert iAssistantAction
-> KAction is called from the main thread. Thus, connections wouldn't
work correctly, as the thread of the receiver is not running an event loop.
The existing code, as said, smartly works around this problem by adding
the actions to the assistant in the actions() method the first time
it is called, which happens from the main thread too. This sucks,
mainly because it cost me two hours to figure out why my actions wouldn't
be executed when I created them in the constructor, but also because
the API defines the function as const (which it should be), but the code
just ignores this (by using const_cast).
So, the new behaviour is this:
* If you want to create "static" actions (i.e. always the same for a given
assistant), implement createActions(). It will be called when the list of
actions is empty and actions are requested.
* If something goes wrong with where your actions live, you will hit
an assert instead of it just failing silently.
Add the functionality of Edit Hints.
These allow to give hints to the host about the scope of an edit process.
The host can apply optimizations e.g. if only metadata and no pixel data was edited.
Bump ABI version to 11.
Port fullscreen mode from Light Table to FullScreenMngr.
For a better factoring and better management of all common features from digiKam KXmlGuiWindow based main windows
a new class named DXmlGuiWindow have been created. All digiKam main windows will be based on. Currently IE, BQM, and LT are done.
AlbumGUI and ImportUI still TODO.
This class replace FullScreenMngr as well. FullScreen mode are no managed through DXmlGuiWindow. Later more factoring will be done in this class, as
all Help digiKam dialogs (DB stats, Components info, etc...)
Manage FullScreen mode from AlbumGUI through DXmlGuiWindow
As under OSX, if toolbar is hidden during fullscreen mode, we display fullscreen switch button on top-right corner of active sceen when mouse is moved on this corner by end user.
Mouse move envent is handle by an event filter plug over managed window. FullScreenMngr is now a QObject class based.
Add new FullScreenMngr class dedicated manage full-screen action to digiKam KXMLGuiWindow instances.
This class factorize a lots of code when window is turned on/off to full-screen mode.
This fix problem about visibility restoring with status-bar, menu-bar, and thumb-bar.
First managed digiKam main window is Image Editor.
- manage full-screen mode of main windows AlbumGUI, BQM, ImportUI, and LT, through FullScreenMngr.
- manage visibility of side-bars.
- provide a common settings widget to control visibility management in Configuration dialog.
- patch Configuration dialog to provide a fine control of visibility management in full-screen mode for each digiKam main window.
Filewatch: move all filewatching into the filewatch service
Remove watch adding in the fileindexer service.
On a config change they were previously being re-added twice.
Then watch all indexed folders in filewatch constructor.
This is needed so that nepomukctl restart filewatch watches all indexed folders.
Don't bother to wait two minutes before installing the watches - it
isn't that slow anymore and we were doing most of the work anyway by
watching the homedir on startup.
clear m_activeEffects when effects change
If a screen with different refreshrate is attached, kwin currently resets
the compositor, altering the effect list.
If at the same time quads are rebuilt, the iteration operates on a pot.
invalid list of dangeling active effects.
Many thanks to Toralf Förster for his testing efforts.
(cherry picked from commit 07d3ac9d8c781755d19c71ccde6d182868a2bfb5)
Allow the emulated Vim command bar to auto-complete from words in the document using CTRL-Space.
New web shortcut. Copy link from clipboard.
When making a new web shortcut check the clipboard, if it's a url put
it in the query line edit to save time.
GUI: If the user has a link on his clipboard it will be copied to the
query text box.
Composer: implement a well-behaving progress bar
Sadly, the IMAP code doesn't keep us informed about the progress of the APPEND
operation. Better than showing a progress bar stuck at, say, 10%, we show a
fuzzy one meaning "yeah, we're working on it". When the APPEND finishes, the
progress moves to 50% and from then on, tracks the actual progress as reported
by the MSA doing the actual submission.
GUI: add support for color tinting
The idea was suggested by Thomas Lübking, the implementation is shamelessly
stolen from Qt5's qtquick1 module (src/declarative/qml/qdeclarativeengine.cpp,
the usual Qt licensing).
Make default OpenPGP file extension configurable
This makes it configurable if OpenPGP encrypted
files created by Kleopatra should have the .pgp ending or
the .gpg ending. The current behavior stays as default. (.gpg)
This change was requested by instutional users who want to share
files with the same ending between PGP and GnuPG and use the
same file extension to mark those files.
Patch adapted from commit: 1438ec3
webkit: always specify both text color and background color, even on light themes
Soem of these themes are in fact strange enough that black text is not very well
visible. I hpoe this does not introduce any funny side effects.
The improvement shall be visible i.e. in KDE's "Wonton Soup" theme. I really
wonder who came up with these names...
Implement support for the alpha channel in the curves filter.
Patch by Sahil Nagpal ()
Make MusicBrainz tagger more accurate and easy
The move to web service 2 makes disc number and artist credit better
defined, and multiple artists are not a problem anymore. Many more
results are now shown, with the new "Choose Best Matches from This
Album" action to avoid mixing tags from different albums.
Some speedups and visual/usability improvements complete the patch.
GUI: MusicBrainz tagger: more tags shown, new toolbar, and an improved
context menu for each search result (with >1 tracks only).
DIGEST: Amarok's MusicBrainz tagger can now help choose the best tags possible.
Inform the user if the inserted medium is not suitable
In the burn dialog, the message displayed when an incorrect medium was
inserted was the same that the one when there was no medium inserted.
As a result, the user might think that there's a problem with the device
instead of a problem with the medium.
If there's a medium inserted on a device but it's no suitable (for
example if it's a CD and it should be a DVD, or if it's a read-only
medium, or if the capacity of the medium is not enough), the user will
be informed of the reason of the issue.
mediaRequestStrings added as a static method to Medium class. This
method takes as parameters a list of unsuitable mediums and the
requeriments for a medium to be suitable and returns a QStringList with
messages describing the problem of each unsuitable medium.
MediaSelectionComboBox was modified to call mediaRequestStrings when
a medium is inserted but is not suitable.
Show Wifi networks which doesn't have a connection associated yet
add Infiniband config
KIPI edit hints: add optimization to reuse thumbnail and skip rescan if metadata only writes
out changes already transported by KIPI attributes (GPS, date/time)
Save memory in VCardParser by sharing common strings.
Many strings common to the VCard format where not shared resulting
in an exessive memory consumption. Now these strings are interned
to leverage implicit sharing.
Note: To furthermore decrease the amount of QByteArray -> QString
conversions this code uses a (trivial) custom interning cache
instead of reusing Akonadi::Internal::SharedValuePool.
Massif shows that this patch reduces the memory consumption for
running testread on a file containing 10k randomly generated vcards
by ~6MB or by nearly 16% from a total of about 38MB.
Save memory by sharing data object of empty KABC::Picture objects
Optimize memory consumption of KABC library for large address books.
In many cases no picture will be set for a contact yet still
Picture::Private was allocated. On my 64bit machine it has a size of
A common practice is to share the data member for empty objects, as is
done in most Qt classes (QString e.g.). This then saves the
Picture::Private allocation for all contacts which do not have any
Implementation detail: Sadly one cannot make it work with a private
Private class as that would not be accessible by the Q_GLOBAL_STATIC
helper. Renaming the private data class should not have any affect
on the ABI though.
Port (un)grabXKeyboard to XCB
Encapsulate colormap related functionality in own class
Split out the default and installed colormap from Workspace and put them
into an own class Colormaps.
The method updateColormaps is replaced by a slot update in Colormaps and
activeClientChanged signal is connected to this slot.
At the same time the colormap related code is straight forward ported to
Biggie: introduce core/meta/forward_declarations.h and use it
We try to include only what is absolutely necessary in header
files to keep compilation times low. This is especially useful not
during the first compilation, but when you touch one (header) file ->
the less this header is (transitively) included, the less files you
need to recompile.
Normally, forward declarations of all-but-direct members of the class
help with this immensely. However, all our meta types use KSharedPtrs
instead of plain pointers (for good reasons); forward-declaring these
is well possible, but tedious to do in each header file that uses them.
Introduce core/meta/forward_declarations.h that contains forward
declarations of all KSharedPtr-managed classes in core/meta/* (and
KSharedPtr include for convenience)
Use the new file where appropriate. Now all header files should include
core/meta/forward_declarations.h instead of Meta.h (and include Meta.h
just in the .cpp file), unless they actually subclass one of those
Note that forward_declarations.h suffices even when you have
Meta::[Something]Ptr as class attribute; with a small hiccup: your
destructor needs to be implemented (even if empty) in a file that
includes the full class declaration (the compiler catches this
fortunately) of the meta class. That's why this patch add some
seemingly redundant empty destructor implementations.
Another hiccup is when you use Meta::[Something]Ptrs inside Qt
signals/slots - the code that ends up in the .moc (or *_automoc.cpp)
file and will usually need the full class declaration; simple trick is
to add the old-style
#include "FooClass.moc" at the end of the file.
This is not that important per-se, but it paves the way for more Meta
changes that we sketched in Randa.