28th July 2013by KDE Commit-Digest Team
|Commits||2033 by 163 developers|
|Bugs Opened||230 in the last 7 days|
|Bugs Closed||268 in the last 7 days|
|Aaron J. Seigo||
Internationalization (i18n) Status
There are 85 selections this week
kde-projects: Accurately track parent module set.
This is unfortunately a giant change, as all of the functionality that
is encompassed into module-sets currently had to migrate over to
multiple separate classes, including the new ksb::ModuleSet class and
This was a long-overdue change, however, and should allow for accurately
tracking a source module-set for a given module.
On the other hand this migration of logic has made it easier to
understand each of the individual pieces where they stand (e.g. there is
no longer a separate expandXMLModules and expandModuleSets).
In addition we can properly handle ignore-modules with wildcards just as
we do with use-modules (they even use the same matching logic) which
means that it is safe to integrate this into master (assuming no extra
boogs get added, of course).
This will also help with fixing some of the extant module-selection bugs
Add i18n context for satellite groups
This helps translators and also prevents a wrong translation of "Other"
or "Education" being used. Without additional context for example the
translation of "Education" (the satellite group) is taken from the
"marble" catalog (where "Education" means a map legend group) and not
from the correct "marble_qt" catalog. This is because "marble" is the
primary catalog (at least for the KDE GUI) and that is searched first.
Show recording state and finished page correctly.
Add a signal in scan controller to dispatch progress of scan in ScheduleCollectionScan mode through NewItemsFinder from Maintenance collection tools.
Fix ImportUI which dispatch trough StatusProgressBar download information to ProgressMAnager which handing up a progress item when download is completed.
Fix two related bugs with svg support
1. Do not treat .svgz as archives
2. Fix directory not loaded when started with a .svg as argument
Posted for review on https://git.reviewboard.kde.org/r/111362/ but the changes
did not get reviewed. I am committing them nevertheless because I want the bug
to be fixed in rc2 and my personal testing did not spot any issue.
Batch Queue Manager : add new option to turn on/off multi-core support. This option is now turn off by default due to some dysfunctions under Windows, until it will be hack and fixed.
Note that problem are not reproducible under OSX and Linux here. Options is implemnted for digiKam 3.3.0 release.
fix passive startup feedback
Make sure HOME is never unset, to prevent creation of files in /
Fix maximum value for scroll bar when deleting items in Details View
The problem was that the view heigt minus the header height was
subtracted from maximumScrollOffset() to determine the maximum value
of the scroll offset of the top of the view.
However, the top of the view is the part that is hiden behind the
header. Therefore, the full view height must be subtracted from
The remaining bits of bug 319951 were fixed by other recent commits.
Thanks to Emmanuel Pescosta for helping to track down the problem!
Use the information from currentOutput, not from the unapplied config
Before this patch, we were looking for the size of the current Mode
in the Output object of the config that is passed to Config::setConfig
which either can or can't have the wanted Mode.
This has been kinda working so far because and ONLY because in
Generator (from kscreen/kded) we use the currentConfig as the base for
the config that we are generating, so all modes are included.
protect kwin against broken tabbox installation
This happens because some distros ship broken installations
of KWin and KWinActive, but could also appear to QML hacking users
Proper appearance and geometry for launcher items.
Unlike in the old applet, this has launcher items interact
reasonably with multi-row configurations.
Also optimizes the layout code a bit, avoiding needless
re-fix bouncing startup feedback
remove mouse polling from cube effect
entirely superfluous and causes laggy interaction
don't require geometry changes for quick max/tile
the present check can break quick everything depending
on screen snapping settings.
It so far. only worked for quick maximization due to horizontal
"judder" and failed whenever that judder was not possible
(due to screen snapping on left and/or right edge)
Try to make sure the group dialog stays within a sane width limit.
The approach taken is "behave reasonably on 640x480 and above" by
clipping the bounding box of the task items to the max() of that
minimum supported resolution (taking dialog margins and, if vert-
ically oriented, a likely panel into account) and the applet's
A perfect impementation would figure out the dimensions of the
work area (i.e. screen sans relevant struts) and clip to that,
but knowing how much C++ that takes to do correctly on multi-
head (as Yakuake does it) and seeing how the goal is to have a QML
task manager, I don't feel that's maintainable for now. Let's look
into improving PlasmaCore.Dialog in libplasma2 instead to help
with avoiding too unreasonably large dialogs instead, or perhaps
Qt Quick 2 will evolve a helper. There's a TODO in there for now.
On the flip side, this actually behaves better than the old
applet anyway, which had rather more unreasonable popup sizing ...
Make it clear what possible duplicates are indicated by the reporter.
Fix "truncated header" in Details View with non-Oxygen styles
The code for painting the "empty header" was inconsistent with the
headers of the other columns, which is probably the reason why the other
styles got confused
a) No QStyleOptionHeader is used
b) Even if an empty header must be drawn, the last column is drawn with
the option QStyleOptionHeader::End.
According to Christoph, it still doesn't work with the Skulpture style,
but it seems that the patch does at least not make things worse.
Do not try to smooth-scroll past the end of the view
KItemListSmoothScroller::scrollTo(qreal position) did not check if
'position' is a valid value. Even if the view is scrolled to the bottom
already, it tried to scroll further and activated "smooth scrolling"
when the mouse wheel is used. Because it never got out of the "smooth
scrolling" state then, it got confused when changing the directory, and
restoring the correct scroll offset could fail.
Make sure that widgets are initialized when changing the view mode
The problem was that DolphinItemListView overrides the virtual function
onItemLayoutChanged() without calling the base class implementation.
Therefore, KStandardItemListView::updateLayoutOfVisibleItems(), which
calls initializeItemListWidget(), is never called.
This patch refactors the "change item layout"/"supports item expanding"
code a bit to make it more robust and fix the problem that the view
looks "messed up" when switching from Details View without expandable
folders to Icons View.
I'm only pushing this patch to master (going to be KDE 4.12).
The patch is a bit too intrusive for the KDE/4.11 branch for my taste
at this point of the release cycle, and the bug is not a real
showstopper. If it works well in master, one could consider backporting
it to a 4.11.x bug fix release.
Thanks to Emmanuel Pescosta for helping to analyze this issue.
Prevent that removing items can cause icons to overlap
When items are removed, new items may become visible because of that.
(a) Items *behind* the removed range. KItemListView may try to create
their widgets at their "imaginary" old positions and move them to
the new position with an animation.
(b) Items *before* the removed range, if the deletion causes the view
to scroll up. In that case, the "imaginary" old position and the new
position was equal, but KItemListView still tried to determine the
"old" position by adding the number of removed items to the index.
The result was that the widgets were created at completely wrong
positions, and no animation was started to fix this.
Thanks to Emmanuel for helping to find the cause of this bug!
A few fixes to do with the emulated command bar and Visual mode:
- Aborting ":" should leave us in normal mode with no selection.
- Don't exit Visual mode when we abort a search bar. To fix this, we send a null key event (instead of Escape) as the syntheticSearchCompletedKey.
- Update the cursor in Visual Mode as we search.
- Reset to original selection if we dismiss search in Visual Mode, even if the current search was a match.
Fix changerecorder assert further.
Since 022d1045118 in akonadi, when the result of merging two ModifyFlags
notifications is a no-op notification, both are dropped. So we must catch
removals also when nothing gets appended.
Fix Bug 319131 - kmail preview pane hangs on "Retrieving..." when leaving email with ICS attachment
Workaround a bug in Qt's QAbstractItemView
Prevents Notification Monitor from crashing on startup
Don't let templates override the dates that the user chose.
Dates should never be overriden by templates.
Make saving 16 and 32 bit psd files work
SqlMeta: check for invalid ids before SqlRegistry asserts on them
* Prevent hitting an assertion failure if a just-removed track from the
Local Collection is edited.
SqlScanResultProcessor: fix stupid data-loss bug caused by my commit ca88c8d3
Commit ca88c8d3 introduced some extra logic and a member variable in
order to fix bug 311078. However, I forgot to add the variable into the
cleanupMembers() method, which resulted in state leaking from one
scanner to another.
1. User performed full rescan. For every directory in the collection,
deleteDeletedTracksAndSubdirs() was called, which essentially
inserted all existing directory ids to m_scannedDirectoryIds.
2. All member variables were cleared except m_scannedDirectoryIds,
which leaked into the next run.
3. A file was changed, which triggered partial update scan run with
only a couple of changed directories.
4. Its deleteDeletedDirectories() method was called, which called
deletedDirectories(), which used m_scannedDirectoryIds as a basis,
removed just the newly scanned dirs from it and returned all the
5. deleteDeletedDirectories() deleted all but newly scanned
6. strohel feels ashamed.
The fix is to simply clear m_scannedDirectoryIds in cleanupMembers().
In addition to fixing bug 322603, this should also minimise changes of
reproducing bug 322474 (but not fixing the actual bug)
Fixed PMC Crash on clicking Shuffle in an empty Playlist
Fix metadata fetch options in PlaylistController
Certain overloads of Playlist::Controller::insertOptioned couldn't
automatically start playback when given StartPlay option because they
didn't fetch all of the needed metadata.
Fix 'Invalid slider' message when using scrollwheel not directly over a slider
GrepViewPlugin: Search by default in previous location.
Follow renames when showing git history.
By default git log (used to get history info in KDevelop) does not
follow the file moves or renames. The patch adds the --follow
argument to the git command to get the complete history.
I got bitten by this, because it was not possible to identify all
committers to a file by using KDevelop.
Implement project filtering for the cmake manager in a threadsafe way.
Operate directly on a list of thread safe project filters in the
background thread. ::parse() needs a hack to ensure that this list
is queried in a threadsafe manner, as there is currently no proper
place in the API to do this.
In the future, a custom import job should be created which then reads
the list of filters before going of into the background thread.
I've tested this with a session containing all KDEPIM projects. The
slowdown compared to before is negleglible and I did not encounter any
Add support for changing breakpoints while running.
added GHNS dialog window for downloading the langauge courses. The file artikulate.knsrc must be manually copied to .kde/share/config before in order to work
enabled dowloading the cousres and using them in the program without data-repository
Inpainting and restoration tools : handup resize event from canvas widget only when preview session settings are restored,
else greystoration configuration can be uncomplete/broken and generate infinite loop.
Rename "None" preset as "Custom" to be more user friendly.
support SVG images
Drop support for native graphics system
Qt 5 only supports raster which means our pixmaps are always non native,
so we don't need the Extension information any more and can drop all
special code handling for mapping a native QPixmap to an X11 pixmap.
Don't open .desktop files with http:/https: urls in Dolphin,
open these urls in the default browser instead.
Set the new url for the part before emitting hashchange event.
added basic windows networking support
We need to parse leading range expressions (e.g. "%", "'<,'>", ".,.+6" etc) in KateViEmulatedCommandBar when parsing a sed replace command (see motivating test cases), and the (fairly complex) code to do this is currently locked up in KateCmdLineEdit.
Rather than expose it via KateCmdLineEdit's (nicely minimal) API, it seems a better idea to just move it all into KateViEmulatedCommandBar: as Vim-specific code, it seems to belong there more.
Do this, and then use it with the ctrl-f & ctrl-d stuff to be able to clear the "find"/ "replace" portions of a sed expression even when the command has a leading range expression.
Vim-style ranges should still be usable in non-Vim mode.
Implement SedReplaceHistory, the counterpart of SedSearchHistory, which allows us to browse through completions from the "replace" history when we ctrl-p when the cursor is in the "replace" term of a sed-replace expression.
Introduce JobInterface. Introduce QObjectJobDecorator.
The goal is to provide a mechanism that allows qobjectness of a Job to
be added as needed using decoration. Jobs will not be QObjects anymore.
JobInterface will be used in public interfaces.
Various search improvements
- Do not automatically reset the search start line on search hits
This was causing the annoying behavior that if you were to pause while typing
in a search term, and it would actually find a hit, then you would be searching
for the term a second time once you finish typing.
This commit introduces two new behaviors:
1. When you show the search bar, all searching will be done from the first
visible line in the terminal.
2. This start position is only reset when you
advance to the next result, by pressing "next", "previous", or the shortcuts
RETURN or SHIFT-RETURN
- When the view scrolls to a result, it will appear centered.
- When showing the search bar, do not invoke a search, only apply the highlight filters
- Add "search from beginning/end" button
This will scroll to the top/bottom before searching
Ctrl+return is also bound to this action
- Text highlighted by mouse will be set as the current search text when the incremental
search bar is opened
- Add "Search backwards" to search bar options
Button text is swapped according to reverse search switch
Implement the "weeksModel" QML property since it was planned all along.
The implementation is still a bit experimental since the week numbers might look strange in some places.
You can use this by puttin the "weeksModel" from the "Calendar" component in any of QML's views. The data (the actual week number) is available under "modelData".
Implement sorting based on QDateTime only for now.
This added the "sorting" property to both Calendar and CalendarData.
The "sorting" property can be:
Calendar.None is the default if no "sorting" property has been set.
Add tab to Akonadi Console for debugging SQL queries executed by server
Gui: Window: Sync Navigation and Show Toolbar checkboxes and save window state
Navigation checkbox (right click on toolbar) doing same as Show Toolbar
checkbox (View menu). Synchronize state of both checkboxes, so user will see
always correct state of both checkboxes.
State of main toolbar (visible or invisible) is stored in trojita config file
in gui/sizeInMainWin by saveSizesAndState (e.g when changing main window layout).
So call method saveSizesAndState() when state of main toolbar is changed too.
Start to implement switch between graphic/text editor
New component: IncidenceModifier
This new component allows you to modify a calendar incidence. For now it only allows for the summary and description to be changed, but it's a start.
Allow to not retrieve remote identification data (RID, RREV).
These fields are only relevant for resources, for regular clients they just
cost time and memory.
This is fully backward compatible with older servers, they will just send
the RID anyway.
Introduce StorageDebugger class and DBus interface for storage/SQL debugging
Support for Gid (globally unique identifier).
This patch adds a new column for the gid of an item to the pimitemtable.
* append commands
* store command
* fetch command
We ignore the collection/resource context for now.
Otherwise fetch jobs may silently fail due to a selected collection
(apparently the selection is not reset by a new fetchjob).
Increased the protocol version to 34.
doc: Nested paragraphs allowed inside TOC - text:p is a valid
child element of text:index-body.
doc: Added support for line numbers restart every page.
docx: Added initial support for the rtl element. Replace values
of fo:text-align: left->start, right->end
support backend-driven pulseaudio property setting
- pulstream: new property role (== PA's media.role)
- pulsesupport: new func streamproperties
returns a hash of per-stream properties a backend can set
- pulsesupport: new func setupstreamenvironment
can be used by a backend not supporting per-stream properties to set
the properties to the right value as close to stream creation as possible
to reduce the scope of 'reentrancy' issues, howeve if two MO's are
started right after one another the second AO's envrionment will still
shadow the first's
app_name/version/icon_name are retained as always-on override properties
as we consider them static and therefore backend driven setting isn't
really necessary (also not possible with VLC<2.1)
when using pvlc (which uses the setup function due to lack of property
support through libvlc) a warning will be displayed in debug mode to
make clear what could happen.
export AO's PA stream UUID to backend
- new interface class (go virtuals!) AudioOutputInterface47
to use it the backend needs to define PHONON_BACKEND_VERSION_4_7
- new pure virtual in 47 ::setStreamUuid(QString) called right after
backend creation to pass it the stream UUID used to map a PA stream
to this AO; can be used to do property handling with PulseSupport
PlaybackConfig: add option whether playback should start on track add
* Added an option whether adding tracks to playlist should start playing.
Also changed the entry in the 2.8 Beta ChangeLog, which is a bit strange,
but I believe the ChangeLog is most useful for differences between major
releases and it would be really confusing if the entry wasn't changed.
implement PHONON_BACKEND_VERSION_4_7's setStreamUuid
we now interactively set PA per-stream properties through gstreamer
Restore hiding empty groups
accounts-kcm gui code for steam plugin of libpurple
Gui code for accounts-kcm that gives the steam-mobile plugin of libpurple a native/shiny look.
I Didn't include the https tickbox because it seems to not function.
Text to speech reads text message actions
Show PersonDetailsDialog for "show info" if in KPeople mode
Simulates mouseover to highlight group-arrow when selected with keyboard
Reviewed-by: David Edmundson
Put clickable links back into tooltip
Show enemy ships if player loses the match.
As requested by a user a long time ago, oponnent's ships are nicely
displayed at the end of a battle if the player loses a game. This way
the defeated player can study the adversary's strategy and plan ahead
for future matches.
Currently the whole feature is a work in progress. It works on single
player mode only and has no entry at the settings interface, thus
working by default with no possibility of turning it off.
Next commits will add support for multiplayer games and will also make
it possible to turn this feature on/off through the settings interface.
Use a QHash instead of a fixed-size QVector for the type registry.
While this is of course slower, the impact is imo negleglible. The
benchmark shows that the TypeSystem becomes ~20% slower, but that
is still nothing in total compared to other parts of KDevelop which
are actually much slower. Thus, limiting the API in such a drastic
way (only up to N types) is imo not worth it. Instead we can take
the small performance impact and improve the performance elsewhere :)
Also note that to encounter a slowdown of ~1s one would need to call
the TypeSystem functions approx. 45 million times. Setting a counter
breakpoint on TypeSystem::create shows that it's being called less
than one million times when loading my biggest KDevelop session. So
yeah, I think we can safely ignore this time impact and classify the
existing code as a premature optimization.
Refactor the IProjectFilter interface for threading usage.
Instead of implementing the IProjectFilter interface, a plugin
now implements a IProjectFilterProvider interface. It comes with
a simple factory function to create a threadsafe IProjectFilter.
This is supposed to be used with value-semantics. All initialization
should be done in the ctor of its implementation, such that later
calls to isValid do not introduce any race conditions.
When a user changed any filters, the Provider emits a filterChanged
signal. Project managers and other users have to listen to it and
update their IProjectFilter instances then, i.e. replace their
existing instance with a new one as returned by createFilter.
This should now allow this interface to be used in the CMakeManager.
Furthermore it should be a future-proof design if we ever get around
to implement a proper API for threaded project import.
Note: If you think this design is complicated, then yes - the old
one was much simpler. This one has a huge advantage though of not
requiring any locks and thus leading to much better scaling when
we import from a background thread.
Load courses only on demand.
This avoid the ~5 second startup time that previously was needed
to parse all courses on startup. Instead of that, we now only load
courses when they are needed.
Cache info about optical discs in shared memory
Another attempt of finally fixing bug #261552.
Now without introducing any daemons, using just shared memory.
Get rid of the XML DOM parsing code for the db setup.
Replaced with compile-time generated code now.
Rework Sergio's patch to run only one job at once and process with the next only when that is done. This fixes the slowness and mail duplication bug for me.
Turn some sequences of x += ... statements (with x a QString) into a long chain of additions (for QStringBuilder)
The power of QStringBuilder only sets in if more than two strings are concatenated
before picking up the result as QString again (e.g. when assigning to a QString variable).
There are some code parts where a lot of concatenating is done, but not in one expression,
instead assigning the intermediate result to a QString var again and again, thus preventing
the advantage of QStringBuilder.
There are also a few places in the code where literal strings are concatenated using "+",
instead of having the compiler concatenate them already.
Patch optimizes the code in those two cases: by removing "+" between literal string and
turning sequences of += into a chain of +
thanks boud for review
Rewrote RecentlyPlayedListWidget from the basics. There was a major
inconsistency in this widget, where tracks were added to it if they were
recently played at all, but the time shown was the "Last Played"
statistic which is only updated after whole song is played. This
caused gravely incorrect data to be displayed (see bug 302485).
There were two different methods of solving the inconsistency: focusing
on the "Last Played" time, and adding songs to the widget only if the
"Last Played" changed; and focusing on recent plays completely
disregarding "Last Played". I opted for the latter as I felt it fits the
widget's nature better.
Because we can't rely on already available data, the widget needs to do
its own housekeeping. It saves its data on shutdown, to be restored
on next startup. One other major benefit of this approach is that
widget's data remains correct even if collections change, while
previously tracks from removed collections would disappear.
Finally, I added the feature to add tracks to playlist directly from the
widget, provided that the track exists.
Add an Eigen backend.
Update clear button position on layout direction changes
Replace Skype icon
KDE e.V. has decided we an not ship copyrighted and trademarked icons
M +- -- protocols/skype/icons/ox128-app-skype_protocol.png
M +- -- protocols/skype/icons/ox16-app-skype_protocol.png
M +- -- protocols/skype/icons/ox22-app-skype_protocol.png
M +- -- protocols/skype/icons/ox32-app-skype_protocol.png
M +- -- protocols/skype/icons/ox48-app-skype_protocol.png