> On Feb. 7, 2013, 11:12 a.m., Thomas Lübking wrote: > > kwin/effects.h, line 143 > > <http://git.reviewboard.kde.org/r/108513/diff/6/?file=111909#file111909line143> > > > > F*** > > > > I ran into that yesterday and wanted to mention it. > > You forgot to bump the ABI (leading to *very* ominous crash reports > > here ;-)
8faf62d8b42a782ea0b2efe33ef3915342ac3903 - Martin ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/108513/#review26832 ----------------------------------------------------------- On Feb. 4, 2013, 9:50 a.m., Martin Gräßlin wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > http://git.reviewboard.kde.org/r/108513/ > ----------------------------------------------------------- > > (Updated Feb. 4, 2013, 9:50 a.m.) > > > Review request for kwin, Plasma and Arthur Arlt. > > > Description > ------- > > Screen Edges may belong to fullscreen windows > > Corners are still ours (it's a valid use case to still be able to switch > window through e.g. Present Windows even when running a fullscreen app). > > How is it done? An Edge can be blocked and does no longer trigger if it > is blocked. For WindowBasedEdges the edge windows get unmapped in the > blocking case and mapped again when the blocking condition is no longer > valid. > > The blocking is so far connected to: > * changes of active window > * changes of fullscreen windows > > Whenever one of the events occurs it is checked whether there is: > 1. an active client > 2. it is fullscreen > 3. on the same screen as the edge > > If this is the case the edge will be blocked, otherwise unblocked. > > New Glow on approaching Screen Edge Effect > > Feature stolen from hidden Plasma Panel now available for all edges on > approach by mouse. > > Split out event handling in ScreenEdges in separate methods > > Allows to also support xcb_generic_event_t in addition to XEvent. > > Notifications when approaching a screen edge > > For each edge an additional "approach" area window is created. When the > mouse enters this approach window, it gets unmapped and a mouse polling > interval is started. If the mouse leaves the approach area again, the > window gets mapped again and the mouse polling is stopped. > > During the approaching a signal is emitted with a factor in [0.0,1.0] to > describe how close the mouse is to the edge. 0.0 means far away, 1.0 > means triggering the edge. This signal is passed to the effects to allow > using this information. E.g. to provide a glow corner effect or to make > use of it in the cube animation effect to start the animation on desktop > switch. > > Turn ScreenEdges into a Singleton > > In fact it already used to be a Singleton as there is just one object > hold by the Singleton Workspace. So let's make it a proper Singleton > following our kind of standard approach of having a ::create factory > method called from Workspace ctor and a ::self to get to the singleton > instance. > > Change the way how screen edges interact with Effects/Scripts > > The main difference is that the activation of an edge is no longer > broadcasted to all effects and scripts, but instead a passed in slot of > the Effect/Script is invoked. > > For this the EffectsHandler API is changed to take the Effect as an > argument to (un)reserveElectricBorder. As callback slot the existing > borderActivated is used. > > In addition the ScreenEdge monitors the object for beeing destroyed and > unregisters the the edge automatically. This removes the need from the > Effect to call unregister in the dtor. > > BUG: 309695 > FIXED-IN: 4.11 > > Rewrite of KWin's Screen Edge Handling > > This rewrite is mostly motivated by the need to handle multi screen > setups correctly. That is have edges per screen and not for the combined > geometry. Also porting from XLib to XCB has been a motivation for the > rewrite. > > The design of the new ScreenEdge handling is described in the > documentation of ScreenEdges in screenedge.h. > > In addition the following changes have been performed: > * move configuration from Options to ScreenEdge > * add screen edge information to Workspace::supportInformation (obviously > replaces what had been read from Options) > * have Workspace hold a pointer to ScreenEdges instead of an object > * forward declaration of ScreenEdges in workspaces.h, this explains the > seemingly unrelated changes of just another include in some files > > BUG: 290887 > FIXED-IN: 4.11 > > Do not update screen edges when compositing settings changes > > The comment says it all: update all settings which can be done through > the compositing KCM. Years ago screen edges was in the composite KCM, but > it no longer is. So there is no need to update the edges when the > compositing settings changes. > > Remove interaction of quick tiling with ScreenEdges > > Quick tiling/maximizing of Clients is completely independent of the > screen edges functionality. That is it determines the borders itself. > Nevertheless there has been some code still around which interacted with > the screen edges each time a window was moved. This code is completely > useless. > > Remove unused screen edge related methods from kwineffects interface > > No effect has ever used these methods and there is no reason why an > effect should use them. Reserve/unreserve is sufficient as the effect > will be notified anyway. > > Adding some convenient functions to wrap xcb calls > > Commonly needed functionality, like > * move/resize windows > * restack windows > * restack to top of stack > > > This addresses bugs 271607, 290887 and 309695. > http://bugs.kde.org/show_bug.cgi?id=271607 > http://bugs.kde.org/show_bug.cgi?id=290887 > http://bugs.kde.org/show_bug.cgi?id=309695 > > > Diffs > ----- > > kwin/composite.cpp c27b37f21ec946775497047837c00dc7107c7756 > kwin/effects.h 8d721fceef3e0a041e5a38088aef0de3a897d58d > kwin/effects.cpp 6845b748e46d0ffec42af58987dd255ff7a03bbb > kwin/effects/CMakeLists.txt b8d458e6be6397330c10a7d4ab7a4fe8f1e52ffe > kwin/effects/cube/cube.cpp 3fffbd0577194c8c16bf608a04a2eeedd84b3ba1 > kwin/effects/desktopgrid/desktopgrid.cpp > 187d0588bf1e4a59ce442f7606c2da6e181a8f03 > kwin/effects/flipswitch/flipswitch.cpp > 445405edb93c39d9e776e6bb7ae40a233a6ab740 > kwin/effects/presentwindows/presentwindows.cpp > de325df2451f47bca6effeeedefea960bc3ce089 > kwin/effects/screenedge/CMakeLists.txt PRE-CREATION > kwin/effects/screenedge/screenedgeeffect.cpp PRE-CREATION > kwin/effects/screenedge/screenedgeeffect.desktop PRE-CREATION > kwin/effects/screenedge/screenedgeeffect.h PRE-CREATION > kwin/events.cpp a39aec07fc9f69438eb38d5569ba4ee0a218db42 > kwin/geometry.cpp 7eb7e94d2804aa512b3da23b81c40ffe4b899811 > kwin/layers.cpp 05b3d6dd0a6349a58eaf7a0b6a275b3ea6efde8b > kwin/libkwineffects/kwineffects.h 423cfd1140ff4a01fa3e06036383a9ce665b4da7 > kwin/options.h f458637b7f7f8210f6c9de3497ad1d49df8261c0 > kwin/options.cpp 41dda403ce694c7820b8ee04f22f92b99559c1e2 > kwin/screenedge.h 6dd1956332958d11e768c01eb3f91ae411a5cc77 > kwin/screenedge.cpp fb6209c1994345cf36da8dbcf097bb3596890cf3 > kwin/scripting/scriptedeffect.h 830997b50b2f2d1eaf2aa828b94b110612b2080b > kwin/scripting/scriptedeffect.cpp e9c05091087c8303da53d998d06dc46748b9fdce > kwin/scripting/scripting.h 077fe667dbf76e4165f10f0f19c8700e54e1350e > kwin/scripting/scripting.cpp 6c6e258656eb62bf5811984472f0d0776420b4d5 > kwin/scripting/scriptingutils.h 3ed78458131a7fb535e38a08f3c6e7467e9e231b > kwin/workspace.h b26725d0afdcba339aa79348e824bacaec13f32f > kwin/workspace.cpp 9183fd66dace05db6d2ad0b55c4c26e1a288ce95 > kwin/xcbutils.h 31bd949b3404d62d8319f0acea521e90a1cfdbeb > > Diff: http://git.reviewboard.kde.org/r/108513/diff/ > > > Testing > ------- > > * effects on various edges > * action on one edge > * activated/deactivated actions > * turned on off screen > * switch desktop (terrible feature) > * switch desktop when moving Clients > > TODO: unit test for base functionality > > > Thanks, > > Martin Gräßlin > >
_______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel