Commit graph

12627 commits

Author SHA1 Message Date
Martin Gräßlin
c8d814c11d Add ContextHelp button to default right buttons 2014-12-09 16:05:19 +01:00
Martin Gräßlin
d319a286e7 Improving printing of supportInformation
Custom conversion to QString for a few property types.
2014-12-08 16:46:54 +01:00
Martin Gräßlin
2ef0973a87 Declare metatype for KWin::OpenGLPlatformInterface
Fixes warning when invoking supportInformation.
2014-12-08 16:29:23 +01:00
Martin Gräßlin
468b5a32ff Add supportInformation for new Decorations
Following information is included:
* selected plugin
* selected theme
* all properties from KDecoration2::DecorationSettings
2014-12-08 16:14:05 +01:00
Martin Gräßlin
b6bb4e2548 Register metatype Options::WindowOperation
Fixes all actions not working from user actions menu.
2014-12-08 10:08:49 +01:00
Jan Grulich
bc2a138d92 Fix build due to undefined reference
effectModelTest had undefined reference to KWin:WindowPaintData::setProjectionMatrix() for me
2014-12-07 22:01:15 +01:00
Shayantan Pal
745bb18d7b Fix warnings in kwin/effects/glide/glide_config.ui
Change done as part of Google Code In.

REVIEW: 121353
2014-12-05 20:07:37 +01:00
Martin Gräßlin
d26b5a1739 [aurorae] Fix BorderSize for SVG based themes 2014-12-05 17:36:25 +01:00
Martin Gräßlin
f6a01c134e [aurorae] Fix BorderSize in Plastik 2014-12-05 17:19:46 +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
521627396f [kcmkwin/deco] Reconfigure deco after applying changes
Required hooks also added to KWin core and Aurorae.
2014-12-05 15:58:05 +01:00
Martin Gräßlin
798b1ad860 [aurorae] Fix loading of theme's config values 2014-12-05 14:53:55 +01:00
Daniel Pastushchak
0d997b1093 Introduce categorized logging for kwin core
Done by Daniel Pastushchak for KDE during GCI-2014.
2014-12-05 14:27:15 +01:00
Martin Gräßlin
7da6d3a41e [kcmkwin/deco] Add configuration for decoration plugin/themes
This brings back the configuration for decoration plugins. As a change
to the old variant the configure button is moved into the list view
together with the preview. It is enabled/disabled depending on data
provided by the DecorationModel. For a plugin the DecorationModel
queries for a boolean "kcmodule" key in the metadata. For a theme it
invokes the slot hasConfiguration with the theme name which returns
whether the theme provides configuration.

The actual opening of the configuration is triggered from the
PreviewBridge, which uses the existing KPluginFactory to load the
KCModule. The decoration plugin must provide the keyword "kcmodule"
for it.

So far Aurorae is adjusted and provides configuration for the Plastik
decoration. The interaction with the configuration module works, but
the configuration itself for Plastik seems to be currently broken.
2014-12-05 13:44:16 +01:00
Martin Gräßlin
2034e7e875 [kcmkwin/deco] Bring back KNewStuff support
KNewStuff is no longer hard-coded to Aurorae themes. Instead the
availability of KNewStuff is derived from the available plugin
metadata. If the section org.kde.kdecoration2 contains a key
"KNewStuff" it's value is interpreted as the knsrc config file name.
If there is at least one plugin with such a key KNS gets enabled.

If there are multiple plugins providing KNS support the download
button is turned into a button with a connected menu and each menu
entry points to one of the available resources. Of course this is
not optimal, but KNS doesn't allow the combining of multiple config
files.
2014-12-05 10:15:41 +01:00
Fredrik Höglund
f8d1a0868a Test the generated shaders on startup
Compile and bind each shader in turn and render a textured quad.
2014-12-04 19:19:30 +01:00
Fredrik Höglund
99f9d613e9 Change the default shader in SceneOpenGL2
Push a shader that just does texture lookups. This shader is the one
most likely to be used.
2014-12-04 19:19:30 +01:00
Fredrik Höglund
4394219cd6 cube: Always set the shader in WindowPaintData
The cube effect was relying on paintWindow() using the generic shader
without explicitly telling it to do so.  This makes the cube effect
work with dynamic shaders.
2014-12-04 19:19:30 +01:00
Fredrik Höglund
ef5b1c7f59 cube: Remove some checks that are always true
These are leftovers from the OpenGL 1.x backend.
2014-12-04 19:19:30 +01:00
Fredrik Höglund
e30b1212b6 screenshot: Use the new matrix API
This makes the screenshot effect work when the scene is using
dynamically generated shaders.
2014-12-04 19:19:30 +01:00
Fredrik Höglund
d2cb9f9bf6 Add a model-view and a projection matrix in WindowPaintData
Effects currently modify the matrices by reading back the uniform
values from the shader they assume will be used to paint the window,
set new values for the uniforms, call paintWindow(), and then restore
the uniforms to their previous values.

This is both slow and unreliable, and will not work with dynamically
generated shaders.

This patch solves the problem by putting the matrices in
WindowPaintData and making it the responsibility of the paintWindow()
implementation to set the uniforms.
2014-12-04 19:19:30 +01:00
Fredrik Höglund
0d2b2bc8b3 Use the new ShaderManager API in SceneOpenGL2 2014-12-04 19:19:29 +01:00
Fredrik Höglund
05c309da67 Add a ModelViewProjectionMatrix uniform 2014-12-04 19:19:29 +01:00
Fredrik Höglund
afcc8337de Add support for generating shaders at runtime
This adds new API in ShaderManager that makes it possible to request a
shader based on a set of traits. ShaderManager generates these shaders
on demand and caches them in a hash table.
2014-12-04 19:19:22 +01:00
Martin Gräßlin
623ac3faa3 [kcmkwin/deco] Fix defaults for border size and close window double click 2014-12-04 17:41:57 +01:00
Martin Gräßlin
6b7fd5b9bc [kcmkwin/deco] Only specify QStringLiteral("Normal") once 2014-12-04 17:41:18 +01:00
Martin Gräßlin
dc9437e59a [kcmkwin/deco] Add a filter and a QSortFilterProxyModel 2014-12-04 17:35:08 +01:00
Martin Gräßlin
39f9581d4f Bring back configuration options for Decorations
* Border Sizes
* Close menu double click

