Commit graph

81 commits

Author SHA1 Message Date
Martin Gräßlin
de8b9f546f Fixing incorrect clipping of sliding popups
Make use of new extension of protocol for magic number -1.
If offset is -1 KWin has to decide the offset. This fixes all the
incorrect animations and allows us to perform clipping again by
filtering out the window quads which should not be visible.

Additionally the effect now sanitizes the offset. That is for e.g.
Yakuake setting an offset of 0, but there is a strut on the top
corner causing Yakuake not to appear on 0, but with an offset of
the strut. Such cases are now considered as well and the animation
is fixed.

REVIEW: 103367
BUG: 287602
CCBUG: 261159
CCBUG: 278760
FIXED-IN: 4.8.0
2011-12-10 22:41:34 +01:00
Martin Gräßlin
fe4329a252 Only call active effects in the effect chain
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
2011-08-29 07:06:58 +02:00
Jaime Torres
664aaa1b60 ++ prefix for non-trivial data-types
change suffix ++ to prefix ++ to speed up a little bit not-trivial
data-types. discovered by cppcheck

REVIEW: 102057
2011-08-02 17:21:56 +02:00
Martin Gräßlin
572368ea27 Make Slidingpopus work without PaintClipper
Add correct region to repaint, this just used to be clipped before.
2011-07-05 20:18:20 +02:00
Martin Gräßlin
2a91623891 Implement reconfigure in SlidingPopups Effect
FEATURE: 264277
FIXED-IN: 4.7.0
2011-03-19 11:46:34 +01:00
Martin Gräßlin
e0906c8766 Repaint area between offset and window in sliding popups
As this area was not repainted it caused visual garbage during
animationgs. Most visible with yakuake and a panel at the top.
Offset in that case is the upper screenedge while yakuake is
positioned below the panel. The area of the panel did not get
repainted causing the garbage.
CCBUG: 264765
2011-03-18 18:12:49 +01:00
Martin Gräßlin
f213b7da70 Drop KWin::TimeLine from kwineffects
The KWin::TimeLine class was only a small wrapper around QTimeLine
without adding anything to QTimeLine what is not present in QTimeLine.
The initial idea was to make it possible to provide more curve shapes.
This is now obsoleted by Qt shipping more useful curves with QTimeLine.

So let's clean up a little bit and use QTimeLine directly instead of
the small wrapper.

All effects are adjusted to use QTimeLine directly.
2011-03-14 22:50:05 +01:00
Martin Gräßlin
640fdc7b6d PropertyNotify becomes a signal 2011-03-12 19:18:19 +01:00
Martin Gräßlin
e355700e6e EffectsHandler emits windowDeleted signal
Workspace emits a deletedRemoved signal which the EffectsHandlerImpl translates
into a windowDeleted signal.
2011-02-27 10:47:42 +01:00
Martin Gräßlin
0b85768ec5 EffectsHandler emits windowClosed signal
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.
2011-02-27 09:25:45 +01:00
Martin Gräßlin
ab6f2ba1fd EffectsHandler emits windowAdded signal
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.
2011-02-25 22:06:02 +01:00
Martin Gräßlin
b265537962 Drop dependency to libplasma from kwineffects library
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.
2011-02-17 19:38:42 +01:00
Martin Gräßlin
0a7e48f7aa KWin uses kdelibs coding style. 2011-01-31 20:07:03 +01:00
Matthias Fuchs
f70c052644 Turns the slide effect off if KRunner is set to floating.
BUG:218678

svn path=/trunk/KDE/kdebase/workspace/; revision=1202415
2010-11-30 20:03:03 +00:00
Martin Gräßlin
b5377e5834 Sliding Popups effect can read the fade in and out duration from the property.
Added for the usecase of Yakuake.

