Commit graph

9568 commits

Author SHA1 Message Date
Martin Gräßlin
9820e4daf6 Introduce dedicated suspend and resume methods on Compositing interface
The new methods suspend and resume are meant to provide a better way to
influence the current compositing state than toggleCompositing. In
addition an overload setCompositing(bool) is added. The resume method is
implemented in a way that it can be used to try to start the compositor
again in case it failed.

Internally the method suspendResume is dropped as it does the same as
setCompositing just with inverted binary logic and worse name. The
compositingToggled signal is now emitted from within setup and finish to
ensure that especially the compositingToggled(true) signal is only
emitted if the Compositor could start.

Also the updateCompositingBlocking is adjusted to use the new dedicated
suspend and resume methods instead of the toggle method.

REVIEW: 106273
2012-09-06 09:59:20 +02:00
Martin Gräßlin
35237aadcb Splitting up of KWin's global D-Bus interface
Two new interfaces are introduced:
* org.kde.kwin.Compositing
* org.kde.kwin.Effects

The Compositing interface is generated from scriptable elements on the
KWin::Compositor class and the Compositor is exported as /Compositor.
It provides the general Compositing related D-Bus methods like whether
the compositor is active and toggling and so on.

The Effects interface is generated from scriptable elements on the
KWin::EffectsHandlerImpl class and the instance is exported as /Effects.
It provides all the effects related D-Bus methods like loading an effect
or the list of all effects.

This removes the need to have all these methods provided on the global
org.kde.KWin interface. For backwards compatibility they are kept, but
no longer provided by the Workspace class. Instead a new DBusInterface
is generated which wrapps the calls and delegates it to one of our three
related Singleton objects:
* Workspace
* Compositor
* EffectsHandlerImpl
2012-09-06 09:58:12 +02:00
Martin Gräßlin
ebbfc26452 Remove superfluous Compositor checks in events.cpp
compositing() ensures that m_compositor is not null.

REVIEW: 106255
2012-09-06 09:55:22 +02:00
Martin Gräßlin
7497ef9148 Make the Compositor a proper Singleton
The Compositor class actually behaves like a Singleton so it should be
one. Therefore four static methods are added:
* self() to access the Singleton
* createCompositor() to be used by Workspace to create the instance
* isCreated() to have a simple check whether the Singleton is already
  created
* compositing() as a shortcut to test whether the compositor has been
  created and is active

The isCreated() check is actually required as especially Clients might
be created and trying to access the Compositor before it is setup.
2012-09-06 09:55:22 +02:00
Martin Gräßlin
ed3effa2d3 Ensure that the start Client to build up the ClientModel is in the Focus Chain
If the start Client is not part of the focus chain the call to
nextClientFocusChain() cannot return the Client again. So the loop break
condition is never reached and as the focus chain is not empty the call
always returns a not null Client which means KWin is caught in an endless
loop.

This change checks that the starting Client is in the focus chain and if
not the first Client of the focus chain is used.

BUG: 306260
BUG: 306275
FIXED-IN: 4.9.2
2012-09-05 20:55:07 +02:00
Martin Gräßlin
b92557a0af Return displayHeight for property displayHeight and not displayWidth
Typo in the scripting bindings.

BUG: 306225
FIXED-IN: 4.9.2
2012-09-04 06:26:39 +02:00
Michael Pyne
93564b7004 kwin: Fix build failure regarding QElapsedTimer.
It seems not all Qt installs will automatically #include QElapsedTimer
from QtCore/QTimer, this caused a build failure on my system and on a
RHEL 6.2 VM I've been testing on.

Checking the Qt docs, QBasicTimer also has a separate include so
although this didn't cause a build failure, I've thrown in its
separate #include as well. I have not checked for other #include errors,
and a very quick search on b.k.o for bugs mentioning "build" did not
return any bugs to close.

