summaryrefslogtreecommitdiffstats
path: root/twin
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-12-03 14:52:50 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-12-03 14:52:50 -0600
commit57b56bb3f70096f08aef681d9ed42ea11ba9630b (patch)
tree31e5ee779b74cf4b110aeff26d49d85b93df795c /twin
parent786e248cea658856ef647b7ab8d3e8cf7c057918 (diff)
downloadtdebase-57b56bb3f70096f08aef681d9ed42ea11ba9630b.tar.gz
tdebase-57b56bb3f70096f08aef681d9ed42ea11ba9630b.zip
Fix DCOP interface to window suspend/resume functions
This resolves Bug 1354
Diffstat (limited to 'twin')
-rw-r--r--twin/KWinInterface.h6
-rw-r--r--twin/workspace.cpp21
2 files changed, 18 insertions, 9 deletions
diff --git a/twin/KWinInterface.h b/twin/KWinInterface.h
index 5a270d9f3..ec1d9f1f8 100644
--- a/twin/KWinInterface.h
+++ b/twin/KWinInterface.h
@@ -12,9 +12,9 @@ class KWinInterface : virtual public DCOPObject
virtual ASYNC cascadeDesktop() = 0;
virtual ASYNC unclutterDesktop() = 0;
virtual ASYNC reconfigure() = 0;
- virtual ASYNC killWindow() = 0;
- virtual ASYNC suspendWindow() = 0;
- virtual ASYNC resumeWindow() = 0;
+ virtual ASYNC killWindowId(unsigned long winId) = 0;
+ virtual ASYNC suspendWindowId(unsigned long winId) = 0;
+ virtual ASYNC resumeWindowId(unsigned long winId) = 0;
virtual void refresh() = 0;
virtual void doNotManage(TQString)= 0;
virtual void showWindowMenuAt(unsigned long winId, int x, int y)= 0;
diff --git a/twin/workspace.cpp b/twin/workspace.cpp
index 6781e912e..923e8775a 100644
--- a/twin/workspace.cpp
+++ b/twin/workspace.cpp
@@ -1894,8 +1894,9 @@ void Workspace::killWindowId( Window window_to_kill )
client = findClient( FrameIdMatchPredicate( window ));
if( client != NULL ) // found the client
break;
- Window parent, root;
- Window* children;
+ Window parent = NULL;
+ Window root = NULL;
+ Window* children = NULL;
unsigned int children_count;
XQueryTree( tqt_xdisplay(), window, &root, &parent, &children, &children_count );
if( children != NULL )
@@ -1903,6 +1904,8 @@ void Workspace::killWindowId( Window window_to_kill )
if( window == root ) // we didn't find the client, probably an override-redirect window
break;
window = parent; // go up
+ if( window == NULL )
+ break;
}
if( client != NULL )
client->killWindow();
@@ -1921,8 +1924,9 @@ void Workspace::suspendWindowId( Window window_to_suspend )
client = findClient( FrameIdMatchPredicate( window ));
if( client != NULL ) // found the client
break;
- Window parent, root;
- Window* children;
+ Window parent = NULL;
+ Window root = NULL;
+ Window* children = NULL;
unsigned int children_count;
XQueryTree( tqt_xdisplay(), window, &root, &parent, &children, &children_count );
if( children != NULL )
@@ -1930,6 +1934,8 @@ void Workspace::suspendWindowId( Window window_to_suspend )
if( window == root ) // we didn't find the client, probably an override-redirect window
break;
window = parent; // go up
+ if( window == NULL )
+ break;
}
if( client != NULL )
client->suspendWindow();
@@ -1948,8 +1954,9 @@ void Workspace::resumeWindowId( Window window_to_resume )
client = findClient( FrameIdMatchPredicate( window ));
if( client != NULL ) // found the client
break;
- Window parent, root;
- Window* children;
+ Window parent = NULL;
+ Window root = NULL;
+ Window* children = NULL;
unsigned int children_count;
XQueryTree( tqt_xdisplay(), window, &root, &parent, &children, &children_count );
if( children != NULL )
@@ -1957,6 +1964,8 @@ void Workspace::resumeWindowId( Window window_to_resume )
if( window == root ) // we didn't find the client, probably an override-redirect window
break;
window = parent; // go up
+ if( window == NULL )
+ break;
}
if( client != NULL )
client->resumeWindow();