|Commits||2111 by 160 developers|
|Bugs Opened||268 in the last 7 days|
|Bugs Closed||236 in the last 7 days|
|Sergio Luis Martins||
Internationalization (i18n) Status
There are 74 selections this week
Fixed bug variant of: Resizing synchronous message moves its position.
This commit fixes a variant of the related bug when loading message
widgets from a file. The shadow copy of widgets y position (m_nY)
has not been set.
The question is if this shadow copy of widget position is really required
or if it could be replaced by QGraphicsObject provided widget position.
Differentiate between different compound assignment operators (&=, +=...)
It was noticed that before this change, all operators in statements
Foo a, b;
a ^= b;
a &= b;
etc. will be displayed as uses of Foo::operator+=(), which is obviously
wrong. The reason for this was some rather curious code, which just
treated every of these operators as "Token_assign" in the lexer,
and some other code which treated each "Token_assign" as "+=" in the
analyzer. To fix the issue, this had to be sorted out.
- Token_assign doesn't make sense anyways, since assignments are
represented as "=". So, remove the token completely.
- Instead of lexing every compound assignment operator as "Assign",
yield different token types for each.
- In the code which handles the operators, change the function from
using its own list of tokenkind -- tokenText mapping to use the
Also included is a unit test for the fix.
Transform ranges properly using the revision they actually belong to.
This is imo basically a hack to circumvent the bad RangeInRevision API
without rewriting everything...
The RangeInRevision is actually just blindly assuming that it belongs
to the revision the file was parsed in the last time. But if the file
is reparsed in between (due to changes) the ranges might be wrong. Due
to that we must store the ranges and their actual revision... Stupid!
Imo an API called RangeInRevision should _know_ which revision it
belongs to... Meh!
Make "Create new class" preview aware of C++ specific variables.
The Preview only set the "functions" and "members" variables,
but not the respective "public/protected/private_functions" variables
which are used in all C++ class templates, resulting in a empty header preview.
This fixes it.
check node type before casting KML feature to placemark
* also print a warning when unknown KML tag is encountered
* fixes crash introduced in commit 8ee588969b41890a6bd90f9b45eeb85658edf84f
Fix memory leaks, access to a deleted structure, and uninitialized values
GDB plugin: fix icon size, name, theme
- rename the icon to "debug-kategdb"
named after the plugin, this avoid potential clashes
- change the size from 16px to 22px
that is the real size of that png
- install as hicolor and not oxygen
avoid clashes and future specialized oxygen versions, and make it visible
even when not using the oxygen icon theme
R +- -- addons/kate/gdbplugin/hi22-action-debug-kategdb.png [from: addons/kate/gdbplugin/ox16-action-debug.png - 100% similarity]
NepomukServer: Do not stop a service if initialization fails
This is because the storage service now routinely sends the
initializiation failed signal when it wants the clients to stop
connecting to the storage service.
This is done when restoring a backup and during the migration.
Do not reset the 'isExpanded' state when an expanded folder is refreshed
If an item is moved out of an expanded folder, the model receives the
dir lister's refreshItems signal for the folder. The method
retrieveData() then updates the folder's properties. This commit makes
sure that the 'isExpanded' state is not touched by retrieveData(). A
side-effect is that the 'isExpanded' role is not initialized to 'false',
but this does not matter because trying to read a non-existing role from
the QHash<QByteArray, QVariant> yields a default-constructed QVariant,
which evaluates to 'false'.
threading: delay tree pruning until after the event loop is reached again
This is not really a proper fix (servers who don't do VANISHED will still make
the client suffer), but it's a step in the right direction, and also something
much, much more effective than trying a special-case branch for removal of leaf
The idea here is to cut the total amount of times pruneTree()/layoutChanged() is
called in total. I'm worried about using non-zero delay due to the unit tests...
Fix Monitor's lazy-ignore filter
There was a flaw in logic that caused flags change notifications being
delivered to V1 some resources.
(Fixes 'Got a stale notification' error from archivemail and filtermail agents)
Fix crash when performing inter-resource move of multiple items
Inter-resource move notification is split into deletion notification for the
source resource and insertion notification for the destination resource.
We support batch moving, but not batch insertion, thefore the insertion
notification has to be split in the destination side.
Fix upcoming minor GPGME C++ incompatibility
GPGME >= 1.4.2 will use gpgme_ssize_t instead of ssize_t to avoid
portability problems with different compilers. Use this type for
Patch submitted on behalf of Werner Koch
Build system integration written by me.
Settings: don't default to launching QProcess by default, assume SSL
This is mainly just a usability change -- most users are likely to connect via
SSL (or TCP), not via IMAP-over-SSH or something fancy like that. Let's make the
configuration process tad easier.
Dashboard "Income & expenditure": no values, strange colors
Transaction confirmation pop-up doesn't use defined unit value for transaction date for suggested value
Fix compilation on ARM: result of dividing by 2.0 is double, so not qreal==float on ARM (and qMax needs same types)
Dividing qreal by 2 (integer) also results in qreal.
But preferred to be more explicit here, as some might think that result
thanks ingwa and boemann for review
Bad date format detection when the second value is 9 (example: 3/9/04)
Don't crash when opening a filter mask properties dialog for group layers
Skrooge not working when .skg file is located on Samba share
I am not able to test the correction because I don't have to hardware (windows computer) to do it.
Could you test it and confirm the correction?
ScrobblerAdapter: call submit() explicitly
* Prevent Last.fm scrobbles not being submitted until restart due to
change in liblastfm 1.0.7.
Thanks to David Walser for debugging this with liblastfm author Michael
Work-around for Amarok <= 2.7.1 is to use liblastfm <= 1.0.6.
CCMAIL: Michael Coffey
When resuming playback on startup, correctly restore paused state.
Before, we didn't store the state at all, but started to play always.
Only listen to loadFinished() when initializing theme
Otherwise when a nested <iframe> from youtube plugin finishes
loading, we end up in an infinite loop of reloading content
Fixes regression introduced by 62bb42b610fc4d9228ed77a61dbef143658d8340
Reviewed-By: David Edmundson
Don't Save Sessions When Closing Tabs from Logout
Check if we're saving session (on KDE logout) before requesting the
session to save. This will allow Rekonq to restore sessions on next
VPN has more secrets in one property, must be handled differently
If CUPS takes a while to respond a request, and in the meanwhile the
user closes the application, our worker thread will still be running
and when the CUPS request finishes the waitForFinish() event loop exits
continuing to do a change on the GUI which was closed but not deleted.
The application then crashes inside Qt because we tried to set something
on a widget that was not visible or so.
Since waitForFinish() is not very cool and must be avoided in this case
so we connect all the affected requests to a slot that checks if the
request fails, and then requests the an UI update to use the values
from the model.
Do not offer signature assistant for changes in Qt signals.
Based on the work of Rolf Eike Beer minus the regression of
not showing the assistant for non-Qt function declarations.
Sorry for taking so long for this :-/
Select input device.
Add test sound.
New face recognition API.
Add the notion of an Identity which is stored in the libkface database and linked by applications via attributes.
Recognition is done by one simple call.
Training is done via a callback class which allows implementation of various schemes which may
be required by future backends (get all images of a person etc.)
Consider All The Batteries[tm]
When a new device was added, it wasn't added to the dataengine right away
This implemets a step in the kdeui crumble epic.
moves the classes kstatusnotifieritem and knotificationsrestrictions in
the knotifiactions library.
The patch works, but there are still several issues:
* porting from kdebug to qdebug loses the area number
* adds some link libraries: the classes add ki18n, kwidgets and
* the test adds ki18n kde4support kdecore
* the KActionCollection becomes a qhash of actions: how should be
* kactioncollections ported?
I guess it should use the qt translation system, and redo the quit
dialog to not usekstandardgui at all?
Map the Wayland compositing surface as fullscreen
Now it's just like X11, isn't it ;-)
Map cursors from X11 to Wayland
Tracking cursor changes in X11. Whenever the cursor image changes, the
image is read and a wl_buffer is created with the content of the X11
cursor. This buffer is attached to a surface used as a cursor image.
As a memory pool for the cursor buffers a temporary file is created and
All created cursors are cached but not yet removed from the cache. Some
cleanup code would be useful also to ensure that our shared memory pool
Improve multi-head detection for OpenGLIsUnsafe
This was currently basically broken:
* Screen number got always attached
* openGLIsBroken did not check for screen number
-> KCM reported "everything is fine" while it wasn't
Now changed to:
* only attach screen number if it is a multi-head setup
* use same logic in both Composite and CompositingPrefs
* kcm is not multi-head aware so it will report everything is fine in
case of a broken multi-head setup
Merge branch 'feature/mergeGraphs'
This simplifies the Nepomuk Storage code base and results in the fewer
graphs to be used when inserting data. This results in a much faster
Nepomuk and a more maintainable code base. (Over 300% performance games)
Unfortunately, this also means that the old data will need to be
migrated. The migration should get automatically done for everyone by
backing up their tags and ratings and restoring them. It should ideally
just take a couple of minutes.
Unfortunately, this means that everyone will have to reindex all of
their data. This is okay for files, but it's going to be a little slow
for Emails. Good Luck.
For the 4.11 release we plan to enhance the Email Indexing scheduling
code so that it isn't so CPU intensive. So, the user should not mind
GUI: integrate the addressbook with Trojita
Show a message when the new incidence is filtered out.
We have this for KCalCore filters, but not for when the collection
was unchecked in the calendar manager.
Addressbook: improve handling of prettyName when creating new contact
If prettyName is empty, use the default value for the name field (so
don't show an empty name field, users will think they cannot click
If prettyName is not empty, set the text of the QStandardItem to
prettyName. Before, the text of the QStandardItem would be
"[New Contact]" until we selected another contact.
Make detection of read-only work without restaring korg.
Lock icon will now appear/disappear automatically if you change
a collection's access rights.
Move the code into calendarviews\, so it works independently of
Added a new Clipboard brush for Krita
FEATURE: Isolated Mode for Krita nodes
Implemented a mode, which allow a user to limit visible layers by
a subtree of a graph. It means you can look at a layer or mask or
a group in isolated environment, without other nodes seen.
To switch on the mode, you can select a context menu item in the
Layers Docker. To switch off, just select another layer or just use
the same context menu.
Make playlist-related actions consistent throughout Amarok code (behaviour change)
This commits boasts a couple of changes, starting with the
1. The Playlist::AddOptions enum is extended with extended with
"convenience consistency" aliases:
...and all callers of PlaylistController::insertOptioned() are modified
to use one of these values instead of the "low-level" flags like
DirectPlay that are actually tested for in the insertOptioned()
implementation. This serves that we remain consistent across Amarok
from now on.
2. The actual "low-level" enum values have been changed and
insertOptioned() was updated accordingly:
a) PrependToQueue, which implies Queue, was added.
b) StartPlay (start playing unless something is already playing)
was removed. No caller uses it anymore (see below) and this was
convoluted anyway, IMO.
c) DirectPlay now implies PrependToQueue. This may seem strange,
but the rationale is following: when you directplay just one
track (which is the case 90% of the time), it is played
immediately, and this should apply even when you add more
tracks. PrependToQueue makes this possible without hacks and is
invisible in case of just one track, because it is immediately
popped from the queue. Plus it has a positive side-effect of
inserting the track at a meaningful place (affects what track is
d) LoadAndPlay and LoadAndPlayImmediatelly were removed, because
they were replaces with consistency aliases.
3. Thanks to 2b), 2c) and implementation changes, the actual action
performed upon a certain trigger no longer depends on any state.
The state of playlist search no longer affects whether a track will
be played in case of DirectPlay.
4. insertOptioned() was cleaned up and changed, for example it tries
to choose the best place to insert tracks according to
PrependToQueue or Queue.
5. The convenience aliases were assigned as follows:
OnDoubleClickOnSelectedItems = OnReturnPressedOnSelectedItems =
= OnPlayMediaAction = DirectPlay.
OnMiddleClickOnSelectedItems = OnAppendToPlaylistAction = Append (0).
OnReplacePlaylistAction = Replace (no-brainer).
OnQueueToPlaylistAction = Queue (no-brainer).
These aren't of course set in stone, they were however chosen to be
as much consistent with other KDE apps as possible.
Especially the "DirectPlay implies PrependToQueue" change is a bit
controversial, my opinion in that matter is anything but strong and I'm
open to any discussion. But perhaps try to use it for a couple of days
to get over the barrier of change.
* Playlist-related actions were harmonized: double-clicking, pressing
enter or using any "play media" action will prepend tracks to queue
and immediately start playing; middle-clicking appends to playlist;
append or replace actions will no longer start playback.
GUI: Behavioural change in some places, to increase consistency. Please
check that the docs don't mention the old behaviour, see CHANGES.
DIGEST: Amarok harmonizes playlist-related actions (double-clicking,
pressing Enter, middle clicking...)
The active playlist item is animated with a soft glow effect.
Rockin' the Amarok 1.4 style :)
Add analyzer applet to the user's existing config.
This trickery is needed to give the new analyzer applet some
visibility when upgrading to Amarok 2.8. We rewrite the
config carefully so that the applet gets inserted in a sane position.
We also take care not to re-add this applet, in case the user
has explicitly removed it earlier.
Testing welcome to ensure that no special cases are ignored that
could screw up the config somehow.
Add support for signed messages in jabber protocol via XEP-0027 jabber:x:signed (now supported by libiris patch)
* Before signed messages was sent via jabber:x:encrypted and received jabber:x:signed messages was dropped
* For sending signed messages via jabber:x:signed is needed updated cryptography plugin from revision r1356122
Feature: Show information when no printer is added or when printer filter don't match any printer
Optimize: Cache CMakeParserUtils::initialVariables result.
This is only dependent on the globally accessible cmake binary found
via KStandardDirs::findExe and thus returns the same whenever you
Reason why we want to cache it is that it takes about 1s on my machine
and is queried at least once for every project. Considering that I
usually run a session with 5-10 projects opened this accounts for
5-10s of time wasted querying the same data from cmake over and over
again. Not anymore with this patch - yay!
Use the Fisher-Yates algorithm to randomize lists
This ensures that the time required for the shuffling depends linearly
on the length of the list, rather than quadratically. Moreover, it
prevents memory allocations during the shuffling and thus saves time
even for very short lists.
kwin: Resolve functions for GL_ARB_robustness
Only the subset of functions available in core contexts is resolved,
except for glGetnTexImageARB() and glGetnUniformivARB(), which are
not used by kwin.
Instead of setting the function pointers to NULL when the extension isn't
supported, kwin provides its own implementations that call the non-robust
versions of the functions. This is so callers don't have to check if the
extension is supported before calling the functions.
Preserve relative positions when changing icon size in containment case.
Icon positions are preserved by scaling the top-left coordinate pair
by the difference between the old and new grid sizes, or by recreating
the same logical column/row coordinate pair in the newly-calculated
grid if the align-to-grid option is enabled.
Icons that run out of bounds (or exceed the maximum column or row)
accumulate at the relevant screen edges. There is a precedent for
this behavior in the general align-to-grid code.
The left-to-right or right-to-left flow is taken into account when
Smarter behaviors can be imagined as an optimization (e.g. identi-
fying groups of icons along screen edges and preserving their edge
alignment regardless of overall layout flow), but this simple scaling
implementation certainly beats throwing positions away altogether.
However, positions do still get thrown away in the non-containment
case - as the regular widget is capable of handling overflow via a
scrollbar, relayouting to exploit that felt better in practice.
Virtuoso Backend: Optimize ODBC getCharData
Only use 1 SQLFetchData command in most of the cases.
Callgrind stats show that 67.5% of the time in this function is spent in
the first SQLFetchData, and an additional 27% in the second SQLGetData.
We can avoid some of this extra cost, by only calling the function
Also, doing a simple fetch of 50000 quads -
Before Patch - 5.75 seconds
After Patch - 4.70 seconds
KFileItemModel::insertItems(): guarantee O(N) run time complexity
This commit prevents repeated insertions of single items into the list
m_itemData, which shift all following items by one position and result
in O(N^2) worst case complexity for the entire function.
Moreover, the hash m_items is updated only for the items starting from
the first inserted/removed item to save some superfluous calculations
of hash values.
KFileItemModelRolesUpdater: only update the size for changed folders
When using inotify, we also receive signals for modified files, even if
we only ask KDirWatch to watch the directory containing them. In that
case, we must not set the size to -1 (which means "unknown number of
items" for folders) temporarily, or we end up with an apparent file size
of 2^64 - 1 bytes.
Rework the drag & drop in the message list view to only skip UID=0 messages
The whole stack assumed that a message can only be drag-and-droped after it has
been loaded. That's clearly nonsense, the only real requirement is that the
knowing the UID is enough.
This was rather annoying when selecting messages via Ctrl+A on a testing
instance with plenty of messages and no persistent cache (and hence 45k+
messages not loaded which could not be moved via Ctrl+A).
The new code has a nice side effect of always rendering the "loading-UID-not-known"
messages as disabled, greyed-out entities, which is also kind of cool.
Thanks to Stefan de Konink (skinkie on IRC) and Brian Jackson
(iggy on IRC) for their reports about slow drag-and-drop
(which is not fixed yet).
NepomukFeeder: Remove the concept of Batch Indexing and checking
The feeder has this concept of checking every hour if it had not indexed
any emails. This resulted in huge CPU loads every hour because the
process to calculate which emails need to be indexed is very cpu
intensive on both the akonadi and virtuoso side.
Additionally, it had this concept of batches. If more than 10 emails
were receieved in a span of 10 seconds it would not queue them up and
run this heavy email check in 30 minutes.
Using random intervals such as 30 and 60 minutes is bad since the user
has no idea what is going on. Specially if they try to search for some
email during that time. Additionally, they can understand if Nepomuk is
taking some time indexing stuff when you get new emails, but not why it
is suddenly taking a LOT of their CPU after 30 minutes. They loose
Optimize and simplify Playlist::Model::removeTracksCommand()
We don't need to keep track of multiple command lists when removing,
just sort rows to remove first and then keep track of how many rows
have been already removed and subtract it at appropriate places.
The optimization is finding consecutive runs of rows to remove and then
grouping begin/endRemoveRows() for them, which was the main CPU hog as
it updates above models and view.
Removing 24.658 tracks from 24.660-track-long playlist now takes about
half a second, which is hopefully acceptable.
Also note that even greater optimization was done by Ralf Engels
earlier after 2.7, commit 861143c02dc1a1, where he cleverly used
references where appropriate, and much more.
@Patrick, please retest with Amarok git master, it should be much
CCMAIL: Ralf Engels
DIGEST: Optimization: removing tens of thousands of tracks from Amarok
playlist is now much faster.
cache the toplevel channel for each channel.
this simplifies checking if a channel belongs to a given store and the
creation and maintenance of sub-channels by allowing stores to only define
which top level channels they include. Then all subchannels from there on
down will reflect the topLevel and can be checked for store inclusion.
this implies that a top-level channel is an all-or-nothing thing: a store
that includes a given top level item includes ALL of its subchannels too.
however, i could not think of a rational use case where this would be necessary
or even desired.
(in fact: i ran into the problem of subchannels not associated with a store
because only parent channels had been while writing unit tests ...)
GUI: validate each address separately and also when filled in programatically
Previously, the validation was performed based on the contents of all items.
This meant that after a single field contained invalid data, any subsequent
modification to any other field would render the newly modified field in red.
That's wrong, the validation shall be based exclusively on data from the
This patch also triggers the validator when setting the data programatically.
Add some validation for IPv4 widget
Setting audio output device is rare case.
And hence it is enough if this can be done by system settings.
Update internal libraw to last stable 0.15.0.
New camera/format support (75 new cameras!):
* Adobe DNG: fast Load DNG (LightRoom 4.x), support for lossy-compressed DNG (LR 4.x, requires libjpeg 6+)
* Canon: G1 X, SX220 HS, EOS 5D Mark III, EOS 650D, EOS 1D-X, 100D (Rebel SL1), 700D (Rebel T5i), 6D, EOS M, G15, S110, SX50
* Casio: X-S1, HS30EXR, X1-Pro, EX-ZR100,EX-Z8
* Fujifilm: X-E1, X20, X100S, SL1000, HS50EXR, F800EXR, XF1
* Leica: D-LUX6 and V-LUX4
* Nikon: D4, D3200, D800, D800E, 1 J2, 1 V2, D600, 1 J3, 1 S1, Coolpix A, Coolpix P330, Coolpix P7700, D7100
* Olympus: E-M5, XZ-2, XZ-10, E-PL5, E-PM2
* Panasonic: G5, G6, DMC-GF5, FZ200, GH3, LX7
* Pentax: MX-1, K-5 II, K-5 IIs, K-30, Q10
* Samsung: EX2F, NX20, NX210, support for the new firmware for NX100
* Sigma: SD15, SD1, SD1 Merill, DP1, DP1S, DP1X, DP2, DP2S, DP2X
* Sony: SLT-A58, RX-1, SLT-A99, NEX-5R, NEX-6, NEX-F3, SLT-A37, SLT-A57
* Multishot files: Imacon Ixpress 39Mpix
RawSpeed code not yet updated to last compatible revision 543 due to patching problems.
Transform ColorSchemeEditor class from QWidget to KDialog
Move some code from EditProfileDialog::showColorSchemeEditor
* a part went in the slot EditProfileDialog::saveColorScheme
* a part becomes obsolete since ColorSchemeEditor is the whole KDialog
* a small part went into ColorSchemeEditor constructor
Make ColorSchemeEditor a non-modal dialog : The terminal is not frozen
when the dialog is open
- The Kdialog has an Apply button
- Some safeguard to check that there is only one ColorSchemeEditor open
- Use reference rather than pointer in ColorSchemeEditor interface
Thanks to Renan for improving on Konsole's ColorScheme.
Patch by renan fargetton
Prepare the contact widget to be usable multiple times
IOW, don't use global state when not needed.
NepomukFeeder: Do not notify the user after each collection has been indexed
That is only valid for the initial indexing, and even in the initial
indexing, the user shouldn't be notified. The indexing should just work!
Removed other functions such as currentCollection() and
listOfCollections() as they were also only valid for the initial
Redesign of the ApplicationPage
Adopt a mockup by Aurélien that drops the top tab bar and re-arranges the
overview page to fit all information in it.