From cb82f77388ddd72ab061b9b9c05aa3adf444d609 Mon Sep 17 00:00:00 2001 From: Matthias Ettrich Date: Mon, 1 Nov 1999 23:41:44 +0000 Subject: [PATCH] run, not crash svn path=/trunk/kdebase/kwin/; revision=32543 --- client.cpp | 89 ++--------------------------------------------------- main.cpp | 4 +-- main.h | 4 +-- options.cpp | 2 +- options.h | 2 +- 5 files changed, 8 insertions(+), 93 deletions(-) diff --git a/client.cpp b/client.cpp index 6a041b8491..0809e9c50a 100644 --- a/client.cpp +++ b/client.cpp @@ -16,9 +16,6 @@ extern Atom qt_wm_state; -static QImage* imgClient = 0; -static QPixmap* pmBackground = 0; -static QImage* imgBackground = 0; static QRect* visible_bound = 0; @@ -856,21 +853,6 @@ void Client::mouseReleaseEvent( QMouseEvent * e) buttonDown = FALSE; if ( moveResizeMode ) { clearbound(); - if ( isMove() && options->moveMode == Options::HalfTransparent ) { - QPainter p ( workspace()->desktopWidget() ); - if ( !mask.isNull() ) { - QRegion r( mask ); - r.translate( x(), y() ); - p.setClipRegion( r ); - } - p.drawImage( x(), y(), *imgClient); - } - delete imgClient; - imgClient = 0; - delete imgBackground; - imgBackground = 0; - delete pmBackground; - pmBackground = 0; if ( ( isMove() && options->moveMode != Options::Opaque ) || ( isResize() && options->resizeMode != Options::Opaque ) ) XUngrabServer( qt_xdisplay() ); @@ -903,23 +885,6 @@ void Client::mouseMoveEvent( QMouseEvent * e) if ( ( isMove() && options->moveMode != Options::Opaque ) || ( isResize() && options->resizeMode != Options::Opaque ) ) XGrabServer( qt_xdisplay() ); - - if ( isMove() && options->moveMode == Options::HalfTransparent ) { - imgClient = 0; //new QImage( QPixmap::grabWidget( this ).convertToImage() ); - // TODO SLOW!!! - pmBackground = new QPixmap( QPixmap::grabWindow( qt_xrootwin() )); - imgBackground = new QImage( pmBackground->convertToImage() ); - QRect ww( windowWrapper()->geometry() ); - ww.moveBy( x(), y() ); - ww = ww.intersect( workspace()->geometry() ); - ww.moveBy( -x(), -y() ); - bitBlt( imgClient, - ww.x(), - ww.y(), - imgBackground, - x()+ww.x(), y()+ww.y(), ww.width(), ww.height() ); - oldGeom.setRect(0,0,0,0); - } } else return; @@ -994,57 +959,8 @@ void Client::mouseMoveEvent( QMouseEvent * e) clearbound(); drawbound( geom ); break; - case Options::HalfTransparent: - { - QPainter p ( workspace()->desktopWidget() ); - QRegion now( geom ); - if ( !mask.isNull() ) { - QRegion r( mask ); - r.translate( geom.x(), geom.y() ); - now = r; - } - if ( !oldGeom.isEmpty() ) { - QRegion r( oldGeom ); - r = r.subtract( now ); - p.setClipRegion( r ); - p.drawPixmap( oldGeom.x(), oldGeom.y(), - *pmBackground, - oldGeom.x(), oldGeom.y(), - oldGeom.width(), oldGeom.height() ); - } - p.setClipRegion( now ); - QImage img ( *imgClient ); - img.detach(); - QRect visibleRect = QRect( 0, 0, - workspace()->geometry().width(), - workspace()->geometry().height() ).intersect( geom ); - for ( int i=visibleRect.top(); i<=visibleRect.bottom(); i++ ) { - uint *p = (uint *)imgBackground->scanLine(i); - uint *end = p + visibleRect.right(); - p += visibleRect.left(); - uint *pimg = (uint *)img.scanLine(i - geom.top() ); - pimg += visibleRect.left() - geom.left(); - while ( p <= end ) { - int r = (*p&0x00ff0000) >> 16; - int r2 = (*pimg&0x00ff0000) >> 16; - int g = (*p&0x0000ff00) >> 8; - int g2 = (*pimg&0x0000ff00) >> 8; - int b = (*p&0x000000ff ); - int b2 = (*pimg&0x000000ff ); - *pimg = ( ( (r+2*r2)/3 ) << 16 ) - + ( ( (g+2*g2)/3 ) << 8 ) - + ( (b+2*b2)/3 ); - p++; - pimg++; - } - } - - p.drawImage( geom.x(), geom.y(), img ); - } - break; } } - } /*! @@ -1577,9 +1493,8 @@ void Client::getWindowProtocols(){ */ void Client::takeFocus() { - if ( !Ptakefocus ) - XSetInputFocus( qt_xdisplay(), win, RevertToPointerRoot, CurrentTime ); - else + XSetInputFocus( qt_xdisplay(), win, RevertToPointerRoot, CurrentTime ); + if ( Ptakefocus ) sendClientMessage(win, atoms->wm_protocols, atoms->wm_take_focus); } diff --git a/main.cpp b/main.cpp index bf094d11d9..f90ece6ac4 100644 --- a/main.cpp +++ b/main.cpp @@ -52,7 +52,7 @@ int x11ErrorHandler(Display *d, XErrorEvent *e){ } Application::Application( int &argc, char *argv[] ) -: QApplication( argc, argv ) +: KApplication( argc, argv, "kwin" ) { initting = TRUE; options = new Options; @@ -61,7 +61,7 @@ Application::Application( int &argc, char *argv[] ) // install X11 error handler XSetErrorHandler( x11ErrorHandler ); - // create a workspace. + // create a workspace. workspaces += new Workspace(); initting = FALSE; if ( argc > 1 ) { diff --git a/main.h b/main.h index 5bb44fa4d6..a7ec2e2fc8 100644 --- a/main.h +++ b/main.h @@ -1,11 +1,11 @@ #ifndef MAIN_H #define MAIN_H -#include +#include #include "workspace.h" typedef QValueList WorkspaceList; -class Application : public QApplication +class Application : public KApplication { public: Application( int &argc, char **argv ); diff --git a/options.cpp b/options.cpp index 6bf455690e..e24f0cd52b 100644 --- a/options.cpp +++ b/options.cpp @@ -48,7 +48,7 @@ void Options::reload() { focusPolicy = ClickToFocus; resizeMode = Opaque; - moveMode = Transparent;//HalfTransparent; + moveMode = Opaque;// Transparent; QPalette pal = QApplication::palette(); KConfig *config = KGlobal::config(); diff --git a/options.h b/options.h index 9762728cf8..3001357abf 100644 --- a/options.h +++ b/options.h @@ -37,7 +37,7 @@ public: enum FocusPolicy { ClickToFocus, FocusFollowsMouse, FocusUnderMouse, FocusStricklyUnderMouse }; FocusPolicy focusPolicy; - enum MoveResizeMode { Transparent, Opaque, HalfTransparent }; + enum MoveResizeMode { Transparent, Opaque }; /** * Basic color types that should be recognized by all decoration styles.