I'm pretty sure this build failure applies only to master but I haven't
checked thoroughly.
2012-09-02 21:38:06 -04:00
Script Kiddy
f161331b1e SVN_SILENT made messages (.desktop file) 2012-09-02 10:37:09 +02:00
Script Kiddy
62ef8ddcad SVN_SILENT made messages (.desktop file) 2012-09-01 11:00:30 +02:00
Martin Gräßlin
4812edc92d Ignore SettingsCompositing changed in Aurorae
Not needed and causing troubles when restarting Compositing.
2012-09-01 10:02:17 +02:00
Aurélien Gâteau
14049444dd Merge branch 'KDE/4.9' 2012-08-31 16:12:24 +02:00
Script Kiddy
c4d6cd3cf7 SVN_SILENT made messages (.desktop file) 2012-08-30 10:53:23 +02:00
Hugo Pereira Da Costa
a93f71ab57 properly deal with invalid colors when calculating cache keys.
using color.rgba() for an invalid color corresponds to solid black, which in turns conflicts with the cache
value for such color. We use "transparent black" instead.
CCBUG: 304868
2012-08-29 14:53:40 +02:00
Hugo Pereira Da Costa
e06ca2e82c properly deal with invalid colors when calculating cache keys.
using color.rgba() for an invalid color corresponds to solid black, which in turns conflicts with the cache
value for such color. We use "transparent black" instead.
CCBUG: 304868
2012-08-29 14:51:14 +02:00
Thomas Lübking
84ac01754c Ensure main.qml presence
BUG: 304881
REVIEW: 106062
FIXED-IN: 4.9.1
2012-08-28 21:51:09 +02:00
Thomas Lübking
f5845910f3 fix texture scaling in resize effect
REVIEW: 106140
2012-08-28 21:29:18 +02:00
Thomas Lübking
ad2059bdbe fix flicker with fullscreen effects
BUG: 304375
FIXED-IN: 4.9.1
REVIEW: 106142
2012-08-28 21:29:12 +02:00
Thomas Lübking
a84cfb3a49 kill killhelper in client destructor
BUG: 305157
FIXED-IN: 4.9.1
REVIEW: 106022
2012-08-28 21:08:28 +02:00
Thomas Lübking
f7d1c1d14c do not show clientmenu if button is down for 2nd click
if one clicks very fast, the timeout will coincident with the
second downtime (between press and release) what was used to be
interpreted as "still down"

BUG: 305738
REVIEW: 106227
FIXED-IN: 4.9.1
2012-08-28 21:08:28 +02:00
Thomas Lübking
f18230fe99 ignore dockers for showingDesktop state
also use a common funciton to decide whether or
not to break the state

BUG: 305874
FIXED-IN: 4.9.1
2012-08-28 21:08:28 +02:00
Thomas Lübking
952579bb09 fix untabbing position
the geometry setting needs to happen out of recursion,
has to be smarter for unmaximizing and also no real
place in TabGroup - the client is no longer tabbed thus
it's not the groups task to manage it's geometry.

BUG: 226881
REVIEW: 106182
FIXED-IN: 4.9.1
2012-08-28 21:08:03 +02:00
Thomas Lübking
976037717b delay unsynced window ready_for_painting state
by at max 50ms (and thus trigger a full repaint with the state change)

BUG: 295254
REVIEW: 106173
FIXED-IN: 4.9.1
2012-08-28 21:08:02 +02:00
Kai Uwe Broulik
ec022261e4 Make Startup Feedback Effect aka Bouncing Cursor respect global size for small icons
BUG: 305611
REVIEW: 106166
FIXED-IN: 4.9.1
2012-08-28 21:06:22 +02:00
Thomas Lübking
4f3b3ee154 Ensure main.qml presence
BUG: 304881
REVIEW: 106062
FIXED-IN: 4.9.1
2012-08-28 20:48:16 +02:00
Script Kiddy
9fb338ccd5 SVN_SILENT made messages (.desktop file) 2012-08-28 18:59:14 +02:00
Thomas Lübking
f82fffdd71 fix flicker with fullscreen effects
BUG: 304375
FIXED-IN: 4.9.1
REVIEW: 106142
2012-08-28 15:35:35 +02:00
Thomas Lübking
0d6cee6ccc kill killhelper in client destructor
BUG: 305157
FIXED-IN: 4.9.1
REVIEW: 106022
2012-08-28 15:35:35 +02:00
Thomas Lübking
c3bce7c246 do not show clientmenu if button is down for 2nd click
if one clicks very fast, the timeout will coincident with the
second downtime (between press and release) what was used to be
interpreted as "still down"

