From ed2d087f9b16beb3c2dcf66335098324a03713d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Mon, 19 May 2008 21:48:47 +0000 Subject: [PATCH] Shortcut for temporarily suspending compositing. Useful when one wants to run something graphically intensive like a game or when compositing goes awry and one wants to see the checkbox that turns it off. FEATURE: 155581 svn path=/trunk/KDE/kdebase/workspace/; revision=810031 --- composite.cpp | 13 +++++++++++++ kwinbindings.cpp | 1 + workspace.cpp | 3 ++- workspace.h | 2 ++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/composite.cpp b/composite.cpp index 27ad7770a2..5dbc3160ff 100644 --- a/composite.cpp +++ b/composite.cpp @@ -87,6 +87,11 @@ void Workspace::setupCompositing() kDebug( 1212 ) << "Compositing is turned off in options"; return; } + else if( compositingSuspended ) + { + kDebug( 1212 ) << "Compositing is suspended"; + return; + } else if( !CompositingPrefs::compositingPossible() ) { kError( 1212 ) << "Compositing is not possible"; @@ -257,6 +262,14 @@ void Workspace::lostCMSelection() finishCompositing(); } +// for the shortcut +void Workspace::slotToggleCompositing() + { + compositingSuspended = !compositingSuspended; + finishCompositing(); + setupCompositing(); // will do nothing if suspended + } + void Workspace::addRepaint( int x, int y, int w, int h ) { if( !compositing()) diff --git a/kwinbindings.cpp b/kwinbindings.cpp index 0e8c7e1a85..4eda46ef04 100644 --- a/kwinbindings.cpp +++ b/kwinbindings.cpp @@ -195,6 +195,7 @@ along with this program. If not, see . DEF( I18N_NOOP("Window Screenshot to Clipboard"), Qt::ALT+Qt::Key_Print, slotGrabWindow() ); DEF( I18N_NOOP("Desktop Screenshot to Clipboard"), Qt::CTRL+Qt::Key_Print, slotGrabDesktop() ); DEF( I18N_NOOP("Block Global Shortcuts"), 0, slotDisableGlobalShortcuts()); + DEF( I18N_NOOP("Suspend Compositing"), Qt::SHIFT+Qt::ALT+Qt::Key_F12, slotToggleCompositing()); #undef DEF #undef DEF2 diff --git a/workspace.cpp b/workspace.cpp index 35ef19fd49..7e1c2ee061 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -134,6 +134,7 @@ Workspace::Workspace( bool restore ) block_stacking_updates( 0 ), forced_global_mouse_grab( false ), cm_selection( NULL ), + compositingSuspended( false ), compositeRate( 0 ), overlay( None ), overlay_visible( true ), @@ -1034,7 +1035,7 @@ void Workspace::slotReconfigure() updateCurrentTopMenu(); } - if( options->useCompositing ) + if( options->useCompositing && !compositingSuspended ) { setupCompositing(); if( effects ) // setupCompositing() may fail diff --git a/workspace.h b/workspace.h index 2bcbcaa19d..29effa5a26 100644 --- a/workspace.h +++ b/workspace.h @@ -456,6 +456,7 @@ class Workspace : public QObject, public KDecorationDefines void slotSetupWindowShortcut(); void setupWindowShortcutDone( bool ); + void slotToggleCompositing(); void updateClientArea(); @@ -718,6 +719,7 @@ class Workspace : public QObject, public KDecorationDefines friend class StackingUpdatesBlocker; KSelectionOwner* cm_selection; + bool compositingSuspended; QTimer compositeTimer; QTime lastCompositePaint; int compositeRate;