kmail
kwindowpositioner.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "kwindowpositioner.h"
00023
00024 #include <kdebug.h>
00025
00026 #include <qwidget.h>
00027
00028 KWindowPositioner::KWindowPositioner( QWidget *master, QWidget *slave,
00029 Mode mode )
00030 : QObject( master ), mMaster( master ), mSlave( slave ), mMode( mode )
00031 {
00032 master->topLevelWidget()->installEventFilter( this );
00033 }
00034
00035 bool KWindowPositioner::eventFilter( QObject *, QEvent *e )
00036 {
00037 if ( e->type() == QEvent::Move ) {
00038 reposition();
00039 }
00040
00041 return false;
00042 }
00043
00044 void KWindowPositioner::reposition()
00045 {
00046 QPoint relativePos;
00047 if ( mMode == Right ) {
00048 relativePos = QPoint( mMaster->width(), -100 );
00049 } else if ( mMode == Bottom ) {
00050 relativePos = QPoint( 100 - mSlave->width() + mMaster->width(),
00051 mMaster->height() );
00052 } else {
00053 kdError() << "KWindowPositioner: Illegal mode" << endl;
00054 }
00055 QPoint pos = mMaster->mapToGlobal( relativePos );
00056 mSlave->move( pos );
00057 mSlave->raise();
00058 }
00059
00060 #include "kwindowpositioner.moc"
|