Bug Fixes

Development Tools

Sven Brauch committed changes in [kdevplatform] /:

Quick open filtering: do path fuzzy matching only on file name

Matching the whole path generated lots and lots of unrelated results,
especially for shorter queries. And because it is inherently hard to sort
that kind of fuzzy matches, they couldn't even be sorted by match quality.
That was overall not beneficial to QuickOpen's usefulness in practice.
Thus, the next attempt is to only do the fuzzy matching on the last
path segment; that still allows things like "btbrowser" for
"backtracebrowser.cpp" or "cml" for "CMakeLists.txt", but "hello" no longer
matches "/home/user/log/foo.log" or so.

Different from QToolBar (which the old assistant inherited from),
QGraphicsView raises a WindowActivate event when it is shown. There is a
flag (WA_ShowWithoutActivating) which *should* prevent that but it
does not work. Thus, we re-implement QGraphicsView's ViewportEvent and
take the Show event away from it.

This is an ugly hack. However, with Qt5, QDeclarativeView goes away
anyways; so it is guaranteed to go away in at most half a year,
when I port this code to KDevelop 5. Until then, it's not going to
break, since Qt4 will not change.

Graphics

Starting with KWin 4.11.6 [1] there is a hint to exclude a window from
the closing animation. KSnapshot can use this to ensure that it doesn't
capture itself. With other compositors (e.g. Compiz) KSnapshot is most
likely still capturing itself. There is nothing KSnapshot can do about
it. Of course affected users are invited to point the developers of
other compositors to this commit and suggest to implement the KWin
specific hint.

Problem description: if a window decoration is in the screenedge
(not really unlikely for maximized windows) we either did not get
mouse events to the decoration or the screenedge window. E.g. the
enter event didn't reach the approach window which means it doesn't
get unmapped and thus the motion events in that area are not passed
to the decoration below. The same happened for the screenedge window,
the enter event was just not delivered if there is a window decoration
in the edge.

To solve this problem we listen for motion events in the approach and
the edge window and pass them from the event filter to the screen edges.
If one of our windows contains that the position of the motion event
we trigger the edge just in the same way as we do with the enter event.

Office

Aspect ratio was not being computed correctly. Now artistic shape
maintain the aspect ratio of the box used to define the text area,
keeping the defined height and extending the width to accommodate the
predefined text.

Features

Development Tools

We are now able to propose headers in the missing-include assistant,
which were not parsed before (i.e. that are not in the DUChain).

The procedure is simple: Assume we write something like 'QState',
and qstate.h is not yet included nor parsed, in some file foo.cpp.
KDevelop then checks if there is a file called 'QState' in
any of the include paths required to build foo.cpp and then adds it
to the list of possible include directives.

This is possibly useful in other areas, e.g. for the "Create From
Template" feature, as well.

The recent port to Getopt::Long broke the ability to use --foo=bar type
of options (where <foo> is a global option name known to the build
context). It also replaced the --module,foo=bar options with
--set-module-option-value=module,foo,bar.

While it's possible to use the latter syntax for global options (by
using 'global' as the module name) that is undocumented and may not work
forever. And either way, --foo options did use to work, and I noted it
was broken in the refactor.

So now that someone else has noticed I've reimplemented the feature.
It's difficult to do entirely from within Getopt::Long since the
documentation for that module gives you essentially one catch-all, which
only supports *non-options*.

So what I've done instead is to have kdesrc-build dynamically introspect
its list of global options and flags and then add them to the list of
valid options we pass to Getopt::Long. This also should mean that we
don't need to pass 'pass_through' as an option to Getopt::Long anymore,
though we'll see.

This code path won't be used for options that already have a command
line option (such as --async/--no-async) so that is still a misfeature
compared to how it was before, but I guess it can't be perfect. =D

I've tried to ensure that "flags" support the 'false' value to mean
boolean false, but be careful to pass false or 0 if that's what you
mean... specifying --dont-foo without giving it a value defaults it to
true.

Graphics

Ian Wadham committed changes in [palapeli] /:

Make zoom slider more effective and Palapeli status bar tidier.

The zoom slider has 200 steps and needed to have more pixels width: the
progress bar did not need to be so wide. Also fixed deprecated calls to
setMargin(), added margins to the ends of the status bar and removed
gray space from between the puzzle area and status bar.

* fix regression: version the image cache file name
* version the svg elements
* drop old svg elements files
* respond to changes at runtime by watching the theme's metadata.desktop for changes
* move creation of the svg elements file into ThemePrivate::useCache()

Utilities

Sometimes, apparently, some packages aren't listed when all Application
instances are created. This would become a crash in some special
situations, especially the cases where the architecture of the package
is specified as a suffix to the package name (e.g. primus-libs-ia32).

This patch fixes that crash by not reporting these, but then we still
have the problem that these won't be listed as updates.