some attempts to fix Sun's latest Java, no success so far. Giving up.

svn path=/trunk/kdebase/kwin/; revision=88713
icc-effect-5.14.5
Matthias Ettrich 2001-03-26 08:10:31 +00:00
parent fe44db9631
commit 5cf8a3c9fd
2 changed files with 18 additions and 15 deletions

View File

@ -290,7 +290,7 @@ void WindowWrapper::deferredResize()
{ {
XMoveResizeWindow( qt_xdisplay(), win, XMoveResizeWindow( qt_xdisplay(), win,
0, 0, width(), height() ); 0, 0, width(), height() );
((Client*)parentWidget())->sendSynteticConfigureNotify(); ((Client*)parentWidget())->sendSyntheticConfigureNotify();
if ( ((Client*)parentWidget())->shape() ) if ( ((Client*)parentWidget())->shape() )
((Client*)parentWidget())->updateShape(); ((Client*)parentWidget())->updateShape();
QApplication::syncX(); // process our own configure events synchronously. QApplication::syncX(); // process our own configure events synchronously.
@ -602,8 +602,6 @@ bool Client::manage( bool isMapped, bool doNotShow, bool isInitial )
if ( ( (xSizeHint.flags & PPosition) && !ignorePPosition ) || if ( ( (xSizeHint.flags & PPosition) && !ignorePPosition ) ||
(xSizeHint.flags & USPosition) ) { (xSizeHint.flags & USPosition) ) {
placementDone = TRUE; placementDone = TRUE;
if ( resource_name == "AWTapp" )
geom.moveTopLeft( QPoint(xSizeHint.x, xSizeHint.y) );
if ( windowType() == NET::Normal && !area.contains( geom.topLeft() ) && may_move ) { if ( windowType() == NET::Normal && !area.contains( geom.topLeft() ) && may_move ) {
int tx = geom.x(); int tx = geom.x();
int ty = geom.y(); int ty = geom.y();
@ -1007,7 +1005,8 @@ bool Client::configureRequest( XConfigureRequestEvent& e )
if ( isShade() ) if ( isShade() )
setShade( FALSE ); setShade( FALSE );
// compress configure requests /*
// compress configure requests
XEvent otherEvent; XEvent otherEvent;
while (XCheckTypedWindowEvent (qt_xdisplay(), win, while (XCheckTypedWindowEvent (qt_xdisplay(), win,
ConfigureRequest, &otherEvent) ) { ConfigureRequest, &otherEvent) ) {
@ -1018,10 +1017,11 @@ bool Client::configureRequest( XConfigureRequestEvent& e )
break; break;
} }
} }
*/
bool stacking = e.value_mask & CWStackMode; bool stacking = e.value_mask & CWStackMode;
int stack_mode = e.detail; int stack_mode = e.detail;
if ( e.value_mask & CWBorderWidth ) { if ( e.value_mask & CWBorderWidth ) {
// first, get rid of a window border // first, get rid of a window border
XWindowChanges wc; XWindowChanges wc;
@ -1082,7 +1082,7 @@ bool Client::configureRequest( XConfigureRequestEvent& e )
if ( isMaximized() ) { if ( isMaximized() ) {
geom_restore.moveTopLeft( np ); geom_restore.moveTopLeft( np );
} else { } else {
move( np ); move( np );
} }
} }
@ -1125,7 +1125,8 @@ bool Client::configureRequest( XConfigureRequestEvent& e )
} }
} }
sendSynteticConfigureNotify(); if ( e.value_mask & (CWX | CWY | CWWidth | CWHeight ) )
sendSyntheticConfigureNotify();
return TRUE; return TRUE;
} }
@ -1203,7 +1204,7 @@ bool Client::clientMessage( XClientMessageEvent& e )
configuration. configuration.
*/ */
void Client::sendSynteticConfigureNotify() void Client::sendSyntheticConfigureNotify()
{ {
XConfigureEvent c; XConfigureEvent c;
c.type = ConfigureNotify; c.type = ConfigureNotify;
@ -1214,6 +1215,8 @@ void Client::sendSynteticConfigureNotify()
c.width = windowWrapper()->width(); c.width = windowWrapper()->width();
c.height = windowWrapper()->height(); c.height = windowWrapper()->height();
c.border_width = 0; c.border_width = 0;
c.above = None;
c.override_redirect = 0;
XSendEvent( qt_xdisplay(), c.event, TRUE, StructureNotifyMask, (XEvent*)&c ); XSendEvent( qt_xdisplay(), c.event, TRUE, StructureNotifyMask, (XEvent*)&c );
} }
@ -1571,8 +1574,8 @@ void Client::leaveEvent( QEvent * )
void Client::setGeometry( int x, int y, int w, int h ) void Client::setGeometry( int x, int y, int w, int h )
{ {
QWidget::setGeometry(x, y, w, h); QWidget::setGeometry(x, y, w, h);
if ( !isResize() && !isMove() ) if ( !isResize() && !isMove() && isVisible() )
sendSynteticConfigureNotify(); sendSyntheticConfigureNotify();
} }
/*! /*!
@ -1581,8 +1584,8 @@ void Client::setGeometry( int x, int y, int w, int h )
void Client::move( int x, int y ) void Client::move( int x, int y )
{ {
QWidget::move( x, y ); QWidget::move( x, y );
if ( !isMove() ) if ( !isMove() && isVisible() )
sendSynteticConfigureNotify(); sendSyntheticConfigureNotify();
} }

View File

@ -137,7 +137,7 @@ public:
bool skipTaskbar() const; bool skipTaskbar() const;
void setSkipTaskbar( bool ); void setSkipTaskbar( bool );
bool storeSettings() const; bool storeSettings() const;
void setStoreSettings( bool ); void setStoreSettings( bool );
@ -283,7 +283,7 @@ private:
QPoint invertedMoveOffset; QPoint invertedMoveOffset;
QSize clientSize; QSize clientSize;
XSizeHints xSizeHint; XSizeHints xSizeHint;
void sendSynteticConfigureNotify(); void sendSyntheticConfigureNotify();
int state; int state;
QRect original_geometry; QRect original_geometry;
QRect geom; //### TODO QRect geom; //### TODO
@ -328,7 +328,7 @@ private:
static QCString staticWmCommand(WId); static QCString staticWmCommand(WId);
static QCString staticWmClientMachine(WId); static QCString staticWmClientMachine(WId);
static Window staticWmClientLeader(WId); static Window staticWmClientLeader(WId);
}; };
inline WId Client::window() const inline WId Client::window() const