Commit graph

36 commits

Author SHA1 Message Date
Martin Gräßlin
73e0a6586c [aurorae] Use enum type for Decoration Buttons
Defines the DecorationButton type in DecorationOptions (needs to be
re-defined due to QML limitations) and exports the buttons as a
QList<int> property (again QML limitations).

All QML files are switched from string to the new enum type.
2013-11-14 09:41:52 +01:00
Martin Gräßlin
612709d9d3 [aurorae] Use QWindow based API instead of wrapping in a QWidget
Works quite decently already, but some things do not work properly yet,
e.g. doubleclick on decoration is not noticed.
2013-11-14 09:41:51 +01:00
Martin Gräßlin
cd6fadc84c [aurorae] Change QML for themes to QtQuick 2
Needed for getting proper previews in the QtQuick 2 based kcm.
Obviously this breaks Aurorae as Aurorae is not yet migrated to
QtQuick 2. But there is no more broken than broken anyway.
2013-10-01 14:05:50 +02:00
Martin Gräßlin
ed4bd2dd5b Suppress animation in Aurorae on creation
Introducing a global animate flag which will be set to enabled once the
Component completed and all border values, etc. are set.
2013-01-23 07:37:25 +01:00
Martin Gräßlin
99e39c8654 Introduce a dedicated borders element in Aurorae
The Borders element provides the four properties:
* left
* right
* top
* bottom

And is used directly in Decoration for all the different kind of settings
following this pattern:
* normal borders
* maximized borders
* padding
* extended borders

These properties replace the existing used borderLeft & co. This makes
the code in the C++ side easier as the various border elements can now be
read with a shared implementation.

The Borders provide some convenient methods to set the sizes of the
borders. E.g. it's possible to just set the side borders to a specific
value. This should simplify the implementation of the no-side-borders
feature in new decoration.

The aurorae qml and plastik are adjusted to use the new way. Existing
3rd party decorations would break, but there's a good reason why there's
no documentation for QML based decorations ;-)

REVIEW: 108436
2013-01-23 07:36:41 +01:00
Martin Gräßlin
7163c9faf4 Support for Application Menu in Aurorae
Aurorae supports in general the Aurorae button. So far themes are not
able to style the button, instead the window's icon is used.
2013-01-07 09:43:30 +01:00
Martin Gräßlin
a9bec311c2 Extended Border support in Aurorae
Aurorae Themes can make use of the extended borders feature to allow
resizing outside the window decoration area. So far only Plastik makes
use of it in the Tiny border case.

This should be extended in future by adding generic NoSideBorders and
NoBorders sizes as used by Oxygen.

FEATURE: 308992
FIXED-IN: 4.11
REVIEW: 107936
2012-12-30 09:54:43 +01:00
Martin Gräßlin
9308028fa4 Decoration can announce whether it currently requires an alpha channel
A decoration can provide the AbilityAnnounceAlphaChannel in addition to
AbilityUsesAlphaChannel. If this ability is provided the decoration can
enable/disable the use of the alpha channel through setAlphaEnabled().

The base idea behind this mechanism is to be able to tell the compositor
that currently alpha is not needed. An example is the maximized state in
which the decoration is fully opaque so that there is no need to use the
translucency code path which would render all windows behind the deco.

In addition also the blur effect honors this setting so that behind a
known opaque decoration no blurring is performed.

Oxygen is adjusted to disable translucency in maximized state and Aurorae
is adjusted to allow themes to enable/disable translucency. For Plastik
translucency and with that also blurring is disabled.

REVIEW: 106810
2012-11-09 10:36:43 +01:00
Martin Gräßlin
728b47ef07 Use a Component for Explicit Spacers
A component has the advantage that the width property can depend from
other properties. This does not work with the previous on the fly
construction as the width does not update when the referenced property
changes.
2012-10-25 11:18:52 +02:00
Martin Gräßlin
777513a0c8 Merge branch 'KDE/4.9'
Conflicts:
	ksmserver/themes/contour/metadata.desktop
	ksmserver/themes/default/metadata.desktop
	kwin/kcmkwin/kwinscripts/kwinscripts.desktop
	kwin/scripts/videowall/metadata.desktop
	kwin/tabbox/qml/clients/compact/metadata.desktop
	kwin/tabbox/qml/clients/present_windows/metadata.desktop
	plasma/desktop/containments/desktop/plasma-containment-desktop.desktop
	plasma/generic/applets/system-monitor/plasma-applet-sm_hdd_activity.desktop
	plasma/generic/runners/nepomuksearch/plasma-runner-nepomuksearch.desktop
	plasma/generic/runners/places/plasma-runner-places.desktop
	plasma/generic/runners/webshortcuts/plasma-runner-webshortcuts.desktop
	powerdevil/kcmodule/activities/powerdevilactivitiesconfig.desktop
	powerdevil/kcmodule/global/powerdevilglobalconfig.desktop
	powerdevil/kcmodule/profiles/powerdevilprofilesconfig.desktop
