One change that was supposed to go with r603295.

svn path=/trunk/KDE/kdebase/workspace/; revision=603296
This commit is contained in:
Luboš Luňák 2006-11-08 14:09:06 +00:00
parent 3a0e22ebe3
commit 3f0d6b97c1

View file

@ -38,25 +38,17 @@ bool Client::manage( Window w, bool isMapped )
{ {
StackingUpdatesBlocker stacking_blocker( workspace()); StackingUpdatesBlocker stacking_blocker( workspace());
grabXServer();
XWindowAttributes attr; XWindowAttributes attr;
if( !XGetWindowAttributes(display(), w, &attr)) if( !XGetWindowAttributes(display(), w, &attr))
{
ungrabXServer();
return false; return false;
}
grabXServer();
// from this place on, manage() mustn't return false // from this place on, manage() mustn't return false
postpone_geometry_updates = 1; postpone_geometry_updates = 1;
pending_geometry_update = true; // force update when finishing with geometry changes pending_geometry_update = true; // force update when finishing with geometry changes
embedClient( w, attr ); embedClient( w, attr );
vis = attr.visual;
bit_depth = attr.depth;
setupCompositing();
// SELI order all these things in some sane manner // SELI order all these things in some sane manner
@ -85,7 +77,6 @@ bool Client::manage( Window w, bool isMapped )
NET::WM2UserTime | NET::WM2UserTime |
NET::WM2StartupId | NET::WM2StartupId |
NET::WM2ExtendedStrut | NET::WM2ExtendedStrut |
NET::WM2Opacity |
0; 0;
info = new WinInfo( this, display(), client, rootWindow(), properties, 2 ); info = new WinInfo( this, display(), client, rootWindow(), properties, 2 );
@ -114,9 +105,6 @@ bool Client::manage( Window w, bool isMapped )
setupWindowRules( false ); setupWindowRules( false );
setCaption( cap_normal, true ); setCaption( cap_normal, true );
if( Extensions::shapeAvailable())
XShapeSelectInput( display(), window(), ShapeNotifyMask );
detectShape( window());
detectNoBorder(); detectNoBorder();
fetchIconicName(); fetchIconicName();
getWMHints(); // needs to be done before readTransient() because of reading the group getWMHints(); // needs to be done before readTransient() because of reading the group
@ -325,8 +313,9 @@ bool Client::manage( Window w, bool isMapped )
if(( !isSpecialWindow() || isToolbar()) && isMovable()) if(( !isSpecialWindow() || isToolbar()) && isMovable())
keepInArea( area, partial_keep_in_area ); keepInArea( area, partial_keep_in_area );
if( shape()) XShapeSelectInput( display(), window(), ShapeNotifyMask );
updateShape(); is_shape = Shape::hasShape( window());
updateShape();
//CT extra check for stupid jdk 1.3.1. But should make sense in general //CT extra check for stupid jdk 1.3.1. But should make sense in general
// if client has initial state set to Iconic and is transient with a parent // if client has initial state set to Iconic and is transient with a parent
@ -521,7 +510,7 @@ bool Client::manage( Window w, bool isMapped )
// sendSyntheticConfigureNotify(); done when setting mapping state // sendSyntheticConfigureNotify(); done when setting mapping state
delete session; delete session;
ungrabXServer(); ungrabXServer();
client_rules.discardTemporary(); client_rules.discardTemporary();
@ -539,7 +528,7 @@ bool Client::manage( Window w, bool isMapped )
void Client::embedClient( Window w, const XWindowAttributes &attr ) void Client::embedClient( Window w, const XWindowAttributes &attr )
{ {
assert( client == None ); assert( client == None );
assert( frameId() == None ); assert( frame == None );
assert( wrapper == None ); assert( wrapper == None );
client = w; client = w;
// we don't want the window to be destroyed when we are destroyed // we don't want the window to be destroyed when we are destroyed
@ -555,10 +544,9 @@ void Client::embedClient( Window w, const XWindowAttributes &attr )
swa.background_pixmap = None; swa.background_pixmap = None;
swa.border_pixel = 0; swa.border_pixel = 0;
Window frame = XCreateWindow( display(), rootWindow(), 0, 0, 1, 1, 0, frame = XCreateWindow( display(), rootWindow(), 0, 0, 1, 1, 0,
attr.depth, InputOutput, attr.visual, attr.depth, InputOutput, attr.visual,
CWColormap | CWBackPixmap | CWBorderPixel, &swa ); CWColormap | CWBackPixmap | CWBorderPixel, &swa );
setHandle( frame );
wrapper = XCreateWindow( display(), frame, 0, 0, 1, 1, 0, wrapper = XCreateWindow( display(), frame, 0, 0, 1, 1, 0,
attr.depth, InputOutput, attr.visual, attr.depth, InputOutput, attr.visual,
CWColormap | CWBackPixmap | CWBorderPixel, &swa ); CWColormap | CWBackPixmap | CWBorderPixel, &swa );
@ -577,8 +565,7 @@ void Client::embedClient( Window w, const XWindowAttributes &attr )
FocusChangeMask | FocusChangeMask |
ExposureMask | ExposureMask |
PropertyChangeMask | PropertyChangeMask |
StructureNotifyMask | SubstructureRedirectMask | StructureNotifyMask | SubstructureRedirectMask );
VisibilityChangeMask );
XSelectInput( display(), wrapper, ClientWinMask | SubstructureNotifyMask ); XSelectInput( display(), wrapper, ClientWinMask | SubstructureNotifyMask );
XSelectInput( display(), client, XSelectInput( display(), client,
FocusChangeMask | FocusChangeMask |