Commit Graph

11352 Commits (7c2448227a747ae0d45a2aedd95b83e907256fd8)

Author SHA1 Message Date
Martin Gräßlin 7c2448227a [libkwineffects] Improving linking of kwinglutils library
Only needs:
* Qt5::DBus for the communication with color correction
* Qt5::X11Extras for access to XCB, pulls in needed Qt5::Gui
* XCB component XCB for xcb calls in kwinglobals.h
2013-11-19 12:12:57 +01:00
Eike Hein 2b0147f87d Merge branch 'KDE/4.11' 2013-11-19 00:01:56 +01:00
Martin Gräßlin e1b5716228 [kwin] Adjust to API-changes in NETRootInfo 2013-11-18 13:58:35 +01:00
Martin Gräßlin ce674ed509 [kwin] Window -> xcb_window_t or WId 2013-11-18 13:57:46 +01:00
Martin Gräßlin d6a69aea4f [kwin] NETRootInfo::setDesktopGeometry doesn't expect a desktop argument any more 2013-11-18 13:57:06 +01:00
Martin Gräßlin ba66fd9ef6 [kwin] NETWinInfo2 becomes NETWinInfo
And takes a xcb_connection_t instead of Display. Also our own class
is adjusted to no longer need the connection being passed in.
2013-11-18 13:56:28 +01:00
Martin Gräßlin 4a4ec0decd [kwin] Add XLib includes where still needed
No longer included through netwm.
2013-11-18 13:52:38 +01:00
Martin Gräßlin 20d03d5754 [kcmkwindesktop] Adjust to changes in NETRootInfo 2013-11-18 13:50:18 +01:00
Martin Gräßlin 2c9e21a983 [kwin] Use XCB Atom enum definition instead of XLib's one 2013-11-18 13:48:31 +01:00
l10n daemon script 7e368e1ef3 SVN_SILENT made messages (.desktop file) 2013-11-18 04:14:01 +00:00
l10n daemon script d36319ebbe SVN_SILENT made messages (.desktop file) 2013-11-17 06:36:34 +00:00
l10n daemon script 833d1f85c2 SVN_SILENT made messages (.desktop file) 2013-11-17 04:07:54 +00:00
l10n daemon script 2e9d94d959 SVN_SILENT made messages (.desktop file) 2013-11-16 03:51:10 +00:00
Hugo Pereira Da Costa a4b4d696f1 use QApp->setOverrideCursor when detecting window 2013-11-15 16:54:15 +01:00
Bhushan Shah 78c83642c4 Revert "use ecm_mark_as_test in kwin"
This reverts commit 659ee81a092a7efe0e56544277f9863485a3dec7.

somehow tests are not running on kwin
2013-11-15 13:38:35 +05:30
Aleix Pol 7b110f0671 Improve CMake usage
It's basically a run of the port-cmake.sh script in here, mostly the changes
are the following:
- Using KF5::* targets
- Using the proper macros, following recent developments in frameworks
2013-11-15 13:37:47 +01:00
l10n daemon script 38b62ce928 SVN_SILENT made messages (.desktop file) 2013-11-15 04:26:15 +00:00
Bhushan Shah 3257f55850 use ecm_mark_as_test in kwin
REVIEW: 113861
2013-11-14 15:34:01 +05:30
Martin Gräßlin 719923d410 [kwin/aurorae] Add mutex locker around access to the render buffer
We were facing crashes when the buffer image was being read from and
written to at the same time.
2013-11-14 09:41:52 +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 07294b49f2 [kcmdeco] Use new DecorationButton types for describing the buttons
Rather heavy change to get the kcm to no longer use the string based
definition of the buttons on the left and right.
2013-11-14 09:41:52 +01:00
Martin Gräßlin b73d90cf78 [kdecorations] Introduce an enum for decoration buttons instead of characters
A new enum is introduced which defines all the buttons known to KWin.
The defaultTitleButton methods return a list of DecorationButtons instead
of a string which needs to be parsed by the decoration. The same for the
actual title buttons. The reading/storing of the buttons is unchanged,
that is the same characters are used and mapped to the button types.
2013-11-14 09:41:52 +01:00
Martin Gräßlin 79d36fe4e9 [kdecorations] Drop KCommonDecoration::defaultButtons(Left|Right)
Just forwards to static method in KDecorationOptions, thus any user can
also just use this static method directly.
2013-11-14 09:41:52 +01:00
Martin Gräßlin 529fcf0c46 [aurorae] Drop default title buttons left/right from theme config
Nowhere used inside Aurorae.
2013-11-14 09:41:52 +01:00
Martin Gräßlin 5012f9e83a [oxygen] Drop redefining the default decoration buttons
There is no difference between Oxygen and default KDecoration, so
it's not needed. It's also conceptionally wrong: decorations should
not be able to change the global default.
2013-11-14 09:41:52 +01:00
Martin Gräßlin 47857bb9f3 [oxygen] Use new update mechanism of KDecoration in the Button
This allows to have the button animations working in the preview.

