diff options
Diffstat (limited to 'kwin/options.cpp')
-rw-r--r-- | kwin/options.cpp | 421 |
1 files changed, 0 insertions, 421 deletions
diff --git a/kwin/options.cpp b/kwin/options.cpp deleted file mode 100644 index 4f51bc1cd..000000000 --- a/kwin/options.cpp +++ /dev/null @@ -1,421 +0,0 @@ -/***************************************************************** - KWin - the KDE window manager - This file is part of the KDE project. - -Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org> -Copyright (C) 2003 Lubos Lunak <l.lunak@kde.org> - -You can Freely distribute this program under the GNU General Public -License. See the file "COPYING" for the exact licensing terms. -******************************************************************/ - -#include "options.h" - -#ifndef KCMRULES - -#include <tqpalette.h> -#include <tqpixmap.h> -#include <kapplication.h> -#include <kconfig.h> -#include <kglobal.h> -#include <kglobalsettings.h> -#include <tqtooltip.h> - -#include "client.h" - -#endif - -namespace KWinInternal -{ - -#ifndef KCMRULES - -Options::Options() - : electric_borders( 0 ), - electric_border_delay(0) - { - d = new KDecorationOptionsPrivate; - d->defaultKWinSettings(); - updateSettings(); - } - -Options::~Options() - { - delete d; - } - -unsigned long Options::updateSettings() - { - KConfig *config = KGlobal::config(); - unsigned long changed = 0; - changed |= d->updateKWinSettings( config ); // read decoration settings - - config->setGroup( "Windows" ); - moveMode = stringToMoveResizeMode( config->readEntry("MoveMode", "Opaque" )); - resizeMode = stringToMoveResizeMode( config->readEntry("ResizeMode", "Opaque" )); - show_geometry_tip = config->readBoolEntry("GeometryTip", false); - tabboxOutline = config->readBoolEntry("TabboxOutline", true); - - TQString val; - - val = config->readEntry ("FocusPolicy", "ClickToFocus"); - focusPolicy = ClickToFocus; // what a default :-) - if ( val == "FocusFollowsMouse" ) - focusPolicy = FocusFollowsMouse; - else if ( val == "FocusUnderMouse" ) - focusPolicy = FocusUnderMouse; - else if ( val == "FocusStrictlyUnderMouse" ) - focusPolicy = FocusStrictlyUnderMouse; - - val = config->readEntry ("AltTabStyle", "KDE"); - altTabStyle = KDE; // what a default :-) - if ( val == "CDE" ) - altTabStyle = CDE; - - separateScreenFocus = config->readBoolEntry( "SeparateScreenFocus", false ); - activeMouseScreen = config->readBoolEntry( "ActiveMouseScreen", focusPolicy != ClickToFocus ); - - rollOverDesktops = config->readBoolEntry("RollOverDesktops", TRUE); - -// focusStealingPreventionLevel = config->readNumEntry( "FocusStealingPreventionLevel", 2 ); - // TODO use low level for now - focusStealingPreventionLevel = config->readNumEntry( "FocusStealingPreventionLevel", 1 ); - focusStealingPreventionLevel = KMAX( 0, KMIN( 4, focusStealingPreventionLevel )); - if( !focusPolicyIsReasonable()) // #48786, comments #7 and later - focusStealingPreventionLevel = 0; - - KConfig *gc = new KConfig("kdeglobals", false, false); - gc->setGroup("Windows"); - xineramaEnabled = gc->readBoolEntry ("XineramaEnabled", true ); - xineramaPlacementEnabled = gc->readBoolEntry ("XineramaPlacementEnabled", true); - xineramaMovementEnabled = gc->readBoolEntry ("XineramaMovementEnabled", true); - xineramaMaximizeEnabled = gc->readBoolEntry ("XineramaMaximizeEnabled", true); - xineramaFullscreenEnabled = gc->readBoolEntry ("XineramaFullscreenEnabled", true); - delete gc; - - placement = Placement::policyFromString( config->readEntry("Placement"), true ); - xineramaPlacementScreen = KCLAMP( config->readNumEntry( "XineramaPlacementScreen", -1 ), - -1, tqApp->desktop()->numScreens() - 1 ); - - animateShade = config->readBoolEntry("AnimateShade", TRUE ); - animateMinimize = config->readBoolEntry("AnimateMinimize", TRUE ); - animateMinimizeSpeed = config->readNumEntry("AnimateMinimizeSpeed", 5 ); - - if( focusPolicy == ClickToFocus ) - { - autoRaise = false; - autoRaiseInterval = 0; - delayFocus = false; - delayFocusInterval = 0; - } - else - { - autoRaise = config->readBoolEntry("AutoRaise", FALSE ); - autoRaiseInterval = config->readNumEntry("AutoRaiseInterval", 0 ); - delayFocus = config->readBoolEntry("DelayFocus", FALSE ); - delayFocusInterval = config->readNumEntry("DelayFocusInterval", 0 ); - } - - shadeHover = config->readBoolEntry("ShadeHover", FALSE ); - shadeHoverInterval = config->readNumEntry("ShadeHoverInterval", 250 ); - - // important: autoRaise implies ClickRaise - clickRaise = autoRaise || config->readBoolEntry("ClickRaise", TRUE ); - - borderSnapZone = config->readNumEntry("BorderSnapZone", 10); - windowSnapZone = config->readNumEntry("WindowSnapZone", 10); - snapOnlyWhenOverlapping=config->readBoolEntry("SnapOnlyWhenOverlapping",FALSE); - electric_borders = config->readNumEntry("ElectricBorders", 0); - electric_border_delay = config->readNumEntry("ElectricBorderDelay", 150); - - OpTitlebarDblClick = windowOperation( config->readEntry("TitlebarDoubleClickCommand", "Shade"), true ); - d->OpMaxButtonLeftClick = windowOperation( config->readEntry("MaximizeButtonLeftClickCommand", "Maximize"), true ); - d->OpMaxButtonMiddleClick = windowOperation( config->readEntry("MaximizeButtonMiddleClickCommand", "Maximize (vertical only)"), true ); - d->OpMaxButtonRightClick = windowOperation( config->readEntry("MaximizeButtonRightClickCommand", "Maximize (horizontal only)"), true ); - - ignorePositionClasses = config->readListEntry("IgnorePositionClasses"); - ignoreFocusStealingClasses = config->readListEntry("IgnoreFocusStealingClasses"); - // Qt3.2 and older had resource class all lowercase, but Qt3.3 has it capitalized - // therefore Client::resourceClass() forces lowercase, force here lowercase as well - for( TQStringList::Iterator it = ignorePositionClasses.begin(); - it != ignorePositionClasses.end(); - ++it ) - (*it) = (*it).lower(); - for( TQStringList::Iterator it = ignoreFocusStealingClasses.begin(); - it != ignoreFocusStealingClasses.end(); - ++it ) - (*it) = (*it).lower(); - - killPingTimeout = config->readNumEntry( "KillPingTimeout", 5000 ); - hideUtilityWindowsForInactive = config->readBoolEntry( "HideUtilityWindowsForInactive", true ); - showDesktopIsMinimizeAll = config->readBoolEntry( "ShowDesktopIsMinimizeAll", false ); - - // Mouse bindings - config->setGroup( "MouseBindings"); - CmdActiveTitlebar1 = mouseCommand(config->readEntry("CommandActiveTitlebar1","Raise"), true ); - CmdActiveTitlebar2 = mouseCommand(config->readEntry("CommandActiveTitlebar2","Lower"), true ); - CmdActiveTitlebar3 = mouseCommand(config->readEntry("CommandActiveTitlebar3","Operations menu"), true ); - CmdInactiveTitlebar1 = mouseCommand(config->readEntry("CommandInactiveTitlebar1","Activate and raise"), true ); - CmdInactiveTitlebar2 = mouseCommand(config->readEntry("CommandInactiveTitlebar2","Activate and lower"), true ); - CmdInactiveTitlebar3 = mouseCommand(config->readEntry("CommandInactiveTitlebar3","Operations menu"), true ); - CmdTitlebarWheel = mouseWheelCommand(config->readEntry("CommandTitlebarWheel","Nothing")); - CmdWindow1 = mouseCommand(config->readEntry("CommandWindow1","Activate, raise and pass click"), false ); - CmdWindow2 = mouseCommand(config->readEntry("CommandWindow2","Activate and pass click"), false ); - CmdWindow3 = mouseCommand(config->readEntry("CommandWindow3","Activate and pass click"), false ); - CmdAllModKey = (config->readEntry("CommandAllKey","Alt") == "Meta") ? Qt::Key_Meta : Qt::Key_Alt; - CmdAll1 = mouseCommand(config->readEntry("CommandAll1","Move"), false ); - CmdAll2 = mouseCommand(config->readEntry("CommandAll2","Toggle raise and lower"), false ); - CmdAll3 = mouseCommand(config->readEntry("CommandAll3","Resize"), false ); - CmdAllWheel = mouseWheelCommand(config->readEntry("CommandAllWheel","Nothing")); - - //translucency settings - config->setGroup( "Notification Messages" ); - useTranslucency = config->readBoolEntry("UseTranslucency", false); - config->setGroup( "Translucency"); - translucentActiveWindows = config->readBoolEntry("TranslucentActiveWindows", false); - activeWindowOpacity = uint((config->readNumEntry("ActiveWindowOpacity", 100)/100.0)*0xFFFFFFFF); - translucentInactiveWindows = config->readBoolEntry("TranslucentInactiveWindows", false); - inactiveWindowOpacity = uint((config->readNumEntry("InactiveWindowOpacity", 75)/100.0)*0xFFFFFFFF); - translucentMovingWindows = config->readBoolEntry("TranslucentMovingWindows", false); - movingWindowOpacity = uint((config->readNumEntry("MovingWindowOpacity", 50)/100.0)*0xFFFFFFFF); - translucentDocks = config->readBoolEntry("TranslucentDocks", false); - dockOpacity = uint((config->readNumEntry("DockOpacity", 80)/100.0)*0xFFFFFFFF); - keepAboveAsActive = config->readBoolEntry("TreatKeepAboveAsActive", true); - //TODO: remove this variable - useTitleMenuSlider = true; - activeWindowShadowSize = config->readNumEntry("ActiveWindowShadowSize", 200); - inactiveWindowShadowSize = config->readNumEntry("InactiveWindowShadowSize", 100); - dockShadowSize = config->readNumEntry("DockShadowSize", 80); - menuShadowSize = config->readNumEntry("MenuShadowSize", 80); - removeShadowsOnMove = config->readBoolEntry("RemoveShadowsOnMove", true); - removeShadowsOnResize = config->readBoolEntry("RemoveShadowsOnResize", true); - onlyDecoTranslucent = config->readBoolEntry("OnlyDecoTranslucent",false); - resetKompmgr = config->readBoolEntry("ResetKompmgr", false); - if (resetKompmgr) - config->writeEntry("ResetKompmgr",FALSE); - - // window drop shadows - config->setGroup("Style"); - shadow_colour = config->readColorEntry("ShadowColour", &TQt::black); - shadow_docks = config->readBoolEntry("ShadowDocks", false); - shadow_menus = config->readBoolEntry("ShadowMenus", false); - shadow_overrides = config->readBoolEntry("ShadowOverrides", false); - shadow_topMenus = config->readBoolEntry("ShadowTopMenus", false); - shadow_inactive_colour = config->readColorEntry("InactiveShadowColour", &TQt::black); - shadow_inactive_enabled = config->readBoolEntry("InactiveShadowEnabled", false); - shadow_inactive_opacity = config->readDoubleNumEntry("InactiveShadowOpacity", 0.70); - shadow_inactive_thickness = config->readNumEntry("InactiveShadowThickness", 5); - shadow_inactive_x_offset = config->readNumEntry("InactiveShadowXOffset", 0); - shadow_inactive_y_offset = config->readNumEntry("InactiveShadowYOffset", 5); - shadow_enabled = config->readBoolEntry("ShadowEnabled", false); - shadow_opacity = config->readDoubleNumEntry("ShadowOpacity", 0.70); - shadow_thickness = config->readNumEntry("ShadowThickness", 10); - shadow_x_offset = config->readNumEntry("ShadowXOffset", 0); - shadow_y_offset = config->readNumEntry("ShadowYOffset", 10); - - - // Read button tooltip animation effect from kdeglobals - // Since we want to allow users to enable window decoration tooltips - // and not kstyle tooltips and vise-versa, we don't read the - // "EffectNoTooltip" setting from kdeglobals. - KConfig globalConfig("kdeglobals"); - globalConfig.setGroup("KDE"); - topmenus = globalConfig.readBoolEntry( "macStyle", false ); - - KConfig kdesktopcfg( "kdesktoprc", true ); - kdesktopcfg.setGroup( "Menubar" ); - desktop_topmenu = kdesktopcfg.readBoolEntry( "ShowMenubar", false ); - if( desktop_topmenu ) - topmenus = true; - - TQToolTip::setGloballyEnabled( d->show_tooltips ); - - return changed; - } - - -// restricted should be true for operations that the user may not be able to repeat -// if the window is moved out of the workspace (e.g. if the user moves a window -// by the titlebar, and moves it too high beneath Kicker at the top edge, they -// may not be able to move it back, unless they know about Alt+LMB) -Options::WindowOperation Options::windowOperation(const TQString &name, bool restricted ) - { - if (name == "Move") - return restricted ? MoveOp : UnrestrictedMoveOp; - else if (name == "Resize") - return restricted ? ResizeOp : UnrestrictedResizeOp; - else if (name == "Maximize") - return MaximizeOp; - else if (name == "Minimize") - return MinimizeOp; - else if (name == "Close") - return CloseOp; - else if (name == "OnAllDesktops") - return OnAllDesktopsOp; - else if (name == "Shade") - return ShadeOp; - else if (name == "Operations") - return OperationsOp; - else if (name == "Maximize (vertical only)") - return VMaximizeOp; - else if (name == "Maximize (horizontal only)") - return HMaximizeOp; - else if (name == "Lower") - return LowerOp; - else if (name == "Shadow") - return ShadowOp; - return NoOp; - } - -Options::MouseCommand Options::mouseCommand(const TQString &name, bool restricted ) - { - TQString lowerName = name.lower(); - if (lowerName == "raise") return MouseRaise; - if (lowerName == "lower") return MouseLower; - if (lowerName == "operations menu") return MouseOperationsMenu; - if (lowerName == "toggle raise and lower") return MouseToggleRaiseAndLower; - if (lowerName == "activate and raise") return MouseActivateAndRaise; - if (lowerName == "activate and lower") return MouseActivateAndLower; - if (lowerName == "activate") return MouseActivate; - if (lowerName == "activate, raise and pass click") return MouseActivateRaiseAndPassClick; - if (lowerName == "activate and pass click") return MouseActivateAndPassClick; - if (lowerName == "activate, raise and move") - return restricted ? MouseActivateRaiseAndMove : MouseActivateRaiseAndUnrestrictedMove; - if (lowerName == "move") return restricted ? MouseMove : MouseUnrestrictedMove; - if (lowerName == "resize") return restricted ? MouseResize : MouseUnrestrictedResize; - if (lowerName == "shade") return MouseShade; - if (lowerName == "minimize") return MouseMinimize; - if (lowerName == "nothing") return MouseNothing; - return MouseNothing; - } - -Options::MouseWheelCommand Options::mouseWheelCommand(const TQString &name) - { - TQString lowerName = name.lower(); - if (lowerName == "raise/lower") return MouseWheelRaiseLower; - if (lowerName == "shade/unshade") return MouseWheelShadeUnshade; - if (lowerName == "maximize/restore") return MouseWheelMaximizeRestore; - if (lowerName == "above/below") return MouseWheelAboveBelow; - if (lowerName == "previous/next desktop") return MouseWheelPreviousNextDesktop; - if (lowerName == "change opacity") return MouseWheelChangeOpacity; - return MouseWheelNothing; - } - -bool Options::showGeometryTip() - { - return show_geometry_tip; - } - -TQColor &Options::shadowColour(bool active) - { - return active ? shadow_colour : shadow_inactive_colour; - } - -bool Options::shadowWindowType(NET::WindowType t) - { - bool retval; - - switch (t) - { - case NET::Dialog: - case NET::Normal: - retval = true; - break; - case NET::Desktop: - case NET::Menu: - retval = shadow_menus; - break; - case NET::Toolbar: - retval = false; - break; - case NET::Dock: - retval = shadow_docks; - break; - case NET::Override: - retval = shadow_overrides; - break; - case NET::TopMenu: - retval = shadow_topMenus; - break; - default: - retval = false; - break; - } - - return retval; - } - -bool Options::shadowEnabled(bool active) - { - return active ? shadow_enabled : - (shadow_enabled && shadow_inactive_enabled); - } - -double Options::shadowOpacity(bool active) - { - return active ? shadow_opacity : shadow_inactive_opacity; - } - -int Options::shadowThickness(bool active) - { - return active ? shadow_thickness : shadow_inactive_thickness; - } - -int Options::shadowXOffset(bool active) - { - return active ? shadow_x_offset : shadow_inactive_x_offset; - } - -int Options::shadowYOffset(bool active) - { - return active ? shadow_y_offset : shadow_inactive_y_offset; - } - -int Options::electricBorders() - { - return electric_borders; - } - -int Options::electricBorderDelay() - { - return electric_border_delay; - } - -bool Options::checkIgnoreFocusStealing( const Client* c ) - { - return ignoreFocusStealingClasses.contains(TQString::tqfromLatin1(c->resourceClass())); - } - -Options::MouseCommand Options::wheelToMouseCommand( MouseWheelCommand com, int delta ) - { - switch( com ) - { - case MouseWheelRaiseLower: - return delta > 0 ? MouseRaise : MouseLower; - case MouseWheelShadeUnshade: - return delta > 0 ? MouseSetShade : MouseUnsetShade; - case MouseWheelMaximizeRestore: - return delta > 0 ? MouseMaximize : MouseRestore; - case MouseWheelAboveBelow: - return delta > 0 ? MouseAbove : MouseBelow; - case MouseWheelPreviousNextDesktop: - return delta > 0 ? MousePreviousDesktop : MouseNextDesktop; - case MouseWheelChangeOpacity: - return delta > 0 ? MouseOpacityMore : MouseOpacityLess; - default: - return MouseNothing; - } - } -#endif - -Options::MoveResizeMode Options::stringToMoveResizeMode( const TQString& s ) - { - return s == "Opaque" ? Opaque : Transparent; - } - -const char* Options::moveResizeModeToString( MoveResizeMode mode ) - { - return mode == Opaque ? "Opaque" : "Transparent"; - } - -} // namespace |