kmail
kwindowpositioner.cpp
Go to the documentation of this file.00001 /* 00002 This file is part of KDE. 00003 00004 Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License as published by the Free Software Foundation; either 00009 version 2 of the License, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00019 Boston, MA 02110-1301, USA. 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"