kwin Library API Documentation

options.h

00001 /*****************************************************************
00002  KWin - the KDE window manager
00003  This file is part of the KDE project.
00004 
00005 Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
00006 Copyright (C) 2003 Lubos Lunak <l.lunak@kde.org>
00007 
00008 You can Freely distribute this program under the GNU General Public
00009 License. See the file "COPYING" for the exact licensing terms.
00010 ******************************************************************/
00011 
00012 #ifndef KWIN_OPTIONS_H
00013 #define KWIN_OPTIONS_H
00014 
00015 #include <qobject.h>
00016 #include <qfont.h>
00017 #include <qpalette.h>
00018 #include <qstringlist.h>
00019 #include <kdecoration_p.h>
00020 
00021 namespace KWinInternal
00022 {
00023 
00024 class Client;
00025 
00026 class Options : public KDecorationOptions 
00027     {
00028     public:
00029 
00030         Options();
00031         ~Options();
00032 
00033         virtual unsigned long updateSettings();
00034 
00066         enum FocusPolicy { ClickToFocus, FocusFollowsMouse, FocusUnderMouse, FocusStrictlyUnderMouse };
00067         FocusPolicy focusPolicy;
00068 
00069 
00074         bool clickRaise;
00075 
00079         bool autoRaise;
00080 
00084         int autoRaiseInterval;
00085 
00089         bool shadeHover;
00090 
00094         int shadeHoverInterval;
00095 
00113         enum AltTabStyle { KDE, CDE };
00114         AltTabStyle altTabStyle;
00115 
00119         bool xineramaEnabled;
00120         bool xineramaPlacementEnabled;
00121         bool xineramaMovementEnabled;
00122         bool xineramaMaximizeEnabled;
00123 
00127         enum MoveResizeMode { Transparent, Opaque };
00128 
00129         MoveResizeMode resizeMode;
00130         MoveResizeMode moveMode;
00131 
00138         enum PlacementPolicy { Random, Smart, Cascade, Centered, ZeroCornered };
00139         PlacementPolicy placement;
00140 
00141         bool focusPolicyIsReasonable() 
00142             {
00143             return focusPolicy == ClickToFocus || focusPolicy == FocusFollowsMouse;
00144             }
00145 
00149         bool animateShade;
00150 
00154         int borderSnapZone;
00155 
00159         int windowSnapZone;
00160 
00161 
00165         bool snapOnlyWhenOverlapping;
00166 
00170         bool  animateMinimize;
00171 
00175         int animateMinimizeSpeed;
00176 
00180         bool rollOverDesktops;
00181 
00182         // 0 - 4 , see Workspace::allowClientActivation()
00183         int focusStealingPreventionLevel;
00184 
00188         QStringList ignorePositionClasses;
00189         
00190         bool checkIgnoreFocusStealing( const Client* c );
00191 
00192         WindowOperation operationTitlebarDblClick() { return OpTitlebarDblClick; }
00193 
00194         enum MouseCommand 
00195             {
00196             MouseRaise, MouseLower, MouseOperationsMenu, MouseToggleRaiseAndLower,
00197             MouseActivateAndRaise, MouseActivateAndLower, MouseActivate,
00198             MouseActivateRaiseAndPassClick, MouseActivateAndPassClick,
00199             MouseMove, MouseUnrestrictedMove,
00200             MouseActivateRaiseAndMove, MouseActivateRaiseAndUnrestrictedMove,
00201             MouseResize, MouseUnrestrictedResize,
00202             MouseShade,
00203             MouseMinimize,
00204             MouseNothing
00205             };
00206 
00207         MouseCommand commandActiveTitlebar1() { return CmdActiveTitlebar1; }
00208         MouseCommand commandActiveTitlebar2() { return CmdActiveTitlebar2; }
00209         MouseCommand commandActiveTitlebar3() { return CmdActiveTitlebar3; }
00210         MouseCommand commandInactiveTitlebar1() { return CmdInactiveTitlebar1; }
00211         MouseCommand commandInactiveTitlebar2() { return CmdInactiveTitlebar2; }
00212         MouseCommand commandInactiveTitlebar3() { return CmdInactiveTitlebar3; }
00213         MouseCommand commandWindow1() { return CmdWindow1; }
00214         MouseCommand commandWindow2() { return CmdWindow2; }
00215         MouseCommand commandWindow3() { return CmdWindow3; }
00216         MouseCommand commandAll1() { return CmdAll1; }
00217         MouseCommand commandAll2() { return CmdAll2; }
00218         MouseCommand commandAll3() { return CmdAll3; }
00219         uint keyCmdAllModKey() { return CmdAllModKey; }
00220 
00221 
00222         static WindowOperation windowOperation(const QString &name, bool restricted );
00223         static MouseCommand mouseCommand(const QString &name, bool restricted );
00224 
00229         bool showGeometryTip();
00230 
00231         enum { ElectricDisabled = 0, ElectricMoveOnly = 1, ElectricAlways = 2 };
00237         int electricBorders();
00238 
00242         int electricBorderDelay();
00243         
00244         bool topMenuEnabled() const { return topmenus; }
00245         bool desktopTopMenu() const { return desktop_topmenu; }
00246 
00247     private:
00248         WindowOperation OpTitlebarDblClick;
00249 
00250     // mouse bindings
00251         MouseCommand CmdActiveTitlebar1;
00252         MouseCommand CmdActiveTitlebar2;
00253         MouseCommand CmdActiveTitlebar3;
00254         MouseCommand CmdInactiveTitlebar1;
00255         MouseCommand CmdInactiveTitlebar2;
00256         MouseCommand CmdInactiveTitlebar3;
00257         MouseCommand CmdWindow1;
00258         MouseCommand CmdWindow2;
00259         MouseCommand CmdWindow3;
00260         MouseCommand CmdAll1;
00261         MouseCommand CmdAll2;
00262         MouseCommand CmdAll3;
00263         uint CmdAllModKey;
00264 
00265         int electric_borders;
00266         int electric_border_delay;
00267         bool show_geometry_tip;
00268         bool topmenus;
00269         bool desktop_topmenu;
00270         // List of window classes for which not to use focus stealing prevention
00271         QStringList ignoreFocusStealingClasses;
00272     };
00273 
00274 extern Options* options;
00275 
00276 } // namespace
00277 
00278 #endif
KDE Logo
This file is part of the documentation for kwin Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Apr 29 21:20:53 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003