Both are added to the Settings and exposed in the decoration kcm.
As it started to no longer scale the kcm uses a ui file.

Still missing:
* buttons
* custom decoration configuration
* GHNS
* search
2014-12-04 16:28:06 +01:00
Martin Gräßlin
b5a626c2d7 Introduce a texture cache for DecorationShadows in SceneOpenGLShadow
The DecorationShadow supports the concept of sharing shadows between
multiple Decorations and this is supported by our Shadow class. But
still the created GLTextures were not shared.

This change introduces a sharing mechanismn for all GLTextures created
for a DecorationShadow. Thus if two decorations share the same
DecorationShadow they will also share the same GLTexture.
2014-12-04 10:36:19 +01:00
Fredrik Höglund
90dfb3ca8b Grow the persistently mapped VBO as needed
Reallocate the buffer when the average frame size is greater than half
the size of the buffer.
2014-12-03 19:50:59 +01:00
Fredrik Höglund
4b3fabbfc9 Add support for GL_ARB_buffer_storage
Use a persistently mapped buffer object for the vertex streaming buffer
when GL_ARB_buffer_storage is supported.
2014-12-03 19:50:59 +01:00
Martin Gräßlin
ca27bc09c5 [aurorae] Use QQuickRenderControl if compiled against Qt 5.4
QQuickRenderControl brings a few advantages for the usage in Aurorae:
* can create an offscreen window
* eliminate the need for mutex as we control the rendering
* control the tear down of the QML scene (no more crashes in Qt)

In future we can further improve this, by sharing the context, so
that we can use the FBO texture directly. But this first needs
some more work in KWin core.

As we don't hard depend on Qt 5.4 yet it's using ifdefs. Once we have
Qt 5.4 the old code will be removed.
2014-12-03 16:22:15 +01:00
Martin Gräßlin
f78ff8eaa5 Do not emit DecorationSettings::alphaChannelSupportedChanged on tear down
The Compositor is destroyed before the Client and Decorations are
destroyed on shutdown. This meant the Decorations reacted needlessly
on the alpha channel supported. E.g. Aurorae recreated the Decoration
and most likely crashed in Qt.

With this change the signal gets disconnected and the Decorations
just don't do anything.
2014-12-03 13:10:35 +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
13dcafab42 Delay decoration repaint to end of event cycle on create
When a Client gets created the ::createDecoration method is invoked
from ::manage which is called before the Client is added to the
ClientList in Workspace. Thus processing the update fails in the
DecorationBridge as it cannot find the Client.

By delaying to the end of the event cycle we can be sure that the
Client is completely managed and that the scheduled repaint doesn't
fail.

This fixes the missing repaint when a Client starts as inactive.
2014-12-03 08:28:41 +01:00
Martin Gräßlin
ac664d8455 Delete libkdecorations
Not used anywhere in kwin any more.
2014-12-02 15:29:21 +01:00
Martin Gräßlin
63695e6fc3 Remove unused imports 2014-12-02 15:26:42 +01:00
Martin Gräßlin
0646c58fe2 [kcmkwin/kwindecoration] Exclude buttons.cpp and configdialog.cpp from build
With that we should not have anything pulling in kdecoration.h
2014-12-02 15:21:15 +01:00
Martin Gräßlin
d81e5697bf Ensure that the X11Renderer doesn't render after reparente to Deleted 2014-12-02 14:13:28 +01:00
Martin Gräßlin
4c9744fe8e Drop dependency on kdecoration.h 2014-12-02 13:50:26 +01:00
Martin Gräßlin
3d9a035312 Move MaximizeMode from KDecorationDefines to utils.h
Unfortunately it cannot be a enum defined in Client as client.h
depends on rules.h and with it in Client rules.h would depend on
client.h.
2014-12-02 13:49:08 +01:00
Martin Gräßlin
50019b4a31 Drop kdecoration.h include from placement.cpp 2014-12-02 11:48:51 +01:00
Martin Gräßlin
763a976c39 Drop kdecoration.h include from tabgroup.h 2014-12-02 11:48:13 +01:00
Martin Gräßlin
1747fde18b Toplevel does not inherit from KDecorationDefines any more
As an intermediate step Client inherits from KDecorationDefines.
2014-12-02 11:31:07 +01:00
Martin Gräßlin
6abf115d22 Drop kdecoration.h include from options.h 2014-12-02 11:19:40 +01:00
Martin Gräßlin
d4e2f19ef0 Workspace does not need to inherit from KDecorationDefines 2014-12-02 11:17:43 +01:00
Martin Gräßlin
fa4332754c Move Position from KDecorationDefines to Client 2014-12-02 11:15:54 +01:00
Martin Gräßlin
e38d56b0dd Move QuickTileMode from KDecorationDefines to Client 2014-12-02 10:52:16 +01:00
Martin Gräßlin
d4bf3602ce Move WindowOperation enum to Options
With this Options no longer needs to inherit from KDecorationDefines.
2014-12-02 10:41:47 +01:00
Martin Gräßlin
b9fb7df15a Do not use KDecorationDefines in Aurorae 2014-12-02 10:31:16 +01:00