Commit graph

10284 commits

Author SHA1 Message Date
Àlex Fiestas
8116322f93 Make activities really optional in KWin
KWin is already able to work without activities but there was some code
left in the rules GUI.

REVIEW: 109815
2013-04-08 17:43:57 +02:00
Script Kiddy
8381581c5a SVN_SILENT made messages (.desktop file) 2013-04-08 13:32:53 +02:00
Martin Gräßlin
8fa3f8daa8 Model to provide easy access to KWin's Clients from QML
A new ClientModel is added which provides multiple different views on
KWin's Clients. The model is organized as a tree model supporting the
following levels:
* activities
* virtual desktops
* screens
* none

The levels can be ordered in whatever way one wants. That is the tree
structure can have an ordering of activities then virtual desktops or
the other way around.

In addition the model provides Exclusion flags  to exclude clients of
certain types. E.g. it's possible to exclude all windows which are not on
the current desktop or all windows which are of type dock.

The model gets automatically updated whenever a Client is added/removed
or changes a state in a way that it should be excluded/included.

The ClientModel is not directly exported to QML. Instead there are
specific sub classes for certain common orderings. This solutions is
chosen to workaround some limitations of QML. The initial idea was to
use a property taking a list of the levels, but this doesn't work because
we are not notified when the QDeclarativeListProperty changes.

Currently the following models are provided to QML:
* ClientModel -> no restrictions
* ClientModelByScreen -> ordering by screen
* ClientModelByScreenAndDesktop -> screen, then desktop

These can be used to get all Clients:
ClientModel {
}

Or to get the classic Present Windows on current desktop:
ClientModelByScreen {
    exclusions: ClientModel.OtherDesktopsExclusion | ClientModel.NotAcceptingFocusExclusion | ...
}

Or to get the classic Present Windows on all desktops:
ClientModelByScreen {
    exclusions: ClientModel.NotAcceptingFocusExclusion | ...
}

Or our well known desktop grid:
ClientModelByScreenAndDesktop {
    id: desktopGrid
    exclusions: ClientModel.NotAcceptingFocusExclusion | ...
}

To support filtering as known by the Present Windows effect one can use
a ClientFilterModel, which is a QSortFilterProxyModel filtering on
window caption, role and class:
ClientFilterModel {
    id: filterModel
    clientModel: desktopGrid
    filter: filterItem.text
}

In case it's a tree level obviously QML does not support this correctly.
So we need to use a VisualDataModel:
VisualDataModel {
    id: clientModel
    model: filterModel
    Component.onCompleted: {
        clientModel.rootIndex = modelIndex(0);
        clientModel.rootIndex = modelIndex(0);
        clientModel.delegate = thumbnailDelegate;
    }
}

As we can see, the rootIndex has to be set to the level which contains
the Clients. Also it seems to be important to create the delegate after
the model index has been set. The idea is to have only one ClientModel
and multiple VisualDataModels if multiple views on the data is needed.

The model has been tested with a painful modeltest session. It looks good
so far modulo the listed limitations and that modeltest is not liking
closing Yakuake in the ClientModelByScreenAndDesktop setup, though it
works fine in real world testing.

REVIEW: 109604
2013-04-08 10:30:45 +02:00
Martin Gräßlin
6351472d28 Add a client property to ThumbnailItem
Makes it a little bit easier to use a ThumbnailItem for a Client. E.g.
ThumbnailItem {
    client: model.client
}

instead of mapping the windowIds, which is rather uncomfty.
2013-04-08 10:30:45 +02:00
Martin Gräßlin
15b84c54f8 Support saturation/brightness in ThumbnailItem
Two new properties saturation and brightness are added to the
ThumbnailItem which can be set from QML.

