Commit graph

51 commits

Author SHA1 Message Date
Martin Gräßlin
e6542f01d3 [aurorae] Use property binding for toggled state
So far we manually updated the toggled state depending on the button
type and the corresponding client property. This had an error sneaked
in for onAllDesktops: it was bound to desktop change instead of on all
desktop change causing the button to not reflect the state correctly.

To prevent such errors it's now setup to a property binding to the
client's state directly.

BUG: 354702
FIXED-IN: 5.4.3
REVIEW: 125917
2015-11-02 10:11:32 +01:00
Andrey Bondrov
b3a9f41fd0 Fix title height for maximized windows with Aurorae decorator 2015-03-23 23:27:09 +10:00
Andrey Bondrov
4922b6d1cd Fix a typo in aurorae QML code 2015-03-22 21:48:01 +10:00
Martin Gräßlin
e8a52bbe65 [aurorae] Use mousePressAndHoldInterval from StyleHints 2014-12-16 08:27:11 +01:00
Martin Gräßlin
d26b5a1739 [aurorae] Fix BorderSize for SVG based themes 2014-12-05 17:36:25 +01:00
Martin Gräßlin
65fd014fdb [aurorae] Fix setting closeOnDoubleClickOnMenuButton
It's now a setting provided by DecorationSettings and doesn't need
to be configured per theme.
2014-12-05 16:43:13 +01:00
Martin Gräßlin
c815775a0e [aurorae] Better specify y value of titleBar
It uses the borderBottom now to have at least an as large resize
border as at the bottom. This still needs improvement.
2014-12-03 12:09:24 +01:00
Martin Gräßlin
99545da109 [aurorae] s/requestMaximize/requestToggleMaximization/g 2014-11-11 13:20:15 +01:00
Martin Gräßlin
47484384ad [aurorae] Support DecorationShadow
DecorationShadow is supported through using the padding values. The
window becomes larger by the padding and gets positioned accordingly.
This requires to translate all mouse events.

The DecorationShadow is just using the complete image, which is kind of
a memory waste, but at least the SVG based Aurorae doesn't provide us
better information (might be added, but would probably need changes in
the theme).

For switching back to non-compositing we recreate the QuickWindow. It's
not fortunate, but as long as we do not yet have the render control it's
needed.
2014-10-27 12:45:05 +01:00
Martin Gräßlin
5c3cd6f4bc Initial port of Aurorae to KDecoration2
The port to KDecoration2 means quite some changes in the way how Aurorae
works. First of all: the theme to load is passed to the Deocoration ctor
and not searched for by Aurorae itself.

The rendering mechanismn didn't change significantly yet. It's still
rendering to an FBO and passing the image on. This needs some further
work as KDecoration2 does not support the padding any more. So all
themes using shadow are currently broken.

Another big change is the way how the rendering scene is constructed
and used. KDecoration2 doesn't want the the Decoration to be a native
window. But for being able to render a QtQuick scene at all we need a
QQuickWindow. Thus it creates a window parented to the decoration id,
but not accepting any input event. Input is nowadays controlled from
the outside: events are passed into the Decoration, so we don't want
the QtQuick window intercepting events.

In case of non-composited the normal FBO mechanism doesn't work and
Aurorae just renders to the QQuickWindow directly. This could use
some optimization in the decoration renderer in KWin core to not even
try to perform the normal rendering. On the other hand it's probably
too much a hassle for the use case.

The rendering architecture might hopefully be improved with Qt 5.4
and the new QQuickRenderControl class.

The QQuickWindow also exposes a problem for preview in the
kdecoration-viewer and the future KCM: we don't want a different
window, but best would be to get to the QML scene directly. A small
hack is added to have the previewers set a "visualParent" which Aurorae
uses to parent the QML scene to without the need to create a
QQuickWindow.
2014-10-24 13:48:31 +02:00
Martin Gräßlin
558e357575 [aurorae] Fix MaximizeRestore Button of Aurorae Themes
Seems like porting to new infrastructure was incomplete. The
MaximizeRestore button consists of two buttons on top of each other with
an own mouse area in each and both always visible. This means the restore
button was stealing the mouse events of the maximize button breaking
maximization.

The solution is to have an additional MouseArea which controls the whole
button making the two button types just visualization.
2014-07-07 08:38:41 +02:00
Martin Gräßlin
7c745ef991 [aurorae] Use NativeRendering for decoration title 2014-06-30 14:33:09 +02:00
Marco Martin
16253d7fc3 qtextracomponents->kquickcontrolsaddons 2014-03-25 17:13:43 +01:00
Martin Gräßlin
4703339ef6 [kwin/aurorae] Remove behavior animations on anchors
Looks like this completely broke in Qt. The groups are all placed at
0/0 if there is an animation defined and the complete layout is broken.

The animation is not that useful in fact so no big loss.
2014-03-12 11:45:46 +01:00
Martin Gräßlin
9fc3aabc66 [kwin/aurorae] Default to no close on double click menu button
To increase consistency with other decorations and because it changes
the behavior of the menu button in an unexpected way we default to
double click menu button doesn't close the window.

BUG: 331462
FIXED-IN: 5.0
REVIEW: 116716
2014-03-11 15:46:21 +01:00
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