/* * Copyright © 2009 Sam Spilsbury * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose is hereby granted without * fee, provided that the above copyright notice appear in all copies * and that both that copyright notice and this permission notice * appear in supporting documentation, and that the name of * Sam Spilsbury not be used in advertising or publicity pertaining to * distribution of the software without specific, written prior permission. * Sam Spilsbury makes no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. * * SAM SPILSBURY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN * NO EVENT SHALL SAM SPILSBURY BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Author: Sam Spilsbury #include #include class LPScreen : public ScreenInterface, public CompositeScreenInterface, public PrivateHandler , public LazypointerOptions { public: LPScreen (CompScreen *s); CompositeScreen *cScreen; void preparePaint (int); void donePaint (); int destX, destY; int initialX, initialY; Bool needsWarp; /* Actions */ static bool screenInitiate (CompAction *, CompAction::State, CompOption::Vector&); static bool winInitiate (CompAction *, CompAction::State, CompOption::Vector&); static bool leftInitiate (CompAction *, CompAction::State, CompOption::Vector&); static bool rightInitiate (CompAction *, CompAction::State, CompOption::Vector&); static bool upInitiate (CompAction *, CompAction::State, CompOption::Vector&); static bool downInitiate (CompAction *, CompAction::State, CompOption::Vector&); }; class LPWindow : public WindowInterface, public PrivateHandler { public: LPWindow (CompWindow *w); bool focus (); void activate (); bool place (CompPoint &pos); CompWindow *window; }; #define LP_SCREEN(s) \ LPScreen *ls = LPScreen::get (s) #define LP_WINDOW(w) \ LPWindow *lw = LPWindow::get (w) class LPPluginVTable : public CompPlugin::VTableForScreenAndWindow { public: bool init (); PLUGIN_OPTION_HELPER (LPScreen); }; COMPIZ_PLUGIN_20081216 (lazypointer, LPPluginVTable);