The properties are honoured by the Scene when rendering the thumbnail.
2013-04-08 10:30:45 +02:00
Script Kiddy
e793067ab6 SVN_SILENT made messages (.desktop file) 2013-04-08 09:00:12 +02:00
Thomas Lübking
2e2e13d89e add dummy if no window for tab attach is available
BUG: 306451
FIXED-IN: 4.11
REVIEW: 109782
2013-04-07 14:47:10 +02:00
Thomas Lübking
b3adc6254b snap maximized windows to border
BUG: 317845
REVIEW: 109864
2013-04-07 14:47:10 +02:00
Script Kiddy
40e1d36f5b SVN_SILENT made messages (.desktop file) 2013-04-07 08:20:59 +02:00
Script Kiddy
a502f68f7f SVN_SILENT made messages (.desktop file) 2013-04-06 13:52:59 +02:00
Script Kiddy
a66fb373b7 SVN_SILENT made messages (.desktop file) 2013-04-04 14:47:50 +02:00
Script Kiddy
6fc4e30441 SVN_SILENT made messages (.desktop file) 2013-04-04 09:29:03 +02:00
Martin Gräßlin
6d6b013720 Introduce a proper screen property in Toplevel
Instead of calculating the screen number each time screen() is invoked,
the screen number gets stored in a private member variable and evaluated
whenever either the screen count changes or the Toplevel's geometry
changes. During move/resize the screen property doesn't get updated. The
update is delayed till the end of the move/resize operation.

REVIEW: 109715
2013-04-02 08:21:01 +02:00
Martin Gräßlin
556d71933b Merge branch 'KDE/4.10' 2013-04-02 08:18:40 +02:00
Martin Gräßlin
d12f5de4c0 Adding an activitiesChanged signal to Toplevel
Only emitted from Client.

REVIEW: 109706
BUG: 317366
FIXED-IN: 4.10.3
2013-04-02 08:17:30 +02:00
Alexander Mezin
8741789fd2 Don't redirect/unredirect windows too frequent
REVIEW: 109795
2013-04-02 08:15:57 +02:00
Script Kiddy
ef0c9f3e94 SVN_SILENT made messages (.desktop file) 2013-03-30 09:40:36 +01:00
Yuri Chornoivan
0845494ba9 Fix typo: confgured -> configured 2013-03-29 07:55:02 +02:00
Thomas Lübking
158d060b5f turn "ignore geometry" forcerule into a setrule
and btw. replace legacy "ignoreposition" by "ignoregeometry"

this will allow to use "apply initially" as "force" used to act
(ignore position on placement) and "force" to prevent clients
from reconfiguring themselves (to not break a tabgroup or to just
not be annoying)

BUG: 311720
CCBUG: 252314
REVIEW: 109691
FIXED-IN: 4.11
2013-03-28 20:31:08 +01:00
Thomas Lübking
f00ec6ccd5 block screenswitch if active screen follows mouse
also inform the user about this

BUG: 183410
FIXED-IN: 4.11
REVIEW: 109678
2013-03-28 20:31:07 +01:00
Thomas Lübking
29e5023cfb fix horizontal constrain in checkWorspacePosition
broke with fe51de8592f5777b57733f6e44924229c64cf80b - 2011...

REVIEW: 109680
2013-03-28 20:31:07 +01:00
Thomas Lübking
07dfaf3c03 consider shaded windows in checkWorkspaceGeometry
they act pretty much the same as unshaded windows, so i don't know
what prevented their inclusion

BUG: 268660
FIXED-IN: 4.11
REVIEW: 109679
2013-03-28 20:31:07 +01:00
Thomas Lübking
ee1d6d568d add effect debug interface and dbus export
allows for effect specific debugging details

REVIEW: 107063
2013-03-28 20:31:02 +01:00
Thomas Lübking
77bcadc5b4 export AnimationEffect::set and ::cancel to script
Also harmonize script parsing - any combination of animationarray
and global animation setting that results in a valid animation is
possible using the global settings as default on the array values

REVIEW: 109212
2013-03-28 19:47:30 +01:00
Thomas Lübking
9a3a7c8824 don't release clients reparented somewhere else
this broke re-embedding clients