BUG: 305738
REVIEW: 106227
FIXED-IN: 4.9.1
2012-08-28 15:35:34 +02:00
Thomas Lübking
7d2e62b487 ignore dockers for showingDesktop state
also use a common funciton to decide whether or
not to break the state

BUG: 305874
FIXED-IN: 4.9.1
2012-08-28 15:35:34 +02:00
Thomas Lübking
3460d5b551 fix untabbing position
the geometry setting needs to happen out of recursion,
has to be smarter for unmaximizing and also no real
place in TabGroup - the client is no longer tabbed thus
it's not the groups task to manage it's geometry.

BUG: 226881
REVIEW: 106182
FIXED-IN: 4.9.1
2012-08-28 15:35:29 +02:00
Thomas Lübking
a6296dda20 delay unsynced window ready_for_painting state
by at max 50ms (and thus trigger a full repaint with the state change)

BUG: 295254
REVIEW: 106173
FIXED-IN: 4.9.1
2012-08-28 15:34:00 +02:00
Hugo Pereira Da Costa
e248577c37 Fixed positioning of tabs when manually reordering with right mouse button
Made 'drop target' animation consistent with where tab is actually dropped
Cleanup code.
CCBUG: 305443
2012-08-28 09:27:57 +02:00
Hugo Pereira Da Costa
08e9acae0d Fixed positioning of tabs when manually reordering with right mouse button
Made 'drop target' animation consistent with where tab is actually dropped
Cleanup code.
CCBUG: 305443
2012-08-28 09:26:04 +02:00
Hugo Pereira Da Costa
f28d4ef91a Added Option to enable window close on menu double click.
CCBUG: 305738
2012-08-27 23:00:44 +02:00
Hugo Pereira Da Costa
6efd6bc702 fixed indentation. 2012-08-27 23:00:32 +02:00
Martin Gräßlin
7a1fe42be0 Fix uninitialized memory and logic error in PaintRedirector
The refactoring of Compositor starting with b1739c3 caused some
regressions due to variables in Workspace and Compositor not
being initialized. Furthermore there was a boolean logic error
in PaintRedirector causing the decorations not to paint.

BUG: 305875
2012-08-27 19:45:01 +02:00
Kai Uwe Broulik
9adb2d3ed0 Make Startup Feedback Effect aka Bouncing Cursor respect global size for small icons
BUG: 305611
REVIEW: 106166
FIXED-IN: 4.9.1
2012-08-27 11:14:03 +02:00
Allen Winter
ab1f0bb749 fix testTabBoxConfig linking by adding ${QT_QTCORE_LIBRARY} to the
target_link_libraries.
2012-08-26 18:07:48 -04:00
Martin Gräßlin
d81df32a4f Support for Plastik's configuration options
Adding a KConfigXT xml file and an ui file to configure the QML
variant of Plastik.

Currently supported options:
* title alignment
* title shadow
* animation of buttons

Missing option:
* colored borders
2012-08-26 20:59:37 +02:00
Martin Gräßlin
25ac108a76 Support for custom configuration dialogs for QML decorations
If the decoration package contains a ui file in ui/config.ui and
and KConfigXT xml file in config/main.xml the configure dialog
is extended by the custom values.

For this the ui file is loaded and included in the dialog's
layout. To make this possible the AuroraeConfigForm is changed
to a VBoxLayout containing the so far used FormLayout.

The configuration settings are loaded using Plasma's ConfigLoader
and attached to the widget through a KConfigDialogManager.

Marking this commit as the one which implements QML support for
Aurorae themes:

