Commit graph

2020 commits

Author SHA1 Message Date
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
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
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
874fccacd5 Delay maximize operation by one event cycle
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
2012-08-10 16:52:53 +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
5c7d046d13 Install event filter on Aurorae Decoration to handle WheelEvents
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
2012-08-02 10:49:06 +02:00
Hugo Pereira Da Costa
6effa63296 added suffix (px) to shadow spinboxes. 2012-07-20 14:53:29 +02:00
Martin Gräßlin
5517d4db2c Delay closing of a window by one event cycle
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
2012-07-14 11:11:02 +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
Script Kiddy
953d088b6a SVN_SILENT made messages (.desktop file) 2012-06-12 17:07:51 +02:00
Hugo Pereira Da Costa
46d0116dd5 Added hidden configuration option to enable/disable closing windows by clicking on menu button.
Option is called "CloseFromMenuButton"
It is false by default.
To turn it on, add
  CloseFromMenuButton=true
in [Windeco] section of $HOME/.kde4/share/config/oxygenrc.
Note that it results in poor usability of the menu button, if enabled.

CCBUG: 301237
2012-06-07 12:28:25 -07:00
Script Kiddy
62211420c7 SVN_SILENT made messages (.desktop file) 2012-05-28 11:08:19 +02:00
Martin Gräßlin
4490d51ae8 Initialize themeconfig class members with default values
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
2012-05-19 19:46:28 +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
Thomas Lübking
e2553bd842 add deco API versioning support
REVIEW: 104978
BUG: 299141
FIXED-IN: 4.9
2012-05-17 23:26:43 +02:00
Hugo Pereira Da Costa
fb361b3d35 Cleanup radial gradient definition and offsets.
Fixed bug on shading windows with large buttons.
2012-05-03 20:09:45 +02:00
Hugo Pereira Da Costa
ba573c60ed Check that widget style supports "SH_ArgbDndWindow" to decide whether or not to draw a shadow around
ItemTag drag-and-drop icon.
2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
83255bed73 fixed rect adjustment. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
aab88cc10d re-implemented compositing-off dnd calculation properly. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
ba3b445231 fixed hotspot. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
27f1f45391 implemented (partially) shadows for drag pixmaps. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
06820d7c77 fixed active item detection when rendering drag pixmap. 2012-05-01 17:32:28 +02:00
Hugo Pereira Da Costa
f76b087b33 mark title transition as dirty when resizing client, to avoid flicker.
CCBUG: 298428
2012-04-23 11:48:30 +02:00
Martin Gräßlin
2b2976aa20 Adjust Aurorae Menu Button close behavior to KCommonDecoration
See 27b667f49562963ea3f13d5b9dd56ff846feb75a
2012-03-01 13:33:35 +01:00
Hugo Pereira Da Costa
0b1f4fc1d6 cosmetics. 2012-02-29 17:17:25 +01:00
Hugo Pereira Da Costa
2eb4b96a8c Fixed warning when rendering text on invalid rectangle;
Fixed painting of buttons in preview.
(thanks Martin :) )
2012-02-29 17:10:23 +01:00
Hugo Pereira Da Costa
0a7195fe22 removed unneeded check. 2012-02-29 16:54:52 +01:00
Hugo Pereira Da Costa
8f28376274 fixed tabbing order 2012-02-29 08:57:41 +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
Thomas Lübking
85635dd485 fix tabbing
BUG: 290959
BUG: 265160
BUG: 229292
BUG: 238279
BUG: 290758
BUG: 222831
BUG: 278275
BUG: 245747
BUG: 230000

BUG: 253697
BUG: 230570
BUG: 265977
BUG: 225337
BUG: 225339

REVIEW: 103855
2012-02-11 16:30:22 +01:00
Thomas Lübking
bf88ec09ac Revert "fix tabbing"
pushed out of branch, not master - leading to absent revision, found hash collision??

This reverts commit 94b2ad7b85801e37e2df4671cdc4f26b6d7e5506.
2012-02-11 16:29:14 +01:00
Thomas Lübking
d245035a17 fix tabbing
BUG: 290959
BUG: 265160
BUG: 229292
BUG: 238279
BUG: 290758
BUG: 222831
BUG: 278275
BUG: 245747
BUG: 230000

BUG: 253697
BUG: 230570
BUG: 265977
BUG: 225337
BUG: 225339

REVIEW: 103855
2012-02-11 16:01:41 +01:00
Hugo Pereira Da Costa
2b2a21e4d4 manually reduce shadow size in preview for better rendering. 2012-01-16 10:16:29 +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
de72df5a90 Proper resetting of Aurorae on changes
Most settings don't require a reload of the decorations.
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
4e07ced451 Drop unused code 2012-01-13 18:08:45 +01:00
Martin Gräßlin
0df0266602 Makes two methods private which are no longer accessed from outside 2012-01-13 18:08:45 +01:00
Martin Gräßlin
beba190f8f Correctly update decoration width/height on theme change 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
30d8f2c1ea Don't load FrameSvg in AuroraeTheme
This allows to remove Plasma compile dependency from Aurorae and
the KCM.
2012-01-13 18:08:44 +01:00
Martin Gräßlin
8a4a8b3903 Drop GraphicsScene based Aurorae 2012-01-13 18:08:44 +01:00
Martin Gräßlin
a0efa6453e Adding a slot to load an AuroraeTheme.
Can be used from the decoration module to load the theme for each
decoration.
2012-01-13 18:08:44 +01:00
Martin Gräßlin
b44efd3c22 Use one declarative engine for all decortions
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?
2012-01-13 18:08:43 +01:00
Martin Gräßlin
c2b23a3772 Aurorae supports all buttons
Not really correct, but we can hardly check it.
2012-01-13 18:08:43 +01:00
Martin Gräßlin
acfdc9765e Disable window tabbing in Aurorae 2012-01-13 18:08:43 +01:00