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
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
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++.
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.
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.
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.
The result of maximizing a window might be the decoration
going away. Because of that we need to delay the handling of
maximize and title bar double click by one cycle as had been
done for other close operations in 0fea5325
BUG: 304870
FIXED-IN: 4.9.1
REVIEW: 105961
Accepting the mouse events breaks moving the window by dragging
the title bar. The reason is that it eats the mouse event and
by that never reaches KWin core to perform the movement.
Other mouse buttons need to be accepted for handling the window
operations. Also we need to listen in general to left mouse
button for the double click operation.
BUG: 304249
FIXED-IN: 4.9.1
REVIEW: 105784
Unfortunately QtQuick 1 does not provide a way to receive Wheel
events. But the window decoration needs to pass wheel events on
the titlebar to KWin core.
In order to process also Wheel Events in Aurorae an event
filter is installed on the widget and in case the mouse positon
is on the title bar the titlebarMouseWheelOperation is invoked.
BUG: 304248
FIXED-IN: 4.9.1
REVIEW: 105801
This is an issue we already had in the past with Aurorae. When
closing a window the graphics scene crashes because the deco
gets destroyed before the code in the graphics scene finished
the execution.
With the port to QML this seemed to be fixed unless as it turns
out it throws an XIO error on closing:
fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
This can be triggered using glxgears. Closing glxgears would
reliable crash Aurorae. To circumvent this issue we have to
delay the close by one event cycle using QMetaObject's
invokeMethod with a Qt::QueuedConnection.
This has also to be done in the useractions menu as the menu
is still open when the window closes causing the same problem
inside Aurorae.
BUG: 303450
FIXED-IN: 4.9.0
Reviewed-By: Thomas Lüking
According to Nuno it's much better to define the animations in
a Behavior element as that is together with the element which
gets animated.
Also he recommends to not use states but just property binding
for the properties which are animated in the Behavior.
And I must admit that this produces cleaner code, though the
conditions are now scattered all over the source code and not
nicely put together in one state section. Let's just hope I got
the logic right.
Well seems like it is useful to go to a QML training, at least
it made me aware of my State definitions are not good and then
talking to Nuno and giving a try to his recommendations.
REVIEW: 105426
Static getters for each default value added which are used in
ctor to initialize the class members and in the load for
readEntry's default value.
REVIEW: 104994
The unescaped tags are interpreted as HTML by Aurorae decorations
and the KWin killer. Escaping the tags ensures that the text is not
rendered incorrectly.
BUG: 293657
FIXED-IN: 4.9.0
REVIEW: 104989
The general idea is: single click opens menu, double click closes
the window. The problem is that the when the menu is opened after
the single click, the menu will eat the second click. So double
click will not work.
This commit brings back the workaround from Aurorae2. The clicked
event is not used at all, but we start a timer on the press event
with the doubleClickInterval. If no double click appears during the
interval we open the menu, if there is a double click we close the
window.
The downside of this approach is that there is a slight delay between
clicking the menu button and the menu appearing. For that the right
click behavior is unchanged. That is right clicking opens the menu
instantly and double click to close it, is broken.
Buttons are exported as a global "options" in the factory.
Additionally the theme's buttons are also exported. The thme decided
based on the custom button positions property which one to use.
In the kcm the button options are also exported.
Each decoration gets a graphicsview and scene instead and a declarative
item is created for each decoration.
There's probably still room for improvments. E.g. never render the
scene onto the widget but directly into the textures?
Switches to the explicit maximized decoration element and animates
the button groups and caption.
Legacy support for just the centered element is still missing. Unsure
if it should be added or if it makes sense to break compatibility here.
What's working:
* background for active and inactive decorations inclusive transitions
* all buttons get loaded
* transition between button states
* all borders, paddings etc is working
* mouse interaction with buttons and title area
What's not yet working:
* special maximize mode
* mouse wheel on title area
* window tabs
* changing themes
* crash resistence (currently a not compiling QML file crashes KWin badly)
* window/blur mask (tricky - we need the alpha mask of the background SVG)
What's going to be dropped:
* special opaque mode
* decoration position at left/right/bottom instead of top
Why? Because nobody uses these features
svn path=/trunk/KDE/kdebase/workspace/; revision=1204063
The following changes were in SVN, but were removed from git:
M wallpapers/Autumn/metadata.desktop
M wallpapers/Blue_Wood/metadata.desktop
M wallpapers/Grass/metadata.desktop
M wallpapers/Hanami/metadata.desktop
Adding a new AbilityUsesBlurBehind which can be set by decorations with
alpha channel to request that the background can be blurred. This improves
the situation for our completely opaque default Oxygen decoration.
This change is a behavior change in comparison to 4.5! Translucent decorations do
not get blurred by default any more.
CCMAIL: craig.p.drummond@googlemail.com
svn path=/trunk/KDE/kdebase/workspace/; revision=1195274
svn path=/trunk/KDE/kdebase/workspace/; revision=1191511
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Air/metadata.desktop
M wallpapers/Autumn/metadata.desktop
M wallpapers/Blue_Wood/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Grass/metadata.desktop
M wallpapers/Hanami/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Quadros/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
Using the Plasma ToolTipManager to provide the same tooltips as in the tasks applet.
Currently only icons and title are displayed for tabs. Preview will be added as soon
as the tab's WId is exported by KWin core.
Unfortunately the tooltips are missing translucency.
FEATURE: 228436
FIXED-IN: 4.6.0
svn path=/trunk/KDE/kdebase/workspace/; revision=1188226
svn path=/trunk/KDE/kdebase/workspace/; revision=1177799
The following changes were in SVN, but were removed from git:
M wallpapers/Blue_Wood/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Grass/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Quadros/metadata.desktop
Fixes incorrect initial text shadow position in Aurorae. Unfortunately
QGraphicsDropShadowEffect seems to be not side effect free. Updates to the scene
are not propagated leaving the tabs in a wrong visual state. Therefore text shadow
is disabled for window tabbing. I will investigate further to see if it gets fixed
in Qt 4.7.
CCBUG: 248754
svn path=/trunk/KDE/kdebase/workspace/; revision=1169087
* There are many themes nowadays
* It is ugly
* It is not up-to-date
* It is not installed
* many more reasons
svn path=/trunk/KDE/kdebase/workspace/; revision=1165297
svn path=/trunk/KDE/kdebase/workspace/; revision=1158610
The following changes were in SVN, but were removed from git:
M wallpapers/Autumn/metadata.desktop
M wallpapers/Blue_Wood/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Grass/metadata.desktop
M wallpapers/Hanami/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Quadros/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1139384
The following changes were in SVN, but were removed from git:
M wallpapers/Blue_Wood/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Hanami/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1132676
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Code_Poets_Dream/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Fields_of_Peace/metadata.desktop
M wallpapers/Finally_Summer_in_Germany/metadata.desktop
M wallpapers/Fresh_Morning/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/Quadros/metadata.desktop
M wallpapers/Red_Leaf/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1131891
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Ethais/metadata.desktop
M wallpapers/Evening/metadata.desktop
M wallpapers/Media_Life/metadata.desktop
M wallpapers/Quadros/metadata.desktop
M wallpapers/Spring_Sunray/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop
svn path=/trunk/KDE/kdebase/workspace/; revision=1121015
The following changes were in SVN, but were removed from git:
M wallpapers/Aghi/metadata.desktop
M wallpapers/Curls_on_Green/metadata.desktop
M wallpapers/Plasmalicious/metadata.desktop
M wallpapers/The_Rings_of_Saturn/metadata.desktop