svn path=/trunk/KDE/kdebase/workspace/; revision=1160205
2010-08-07 11:41:01 +00:00
Martin Gräßlin
6ad3754de0 Remove the last full repaints in sliding popups effect.
svn path=/trunk/KDE/kdebase/workspace/; revision=1159175
2010-08-04 16:34:47 +00:00
Martin Gräßlin
6e31461039 Adding a new rendering flag for painting the screen with transformed windows but without triggering full repaints.
It is not always required to do a full repaint in each frame. E.g. in sliding popups the repaint areas are known and tracked.
This change reduces the painting overhead to just the window area.
Nevertheless I consider this change as experimental and will revert the commit in case it introduces rendering glitches.
Other effects which are good candidates for this flag is wobbly windows, magic lamp, minimize or in general all effects which transform just one window.

svn path=/trunk/KDE/kdebase/workspace/; revision=1158838
2010-08-03 21:33:27 +00:00
Lucas Murray
51168e97a4 Keep the logout effect active until KWin is killed or the user cancels
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
2010-02-01 07:44:27 +00:00
Martin Gräßlin
8cefa7e493 Do a full repaint at end of sliding popups animation and when a window gets deleted to remove artefacts.
As the effect is doing full repaints all the time due to PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS this one extra repaint doesn't matter.
BUG: 215400

svn path=/trunk/KDE/kdebase/workspace/; revision=1080634
2010-01-26 15:57:40 +00:00
Lucas Murray
df2b3170cb Fix conflicts with sliding popups, fade, fall apart, scale in and
explosion by using EffectWindow::data() instead of proxies.
BUG: 222168

svn path=/trunk/KDE/kdebase/workspace/; revision=1072837
2010-01-11 04:52:19 +00:00
Lucas Murray
0b37a8a9c2 Only apply the sliding popups desktop effect to deleted windows that
it's supposed to instead of all of them.

svn path=/trunk/KDE/kdebase/workspace/; revision=1066145
2009-12-26 02:44:34 +00:00
Lucas Murray
c221426b5e Don't access a variable that may not exist.
svn path=/trunk/KDE/kdebase/workspace/; revision=1037434
2009-10-19 05:04:35 +00:00
Lucas Murray
cd9ab34fec Maybe the sliding popups effect was unreferencing the same window
multiple times?
CCBUG: 209723

svn path=/trunk/KDE/kdebase/workspace/; revision=1037432
2009-10-19 05:00:11 +00:00
Lucas Murray
9f05419d06 Unreference window after the window has been rendered.
CCBUG: 209723

svn path=/trunk/KDE/kdebase/workspace/; revision=1036021
2009-10-16 10:20:43 +00:00
Lucas Murray
53986fa859 Prevent window flash that sometimes occurs when a sliding popup window
is closed. Keeps the window transformed even in the last painting pass.

svn path=/trunk/KDE/kdebase/workspace/; revision=1030717
2009-10-03 06:40:10 +00:00
Marco Martin
e35a07a08d reove the window from the ignored list of the fade effect if the sliding
effect gets removed

svn path=/trunk/KDE/kdebase/workspace/; revision=1021482
2009-09-09 10:05:52 +00:00
Marco Martin
f6bf95cb44 add a proxy effect to the fade effect, used to add and remove ignored
windows.
the slidingpopups effect adds its managed windows to the ignored list of
the fadeeffect, making them mutually exclusive

svn path=/trunk/KDE/kdebase/workspace/; revision=1021321
2009-09-08 20:42:45 +00:00
Marco Martin
a9a2108182 make it execute after fade and force opacity=1
svn path=/trunk/KDE/kdebase/workspace/; revision=1018158
2009-09-01 11:34:52 +00:00
Marco Martin
5b61e0909c sync with the fade popup, looks less weird
svn path=/trunk/KDE/kdebase/workspace/; revision=1017403
2009-08-30 15:15:52 +00:00
Marco Martin
ffa58ea60d enable the animation also when the fade effect is disabled
svn path=/trunk/KDE/kdebase/workspace/; revision=1002996
2009-07-27 13:27:16 +00:00
Marco Martin
99e23ca6f7 a new effect: windows with the atom _KDE_SLIDE set on them (composed by
a number identifying north/south/west/east and a screen coord) will
appear with a slide animation.
used for popups that come out of panels

svn path=/trunk/KDE/kdebase/workspace/; revision=1001604
2009-07-23 19:06:50 +00:00