Needs to change the reference to Client to non-const.
2013-11-14 09:41:52 +01:00
Martin Gräßlin f03104ac17 [kcmdeco] Connect PreviewItem to factory's recreateDeco signal 2013-11-14 09:41:52 +01:00
Martin Gräßlin 3ea18be574 [kcmdeco] Move KDecorationPreviewOptions into the Model
We need to have it around and not in the Preview widget to be able
to update the options when the buttons change.
2013-11-14 09:41:52 +01:00
Martin Gräßlin aab6037c4a [kcmdeco] KIcon -> QIcon::fromTheme 2013-11-14 09:41:52 +01:00
Martin Gräßlin b150d9ddc1 [kcmdeco] Clean up includes 2013-11-14 09:41:52 +01:00
Martin Gräßlin a98dbd7460 [kcmdeco] Drop the old preview code
All the rendering to QPixmap code in the Model and the Preview is
deleted as it's no longer used.

The model still has the plugin for the border size functionality.
This probably needs a change in the API to make it completely bound
to the decoration and not a global thing.
2013-11-14 09:41:52 +01:00
Martin Gräßlin 1674824e79 [kcmdeco] Introduce a new PreviewItem for rendering QWidget based decos in QML
Using a QQuickPaintedItem for the rendering. The item gets the library
name from the model and loads the decoration with its own decoration
plugin. Thus each preview has its own plugin which eliminates the need to
constantly recreate the decoration as it is done with the preview.

Having a QQuickItem gives new possibilities. The item accepts hover
events and forwards them as enter and leave events to the widgets inside
the decoration. By that the mouse interaction of e.g. Oxygen is still
functional. If the decoration uses the new update approach the bridge is
forwarding the updates to the item and triggering a repaint so we even
have animations in the preview although the widget is never shown.
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 54bbbff2bf [decorations] Cancel move/resize on titlebar double click 2013-11-14 09:41:51 +01:00
Martin Gräßlin 695697ebbd [decorations] Allow Client to use QWindow based decorations
Shared implementation using the delegating methods in KDecoration
which uses either QWindow or QWidget where possible.
2013-11-14 09:41:51 +01:00
Martin Gräßlin f8b9b98345 [decorations] Allow decorations to use a QWindow instead of QWidget
A setMainWindow() method is added which behaves similar to
setMainWidget(). In addition a few convenient methods are added which
can be used by KWin core to show/hide the decoration without caring
whether the decoration uses a QWindow or QWidget.
2013-11-14 09:41:51 +01:00
Martin Gräßlin 8ecb69cd8c [decorations] Add a KDecoration::window() returning the QWindow
KWin core can access the QWindow of the decoration instead of the
QWidget. This is a preparation step to allow QWidget based window
decorations without any QWidgets at all.