REVIEW: 105751
REVIEW: 105768
BUG: 303810
FIXED-IN: 4.10
2012-08-26 20:57:56 +02:00
Martin Gräßlin
8de1fea67e Option to disable window close on menu double click in Aurorae
For each theme the setting can be enabled individually with the
default being enabled by default. It is completely handled
inside the MenuButton QML component so each QML theme benefits
from the option automatically, too.

BUG: 301327
FIXED-IN: 4.10
REVIEW: 106160
2012-08-26 20:56:19 +02:00
Martin Gräßlin
8d55d9fa21 Use DecorationOptions in Aurorae themes
Instead of injection the Factory as a context property into the
Aurorae QML file the new DecorationOptions is used.
2012-08-26 20:56:19 +02:00
Martin Gräßlin
459da3ea44 Port of Plastik decoration to QML
The Plastik decoration buttons are provided by a declarative
extension plugin as the canvas drawing API would be needed to
draw these buttons. This should be changed with Qt 5.

But it's also a nice example to show how a QML based decoration
can have an extension in C++.
2012-08-26 20:56:19 +02:00
Martin Gräßlin
ce2b251c9b Support for config values in QML decorations
When the decoration is reset a signal is emitted that the config
might have changed which the decoration can connect to for
reloading its configuration. For this an invokable method is
added to Aurorae allowing to read a config value which just
returns the QVariant.

Proper support for border sizes are added by providing the enum
in DecorationOptions, so that QML themes can use the enum values
to decide which border size to use.

The kcm is adjusted to also support these config mechanisms and
to properly load and save the border sizes for QML based themes.
2012-08-26 20:56:19 +02:00
Martin Gräßlin
13993a6efb Properly reset Aurorae decorations when theme changes
On change of theme recreate all decorations and create a new
declarative engine and component which is basically a re-init
of the Factory.

There are too many differences between themes - especially when
switching between an old SVG based Aurorae and a new QML based
Aurorae theme.
2012-08-26 20:56:19 +02:00
Martin Gräßlin
249173946a Support for QML based decoration in KCM decoration
Model is extended to support QML based Aurorae themes as well
the preview is able to handle it. For this a new qml component
is added which loads the decoration preview.
2012-08-26 20:56:19 +02:00
Martin Gräßlin
673dcd6ad3 Declarative extension plugin for window decorations
The generic QML components from Aurorae are split out into an
own declarative plugin. In addition two new helper classes are
added to this plugin:
* A ColorHelper to map a few function of KColorSheme and making
  it possible to actually work with colors in QML. The need
  emerged from trying to port Plastik to QML which makes strong
  use of color shading.
* A DecorationOptions class which is a wrapper around KWin's
  KDecorationOptions but in a more useable way for QML. The
  various options are provided as properties and the value of
  the properties changes automatically depending on whether the
  decoration is active or inactive.

Aurorae itself is not yet adjusted to these changes, but it
should also be adjusted as some of the options are currently
exported in the factory and the factory is injected into the
Aurorae QML decoration.
2012-08-26 20:56:19 +02:00
Martin Gräßlin
5923086d1f Basic QML theme support in Aurorae
Aurorae can load QML themes from Plasma package structures.
Code not yet tested as there are no packages yet.
2012-08-26 20:56:19 +02:00
Martin Gräßlin
8e5b2ae1aa Pass Compositor to EffectsHandlerImpl
Obsoletes the need to go through the Workspace object to get to
the Compositor.

TODO for future: make the Compositor being the parent object for
the EffectsHandlerImpl.

Closing Review and bug from this commit, which is the top most
of the patch series.

REVIEW: 106060
BUG: 299277
FIXED-IN: 4.10
2012-08-26 20:49:08 +02:00
Martin Gräßlin
62c4d449f5 Use signals'n'slots instead of deep function call into Compositor
For most actions where the compositor needs to perform an action
(e.g. scheduling another repaint) signals were already emitted.
So it's easier to just connect the signals to the Compositor
which in turn makes the code much more readable.

All signals are connected from the Workspace when either the
Compositor gets constructed or a Toplevel gets created.
2012-08-26 20:44:46 +02:00