XReparentWindow causes an unmap of mapped clients, currently leading into releaseClient()
This will (among other) eg. reparent the client to the root and this is (usually?) executed after the original XReparentWindow, so the client does not end up where it's supposed to be.

REVIEW: 109484
2013-03-28 19:47:30 +01:00
Ralf Jung
72db0e5e71 remove GlVSync option (it has no UI anymore)
Based on (revision 2 of) https://git.reviewboard.kde.org/r/109086/ by Thomas Lübking

REVIEW: 109086
2013-03-28 19:05:52 +01:00
Ralf Jung
8b2b48b966 Fix Lanczos filter description
REVIEW: 109750
2013-03-27 09:49:53 +01:00
Ralf Jung
eff856e8ef Re-add code I accidentally removed 2013-03-26 21:49:59 +01:00
Ralf Jung
e4ff1678ef Fix v-sync in the EGL backend
REVIEW: 109452
2013-03-26 21:08:38 +01:00
Ralf Jung
0598e6363b move the "copy pixels" code into its own function (it's used twice) 2013-03-26 21:08:38 +01:00
Yuri Chornoivan
e8806dfe56 Fix typo: stragtegy->strategy 2013-03-25 08:20:07 +02:00
Thomas Lübking
16998db274 Merge branch 'KDE/4.10'
Conflicts:
	kwin/useractions.cpp
2013-03-24 22:29:50 +01:00
Thomas Lübking
6fb5353cab remove moveResizeMaximized option
REVIEW: 103948
BUG: 91703
BUG: 299245
FIXED-IN: 4.11

- The setting is ignored, the decoration always gets a "true" for it
- moving a maximized window requires breaking a "strong" snap (1/16 of screen height - unless you use quick maximization)
- all snapping is done towards the client, not the frame
- QuickTileMode is exported to the decoration (just as the maximizeMode) so that it can fix the bordersize alongside that.
2013-03-24 22:26:48 +01:00
Thomas Lübking
903c95dd52 add GUI config to select the swapstrategy
REVIEW: 109322
2013-03-24 22:26:48 +01:00
Thomas Lübking
f6bad91b17 use QWidgetAction for activity setting in alt+f3
not that i really like using QWidgetAction, but it'll
prevent the popup from autoclosing.
Introduce activityUpdateBlocking to prevent users from
removing the popup under their fingertips

BUG: 283309
FIXED-IN: 4.10.2
REVIEW: 107762
2013-03-24 21:57:26 +01:00
Thomas Lübking
c43c6f39cf fix aurorae theme loading
I've no real idea what breaks the theme -> qml assignment but the patch
re/creates the theme object (just as the engine and component) with the theme

BUG: 316033
FIXED-IN: 4.10.2
REVIEW: 109273
2013-03-24 21:51:03 +01:00
Script Kiddy
b769b53cb7 SVN_SILENT made messages (.desktop file) 2013-03-24 13:33:27 +01:00
Script Kiddy
285cdce324 SVN_SILENT made messages (.desktop file) 2013-03-24 08:31:57 +01:00
Martin Gräßlin
eba0149e4e Merge branch 'KDE/4.10' 2013-03-22 11:35:57 +01:00
Alexander Mezin
ba4ad5c855 Fix unredirected windows not redrawn after display resolution change
REVIEW: 109597
BUG: 305781
FIXED-IN: 4.10.2
2013-03-22 11:34:32 +01:00
Martin Gräßlin
b4c8311ace Port Sheet effect to KConfigXT
REVIEW: 109220
2013-03-22 10:34:56 +01:00
Martin Gräßlin
7588890bca Use a Loader for the Virtual Desktop OSD
The complete dialog is moved into a Loader item and it gets loaded on
first change of virtual desktop. This change should result in less
parsing on startup and moving the cost of the loading to the time when
its really needed.

REVIEW: 109639
2013-03-22 10:13:26 +01:00
Martin Gräßlin
15aa42c565 Remove doNotManage hack for Java Applets
The hack used to be used to hide windows before they get embedded into
another window. This has been wrong on multiple levels:
1. it does not belong into a window manager - the window should take care
   of this by itself
2. Window title is not a proper way to identify windows
3. Using D-Bus to inform an X11 window manager about windows which should
   not get managed is rather strange
4. The hack only works with KWin, but not with any other X Window Manager
5. Windows identified with this hack still appear in Alt+Tab, that is
   they are managed after all. Only a flicker is suppressed
6. Such windows are shown in the taskbar which nicely illustrates how
   wrong a D-Bus call to the window manager is

That the hack has been introduced for Java Applets in KHTML also shows
that this is wrong. Why does Gecko and WebKit not need such a hack? Why
is KHTML tied so closely to X11 and KWin? Having a hack for a technology
which is obsoleted (Java Applets) and shouldn't be used due to security
issues is another reason to no longer support this hack. This usage has
been removed from KHTML as of 67939b1 of kdelibs git repo.

REVIEW: 109450
2013-03-22 09:54:45 +01:00
Martin Gräßlin
e107910b30 KDecorationBridge becomes private again
With 4933f08ae49328e36e2654434d28917310882ee5 the KDecorationBridge
interface became public to allow Compiz to easily implement the class.

From a KWin perspective this change did not make much sense. The Bridge
is meant to be the interface towards KWin. It is an internal interface
and exporting it doesn't change the fact that it is internal.

The change got introduced in a time when it was still common to use
Compiz in the kde-workspaces. This has changed. None of the top ten
distributions on distrowatch are shipping the integration parts of Compiz
in an up to date version. Most distros are still on Compiz 0.8, which
requires manual patching to keep up with changes in the decoration API.
Distros on Compiz 0.9 are not shipping the KDE integration - this
includes Ubuntu.

Given this development it is no longer justified to have additional work
on KWin side and because of that the API which should be internal is
marked as internal again.

In case Compiz is still interested in providing the kde-window-decorator
the header file can easily be pulled from our repository. In addition
this patch includes a method
int decoration_bridge_version()
which returns the current bridge API version. Kde-window-decorator can
resolve this method and verify that the version is not higher than what
is supported. The version number is provided in kdecoration.h by the
define KWIN_DECORATION_BRIDGE_API_VERSION. We will increate the version
number once per release in case the bridge changed. 4.11 will have the
version number 1.

This change in behavior has been discussed and agreed in [1].

The change also unexports KDecorationBridgeUnstable. This class should
have never been exported, it was incorrect and the parent class had not
been exported anyway. This is just a note to indicate that it is not an
ABI break and there is no reason to increase the so number.

[1] http://lists.kde.org/?l=kwin&m=136335502805911&w=2

CCMAIL: compiz@lists.freedesktop.org
CCMAIL: dev@lists.compiz.org

REVIEW: 109536
2013-03-22 09:09:48 +01:00
Fredrik Höglund
010b3c94de Merge branch 'KDE/4.10'
Conflicts:
	kwin/lanczosfilter.cpp
2013-03-21 17:13:34 +01:00
Fredrik Höglund
cd93f3c486 kwin/cube: Fix the panel shadow being clipped out
The shadow was being clipped out while the slide animation was running.
2013-03-21 16:43:45 +01:00
Fredrik Höglund
2cec03dede kwin: Fix the blend function in the lanczos filter
The alpha values are pre-multiplied.
2013-03-21 16:31:06 +01:00
Fredrik Höglund
e59867dd92 kwin/blur: Fetch all the blur regions in the ctor
Otherwise the content below windows that were created before the effect
was instantiated won't be blurred.
2013-03-21 16:22:02 +01:00
Martin Gräßlin
d021bf35c1 Skip framebuffer configs for depth 32 with no alpha
Fixes another problem on NVIDIA that RGBA windows were rendered
incorrectly.
2013-03-21 15:52:43 +01:00
Martin Gräßlin
0c4c16e93f Fix typo
Makes KWin work with NVIDIA again.
2013-03-21 12:40:49 +01:00