Property invokes virtual methods returning false by default. Deleted
reimplements the isDeleted and returns true. Client returns true for
isClient. Method is not called isManaged as this is already used
inside Client.
If possible use the property to Toplevel or Client instead of the
pure virtual methods. This makes it easier to get a stable ABI.
Adding new methods to the class no longer requires to add a pure
virtual method.
From a performance point of view this change should not matter.
Most EffectWindow methods are not invoked during the repaint chain.
But only in response to an event like a window got added. There the
overhead does not really matter as well the previous implementation
made strong use of dynamic casts which are also not knwon for being
very fast.
A new QML item "ThumbnailItem" is registered to the TabBox. The
C++ implementation finds the EffectWindow of the TabBox and adds
itself to the EffectWindow.
While rendering the EffectWindow the information for all registered
ThumbnailItems are extracted and the thumbnail is rendered on top
of the EffectWindow.
This has obvious limitations like you cannot put other QML items
on top of the thumbnail. Nevertheless it works well enough to
be a possible replacement for e.g. BoxSwitch effect.
When compositing is disabled an icon is rendered instead of the
Thumbnail.
One TabBox Layout inspired by BoxSwitch Effect is added. For the
KCM small pre-rendered items are used.
REVIEW: 103039
Each effect is able to declare itself as currently being active,
that is transforming windows or painting or screen or doing anything
during the current rendered frame.
This change eliminates the hottest path inside KWin identified by
callgrind.
REVIEW: 102449
BUG: 262543
pint desktop as background when including desktop in switcher
BUG: 262137
zoom windows as hover/selection indicaton (1/8 of the screen or 105%)
BUG: 215348
CCBUG: 175521
no closer on "show desktop" desktop
show closer immediately but have it disabled for a short time to allow the user realize it
REVIEW: 101318
This commit merges the two signals clientClosed() and unmanagedClosed() to windowClosed() which
is now provided by Toplevel.
The approriate slots in effects.h and effects.cpp were merges as well, since they did the
same.
The direct method calls of the method windowClosed() in SceneOpenGL and SceneXRender were
removed and are now connected to the appropriate signal in windowAdded().
The method windowGeometryShapeChanged() from the class Scene is now a slot. It is now connected to the signal geometryShapeChanged() which is sent from Toplevel instances Client and Unmanaged.
All direct method calls were deleted.
Since the funtionality of TopMenu did no longer work in KDE4 this feature was
removed from Workspace. Every reference to it was removed as well as commentaries
and documentation.
REVIEW: 101485
This has never been implemented properly. There is only the boolean
indicating that the desktop layout is dynamic but it is nowhere set
or used. So better remove it.
First a signal is emitted when the user starts a move/resize operation.
During the move/resize operation each geometry change emits an update signal.
Last but not least a finish signal is emitted.
This eliminates the specific method for geometry updates in drawbound resize
mode.
This needs to be improved in core. Currently ClientGroup does not yet
emit signals, as it would be difficult to connect them. Nevertheless
the effects dependency should be removed.
EffectsHandlerImpl just forwards the signals from TabBox. In order
to have a valid pointer to the TabBox, the TabBox is now initialized
before compositing in Workspace.
EffectsHandlerImpl connects to the Workspace signal clientActivated.
The emitting of the signal is slightly moved from before the activation logic
to after the activation logic. This might change behavior in the scripting
component, but the previous code looked wrong.
Client and Unmanaged use a signal to notify that they are about to be closed.
The EffectsHandlerImpl is connected to those signals and emits the appropriate
windowClosed signal to which the effects are connected.
All previously existing windowAdded methods are renamed to slotWindowAdded.
EffectsHandlerImpl is connected to Workspace's clientAdded signal, which is
emitted a little bit earlier than the previous direct method call. This might
change behavior.
Another signal is added to Workspace to signal that an unmanaged is added.
The first signal used between EffectsHandler and Effects.
The signal is actually emitted by the EffectsHandlerImpl and only
the interested effects connect to this signal.
EffectsHandlerImpl itself is also notified by a signal from Workspace,
allowing to remove one of the many if (effects) checks.
Since the EffectFrames have been moved into KWin core nothing in the
Effects lib actually used Plasma. The only remaining method is moved
to core as it's not used in the Effects. The Effects itself still
link against Plasma, so nothing changes for them.
The Plasma includes in the kwineffects header seemed to pull in
quite some additional headers, so the includes in some effects have
to be adjusted (most often KConfigGroup). This should speed up the
compilation of the library and the effects.
Adding a new AbilityUsesBlurBehind which can be set by decorations with
alpha channel to request that the background can be blurred. This improves
the situation for our completely opaque default Oxygen decoration.
This change is a behavior change in comparison to 4.5! Translucent decorations do
not get blurred by default any more.
CCMAIL: craig.p.drummond@googlemail.com
svn path=/trunk/KDE/kdebase/workspace/; revision=1195274
So it is more consistent (in KDE newspeak "elegant") with other selections and as a plus we get rid of all the custom rendering code in boxswitch.
svn path=/trunk/KDE/kdebase/workspace/; revision=1155051
Rendering of the EffectFrame is moved into the scene as Scene::EffectFrame with a concrete implementation in SceneXrender and SceneOpenGL.
A factory method for an EffectFrame is added to the EffectsHandler, which is used by the effects.
Next step: pass the EffectFrame through all effects, so that effects can transform, blur, invert whatever it.
svn path=/trunk/KDE/kdebase/workspace/; revision=1151271
This provides a good resizing performance for users having problems with the live-updating resize.
Patch by Thomas Lübking.
svn path=/trunk/KDE/kdebase/workspace/; revision=1118714
the logout by using new information provided by KSMServer; Allow effects
to read and detect root window property notify events.
svn path=/trunk/KDE/kdebase/workspace/; revision=1083335
Perhaps we should not display the totally ugly drawbound when we have an active resize effect.
CCBUG: 208770
CCBUG: 152638
svn path=/trunk/KDE/kdebase/workspace/; revision=1042711
It's possible to activate a window, exit without activating, bring window to current desktop, send window on all desktops, mimize the window and close the window.
Clicking desktop allows to activate selected window, exit without activating, show the desktop (minimize all apps) and of course do nothing.
FEATURE: 163116
svn path=/trunk/KDE/kdebase/workspace/; revision=988788
Present windows can be activated for all windows of a desktop by setting the atom _KDE_PRESENT_WINDOWS_DESKTOP to the number of desktop or -1 for all desktops.
Another atom _KDE_PRESENT_WINDOWS_GROUP can be used to activate present windows on a group of windows (e.g. tasks applet).
When present windows is deactivated the property on the manager window will be deleted.
svn path=/trunk/KDE/kdebase/workspace/; revision=988110
all code that used calcDesktopLayout() so the function could be removed.
Minor changes to the DesktopLayout class itself.
svn path=/trunk/KDE/kdebase/workspace/; revision=925930
classes. Example code has been added to present windows and desktop
grid, if this code is not to be used by KDE 4.3 it should be removed and
added to a test effect instead.
svn path=/trunk/KDE/kdebase/workspace/; revision=922039
detect mouse movement and modifier key changes even when KWin is idle.
As the track mouse effect requires polling to always be active disabling
it by default to prevent wasting CPU usage in the default install.
svn path=/trunk/KDE/kdebase/workspace/; revision=919711
Added force mode to buildQuads() to allow refreshing the cache.
Made EffectWindow::buildQuads() no longer internal.
svn path=/trunk/KDE/kdebase/workspace/; revision=872836
WARNING: Breaks shadow effect. I don't think it causes anything to crash anymore but it is VERY ugly visually.
Contains:
- New decoration API that allows decorations to change the way shadows look.
- Shadows now wobble.
- API example code in the Oxygen decoration.
- Added buildQuads() effect plugin hook.
- Work on the shadow effect to use the new decoration shadow API as well.
- Added IDs to WindowQuads.
- Added public accessors to texture coords in WindowVertex.
Would like all this to be reviewed.
CCMAIL: kwin@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=872473
of Effect::animationTime() for how-to-use.
TODO: Effects need to reload config after doing the change in the kcm.
NOTE: Default TimeLine constructor now creates invalid object, it is
necessary to explicitly call setDuration() in order to ensure all
animations respect this setting.
CCMAIL: kwin@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=854690
of Toplevel ones. This makes it independant of the Toplevel objects
and fixes a crash when an elevated window is closed.
svn path=/trunk/KDE/kdebase/workspace/; revision=760802
own properties for communication with something outside of kwin.
Intended now mainly for a better taskbar thumbnails effect.
svn path=/trunk/KDE/kdebase/workspace/; revision=755991
like popups should be short-lived and mostly for the active window anyway.
Possibly could be revisited in the future when support for window grouping
for unmanaged windows gets implemented too.
BUG: 154009
svn path=/trunk/KDE/kdebase/workspace/; revision=755987
being v2+ (right now it says just GPL, which according to GPL itself
means any GPL). Decoration clients will come later.
CCMAIL: kwin@kde.org
svn path=/trunk/KDE/kdebase/workspace/; revision=742302
Reverting r700026 and changing floats to doubles again. I'd probably like
to change even the ones interfacing with OpenGL which I've left for now.
svn path=/trunk/KDE/kdebase/workspace/; revision=707987
for use in effects (and not only). Now a list of window quads (=window areas)
is created at the beginning of the paint pass, prepaint calls can modify
the split itself (i.e. divide it into more parts). The actual paint calls
can then modify these quads (i.e. transform their geometry). This will allow
better control of how the split is done and also allow painting e.g. only
the decoration differently. Still work in progress, but it works.
Also pass data to prepaint functions in a struct, as there is
already quite a number of them.
svn path=/trunk/KDE/kdebase/workspace/; revision=684893
Effects can now have e.g. X-Ordering=10 field in their .desktop file. The bigger the number,
the later the effect comes.
svn path=/trunk/KDE/kdebase/workspace/; revision=684272
Instead, EffectsHandler itself loads the list of enabled effects (saved by the effects selector widget),
also making use of their EnabledByDefault property, so if you haven't touched the config, you'll
automatically get default effects.
svn path=/trunk/KDE/kdebase/workspace/; revision=669036
The ugly side effect of this is that there are tons of static_casts in the code now... maybe it
would be better to add effectImpl() convenience method and use that?
svn path=/branches/work/kwin_composite/; revision=652348
There's also a kwineffects library now, containing the effects API, which makes it possible to write
third-party effects.
API isn't complete yet and for now just two effects have been converted but I'm working on it :-)
svn path=/branches/work/kwin_composite/; revision=652226