2012-10-12 07:59:22 +02:00
Martin Gräßlin
798ccac19d Remove margins for decoration-maximized elements
Fixes incorrect rendering of decorations providing a maximized element.
BUG: 308248
FIXED-IN: 4.9.3
2012-10-12 07:47:07 +02:00
Martin Gräßlin
9f8228bb1c Merge branch 'KDE/4.9' 2012-09-27 15:35:36 +02:00
Martin Gräßlin
049582536a Fix enabled borders and padding for maximized Aurorae decos
In the maximized state the enabled borders were still enabled causing
the actual borders to be still shown. In addition the padding is not
adjusted to be 0. This is done in the C++ part is it does not make any
sense to have shadows being thrown to another screen for a maximized
window.

REVIEW: 106576
BUG: 307365
FIXED-IN: 4.9.2
2012-09-27 15:34:32 +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
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
fb01e4ab8c Ensure that titleHeight is at least height of buttons
Required to properly lay out the title in case of vertical or
bottom alignment.

BUG: 304822
FIXED-IN: 4.9.1
REVIEW: 105937
2012-08-17 20:39:17 +02:00
Martin Gräßlin
85f31b1310 Honor the decoration font in Aurorae
Adding two properties to the AuroraeFactory to read the active
and inactive title font.

BUG: 304791
FIXED-IN: 4.9.1
REVIEW: 105956
2012-08-17 17:45:56 +02:00
Martin Gräßlin
46441998a3 Do not accept left mouse press events on titlebar in Aurorae
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
2012-08-02 10:50:21 +02:00
Martin Gräßlin
e868ed8999 Do not use States and Transitions in QML of Aurorae
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
2012-07-05 15:22:57 +02:00
Martin Gräßlin
ea8db29c2b Escape HTML tags in window caption in Aurorae and Killer
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
2012-05-19 11:56:35 +02:00
Martin Gräßlin
2b2976aa20 Adjust Aurorae Menu Button close behavior to KCommonDecoration
See 27b667f49562963ea3f13d5b9dd56ff846feb75a
2012-03-01 13:33:35 +01:00
Martin Gräßlin
cb5360c53d Improve mouse click behavior of Aurorae Menu button
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.
2012-02-16 11:34:37 +01:00
Martin Gräßlin
2fce5db7cf Fix button sizes in Aurorae
Maximize/Restore, Menu and spacers did not honor button size factor.
2012-01-13 18:08:45 +01:00
Martin Gräßlin
5f5499a74f Reload Aurorae buttons when the button settings changed 2012-01-13 18:08:45 +01:00
Martin Gräßlin
a1bee6f8a7 Proper button handling in Aurorae QML
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.
2012-01-13 18:08:45 +01:00
Martin Gräßlin
12ca69deda Ensure that borders have at least a size of 0
Prevents cropping of windows with tiny borders.
BUG: 257428
2012-01-13 18:08:45 +01:00
Martin Gräßlin
cb47db887c Fix c'n'p error 2012-01-13 18:08:44 +01:00
Martin Gräßlin
459794f65a Send mouse events to support window resizing 2012-01-13 18:08:43 +01:00
Martin Gräßlin
f96f5c979e Better Maximized/Restore button
Use just one button with the two variants embedded. Makes the state
transitions more robust.
2012-01-13 18:08:42 +01:00
Martin Gräßlin
5ba3f0356b Use parallel animations for button group 2012-01-13 18:08:42 +01:00
Martin Gräßlin
41dc4f35d1 Add inner-border support 2012-01-13 18:08:42 +01:00
Martin Gräßlin
90c882161c Export titleHeight for caption element 2012-01-13 18:08:42 +01:00
Martin Gräßlin
9b5f5a49cc Proper maximized support in Aurorae (QML)
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.
2012-01-13 18:08:42 +01:00
Martin Gräßlin
d78320fa65 Support for Maximized/Restore buttons 2012-01-13 18:08:41 +01:00
Martin Gräßlin
5c36fcac36 Aurorae goes QML
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
2012-01-13 18:08:41 +01:00