KWin core makes already use of this new accessor to get the window Id
which is also on QWidgets provided through the QWindow.
2013-11-14 09:41:50 +01:00
Martin Gräßlin d6bf62eb3e [kdecorations] Drop initialParentWidget()
No longer needed for creating the preview and not set in our main
bridge. Thus it can go and we just use NULL as the parent widget.
2013-11-14 09:41:50 +01:00
Martin Gräßlin 98549449d6 [aurorae] Implement new render method in Aurorae
Improves the situation a little bit: schedules updates without
rendering to the QWidget, but still fbo -> QImage in each frame.
2013-11-14 09:41:50 +01:00
Martin Gräßlin 51ee2e86d1 [kdecorations] Introduce new way to schedule updates in composited case
The PaintRedirector calls the new method KDecoration::render and passes
it's PaintDevice and the region to update to it. A decoration can
implement this method and provide an optimized implementation for the
painting which does not go through the deco's QWidget at all. In addition
the decoration can invoke an update() slot which will schedule a repaint
in the PaintRedirector and thus completely replaces the need for
intercepting paint events on the QWidget and also allows to add QWindow
based decorations in future.
2013-11-14 09:41:50 +01:00
Martin Gräßlin 1deea69170 [paintredirector] Pass KDecoration to PaintRedirector
Gives us more power in the future.
2013-11-14 09:41:50 +01:00
Martin Gräßlin acd0015c6e [paintredirector] Remove dead code 2013-11-14 09:41:50 +01:00
Martin Gräßlin f8acfbf2a0 [aurorae] Connect PlastikButton to options::colorChanged signal
Fixes incorrect button color. DecorationOptions and PlastikButton are
both connected to decoration.active and the button gets invoked first,
thus the titleBarColor is still for the previous state. This was fun!
2013-11-14 09:41:50 +01:00
Martin Gräßlin dd6598c1ff [aurorae] Hack to get Aurorae work with compositing
This is a temporary solution! A proper solution needs changes in
libkdecoration and paint redirector.

The hack redirects the rendering into an FBO. After each rendering we
get a QImage from the FBO and store that in a buffer. As we unfortunately
do not know what changed, we schedule a complete update on the deco's
widget. Once we get the paint event we just render the buffer on the
widget. And thus we have copied the content to a place where it
integrates with the paint redirector.

As already written, this is a horrible hack and I'm not proud about it.
There are just too many copies involved.

So how to improve?
* deco should be able to just provide a QImage to the PaintRedirector
  without the paint to the QWidget.
* only do the FBO -> QImage step if it is needed by the compositor, that
  is compress the events
* for OpenGL compositing it would be totally awesome if we could just
  make the contexts sharing so that we can just reuse the texture from
  the FBO directly.
2013-11-14 09:41:50 +01:00
Martin Gräßlin 93c2eea528 [aurorae] Use QtQuick2 instead of QtDeclarative
Major transition to render using QtQuick 2. This means the actual
rendering needs a QQuickWindow which we embed into a QWidget container.
Not an optimal solution, deco API should offer to operate on QWindow.

For non-composited the decoration gets rendered but for composited
rendering the paint redirector is broken. There are no paint events on
the main QWidget to intercept and thus the redirection doesn't work.
2013-11-14 09:41:50 +01:00
Martin Gräßlin d1afcc7cb2 [aurorae] Whether animations are supported only depends on compositing
Test for raster graphics system doesn't make any sense in QtQuick2 world.
2013-11-14 09:41:50 +01:00
Martin Gräßlin 736a0c5611 [aurorae] Fix locating of theme configuration file 2013-11-14 09:41:50 +01:00
l10n daemon script b6990c5fb7 SVN_SILENT made messages (.desktop file) 2013-11-14 04:04:38 +00:00
Martin Gräßlin b6f9bd988b [kwin] Do not filter out button release events for moving clients
The QWidget of the window decoration is otherwise still thinking that
the button is pressed and waits for a release. Thus the next click on
the decoration doesn't trigger the move mode.
2013-11-13 14:40:57 +01:00
Martin Gräßlin 0056302652 [kwin] updateXTime before establishing grab for move resize mode
Grabbing the pointer failed causing unrestricted move resize to
operate incorrectly (position didn't update).
2013-11-13 11:28:05 +01:00