summaryrefslogtreecommitdiffstats
path: root/twin/workspace.cpp
diff options
context:
space:
mode:
authorDarrell Anderson <humanreadable@yahoo.com>2012-12-26 13:35:30 -0600
committerDarrell Anderson <humanreadable@yahoo.com>2012-12-26 13:35:30 -0600
commit4d3d2420430fb53000ceda25ae7498e49f6e94b2 (patch)
treef350afc9cba3f615fa3c982b73e57b2272fa8a47 /twin/workspace.cpp
parentf5c55ca4ce9587598ce81399c2196c876ec55942 (diff)
parent0ef12d60c85f58af9052d83ce1945d71afe16cb4 (diff)
downloadtdebase-4d3d2420430fb53000ceda25ae7498e49f6e94b2.tar.gz
tdebase-4d3d2420430fb53000ceda25ae7498e49f6e94b2.zip
Merge branch 'master' of http://scm.trinitydesktop.org/scm/git/tdebase
Diffstat (limited to 'twin/workspace.cpp')
-rw-r--r--twin/workspace.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/twin/workspace.cpp b/twin/workspace.cpp
index 643395e88..cc109918c 100644
--- a/twin/workspace.cpp
+++ b/twin/workspace.cpp
@@ -1974,6 +1974,37 @@ void Workspace::resumeWindowId( Window window_to_resume )
}
+bool Workspace::isResumeableWindowID( Window window_to_check )
+ {
+ if( window_to_check == None )
+ return false;
+ Window window = window_to_check;
+ Client* client = NULL;
+ for(;;)
+ {
+ client = findClient( FrameIdMatchPredicate( window ));
+ if( client != NULL ) // found the client
+ break;
+ 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 )
+ XFree( children );
+ 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 )
+ return client->isResumeable();
+ else
+ return false;
+ }
+
+
void Workspace::sendPingToWindow( Window window, Time timestamp )
{
rootInfo->sendPing( window, timestamp );