summaryrefslogtreecommitdiffstats
path: root/kmdi/kmdichildfrm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmdi/kmdichildfrm.cpp')
-rw-r--r--kmdi/kmdichildfrm.cpp1409
1 files changed, 0 insertions, 1409 deletions
diff --git a/kmdi/kmdichildfrm.cpp b/kmdi/kmdichildfrm.cpp
deleted file mode 100644
index 449c8befe..000000000
--- a/kmdi/kmdichildfrm.cpp
+++ /dev/null
@@ -1,1409 +0,0 @@
-//----------------------------------------------------------------------------
-// filename : kmdichildfrm.cpp
-//----------------------------------------------------------------------------
-// Project : KDE MDI extension
-//
-// begin : 07/1999 by Szymon Stefanek as part of kvirc
-// (an IRC application)
-// changes : 09/1999 by Falk Brettschneider to create an
-// - 06/2000 stand-alone Qt extension set of
-// classes and a Qt-based library
-// : 01/2003 by Jens Zurheide to allow switching
-// between views based on timestamps
-// 2000-2003 maintained by the KDevelop project
-//
-// copyright : (C) 1999-2003 by Szymon Stefanek (stefanek@tin.it)
-// and
-// Falk Brettschneider
-// email : falkbr@tdevelop.org (Falk Brettschneider)
-//----------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU Library General Public License as
-// published by the Free Software Foundation; either version 2 of the
-// License, or (at your option) any later version.
-//
-//----------------------------------------------------------------------------
-
-#include "kmdichildfrm.h"
-#include "kmdichildfrm.moc"
-
-#include "kmdidefines.h"
-#include "kmdichildfrmcaption.h"
-#include "kmdichildarea.h"
-#include "kmdimainfrm.h"
-
-#include <tqpainter.h>
-#include <tqapplication.h>
-#include <tqcursor.h>
-#include <tqobjectlist.h>
-#include <tqframe.h>
-#include <tqpopupmenu.h>
-#include <tqtoolbutton.h>
-#include <tqnamespace.h>
-#include <tqimage.h>
-
-#include <klocale.h>
-#include <kiconloader.h>
-
-//////////////////////////////////////////////////////////////////////////////
-// KMdiChildFrm
-//////////////////////////////////////////////////////////////////////////////
-
-#define KMDI_NORESIZE 0
-#define KMDI_RESIZE_TOP 1
-#define KMDI_RESIZE_LEFT 2
-#define KMDI_RESIZE_RIGHT 4
-#define KMDI_RESIZE_BOTTOM 8
-#define KMDI_RESIZE_TOPLEFT (1|2)
-#define KMDI_RESIZE_TOPRIGHT (1|4)
-#define KMDI_RESIZE_BOTTOMLEFT (8|2)
-#define KMDI_RESIZE_BOTTOMRIGHT (8|4)
-
-#include "filenew.xpm"
-#include "win_closebutton.xpm"
-#include "win_minbutton.xpm"
-#include "win_maxbutton.xpm"
-#include "win_restorebutton.xpm"
-#include "win_undockbutton.xpm"
-#include "kde_closebutton.xpm"
-#include "kde_minbutton.xpm"
-#include "kde_maxbutton.xpm"
-#include "kde_restorebutton.xpm"
-#include "kde_undockbutton.xpm"
-#include "kde2_closebutton.xpm"
-#include "kde2_minbutton.xpm"
-#include "kde2_maxbutton.xpm"
-#include "kde2_restorebutton.xpm"
-#include "kde2_undockbutton.xpm"
-#include "kde2laptop_closebutton.xpm"
-#include "kde2laptop_minbutton.xpm"
-#include "kde2laptop_maxbutton.xpm"
-#include "kde2laptop_restorebutton.xpm"
-#include "kde2laptop_undockbutton.xpm"
-
-
-KMdiWin32IconButton::KMdiWin32IconButton( TQWidget* parent, const char* name )
- : TQLabel( parent, name )
-{}
-
-//============ mousePressEvent ============//
-
-void KMdiWin32IconButton::mousePressEvent( TQMouseEvent* )
-{
- //emit pressed();
-}
-
-//============ KMdiChildFrm ============//
-
-KMdiChildFrm::KMdiChildFrm( KMdiChildArea *parent )
- : TQFrame( parent, "kmdi_childfrm" )
- , m_pClient( 0L )
- , m_pManager( 0L )
- , m_pCaption( 0L )
- , m_pWinIcon( 0L )
- , m_pUnixIcon( 0L )
- , m_pMinimize( 0L )
- , m_pMaximize( 0L )
- , m_pClose( 0L )
- , m_pUndock( 0L )
- , m_state( Normal )
- , m_restoredRect()
- , m_iResizeCorner( KMDI_NORESIZE )
- , m_iLastCursorCorner( KMDI_NORESIZE )
- , m_bResizing( false )
- , m_bDragging( false )
- , m_pIconButtonPixmap( 0L )
- , m_pMinButtonPixmap( 0L )
- , m_pMaxButtonPixmap( 0L )
- , m_pRestoreButtonPixmap( 0L )
- , m_pCloseButtonPixmap( 0L )
- , m_pUndockButtonPixmap( 0L )
- , m_windowMenuID( 0 )
- , m_pSystemMenu( 0L )
- , m_oldClientMinSize()
- , m_oldClientMaxSize()
- , m_oldLayoutResizeMode( TQLayout::Minimum )
-{
- m_pCaption = new KMdiChildFrmCaption( this );
-
- m_pManager = parent;
-
- m_pWinIcon = new KMdiWin32IconButton( m_pCaption, "kmdi_iconbutton_icon" );
- m_pUnixIcon = new TQToolButton( m_pCaption, "kmdi_toolbutton_icon" );
- m_pMinimize = new TQToolButton( m_pCaption, "kmdi_toolbutton_min" );
- m_pMaximize = new TQToolButton( m_pCaption, "kmdi_toolbutton_max" );
- m_pClose = new TQToolButton( m_pCaption, "kmdi_toolbutton_close" );
- m_pUndock = new TQToolButton( m_pCaption, "kmdi_toolbutton_undock" );
-
- TQObject::connect( m_pMinimize, TQT_SIGNAL( clicked() ), this, TQT_SLOT( minimizePressed() ) );
- TQObject::connect( m_pMaximize, TQT_SIGNAL( clicked() ), this, TQT_SLOT( maximizePressed() ) );
- TQObject::connect( m_pClose, TQT_SIGNAL( clicked() ), this, TQT_SLOT( closePressed() ) );
- TQObject::connect( m_pUndock, TQT_SIGNAL( clicked() ), this, TQT_SLOT( undockPressed() ) );
-
- m_pIconButtonPixmap = new TQPixmap( SmallIcon( "filenew" ) );
- if ( m_pIconButtonPixmap->isNull() )
- * m_pIconButtonPixmap = TQPixmap( filenew );
-
- redecorateButtons();
-
- m_pWinIcon->setFocusPolicy( TQ_NoFocus );
- m_pUnixIcon->setFocusPolicy( TQ_NoFocus );
- m_pClose->setFocusPolicy( TQ_NoFocus );
- m_pMinimize->setFocusPolicy( TQ_NoFocus );
- m_pMaximize->setFocusPolicy( TQ_NoFocus );
- m_pUndock->setFocusPolicy( TQ_NoFocus );
-
- setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
- setFocusPolicy( TQ_NoFocus );
-
- setMouseTracking( true );
-
- setMinimumSize( KMDI_CHILDFRM_MIN_WIDTH, m_pCaption->heightHint() );
-
- m_pSystemMenu = new TQPopupMenu();
-}
-
-//============ ~KMdiChildFrm ============//
-
-KMdiChildFrm::~KMdiChildFrm()
-{
- delete m_pMinButtonPixmap;
- delete m_pMaxButtonPixmap;
- delete m_pRestoreButtonPixmap;
- delete m_pCloseButtonPixmap;
- delete m_pUndockButtonPixmap;
- delete m_pSystemMenu;
- delete m_pIconButtonPixmap;
-}
-
-//============ mousePressEvent =============//
-void KMdiChildFrm::mousePressEvent( TQMouseEvent *e )
-{
- if ( m_bResizing )
- {
- if ( TQApplication::overrideCursor() )
- TQApplication::restoreOverrideCursor();
-
- m_bResizing = false;
- releaseMouse();
- }
-
- m_pCaption->setActive( true );
- m_pManager->setTopChild( this, false );
-
- m_iResizeCorner = getResizeCorner( e->pos().x(), e->pos().y() );
- if ( m_iResizeCorner != KMDI_NORESIZE )
- {
- m_bResizing = true;
- //notify child view
- KMdiChildFrmResizeBeginEvent ue( e );
- if ( m_pClient != 0L )
- TQApplication::sendEvent( m_pClient, &ue );
- }
-}
-
-//============ mouseReleaseEvent ==============//
-
-void KMdiChildFrm::mouseReleaseEvent( TQMouseEvent *e )
-{
- if ( m_bResizing )
- {
- if ( TQApplication::overrideCursor() )
- TQApplication::restoreOverrideCursor();
-
- m_bResizing = false;
- //notify child view
- KMdiChildFrmResizeEndEvent ue( e );
- if ( m_pClient != 0L )
- TQApplication::sendEvent( m_pClient, &ue );
- }
-}
-
-//============= setResizeCursor ===============//
-
-void KMdiChildFrm::setResizeCursor( int resizeCorner )
-{
- if ( resizeCorner == m_iLastCursorCorner )
- return ; //Don't do it twice
-
- m_iLastCursorCorner = resizeCorner;
- switch ( resizeCorner )
- {
- case KMDI_NORESIZE:
- if ( TQApplication::overrideCursor() )
- TQApplication::restoreOverrideCursor();
- break;
- case KMDI_RESIZE_LEFT:
- case KMDI_RESIZE_RIGHT:
- TQApplication::setOverrideCursor( tqsizeHorCursor, true );
- break;
- case KMDI_RESIZE_TOP:
- case KMDI_RESIZE_BOTTOM:
- TQApplication::setOverrideCursor( tqsizeVerCursor, true );
- break;
- case KMDI_RESIZE_TOPLEFT:
- case KMDI_RESIZE_BOTTOMRIGHT:
- TQApplication::setOverrideCursor( tqsizeFDiagCursor, true );
- break;
- case KMDI_RESIZE_BOTTOMLEFT:
- case KMDI_RESIZE_TOPRIGHT:
- TQApplication::setOverrideCursor( tqsizeBDiagCursor, true );
- break;
- }
-}
-
-//============= unsetResizeCursor ===============//
-
-void KMdiChildFrm::unsetResizeCursor()
-{
- if ( !m_bResizing && m_iResizeCorner != KMDI_NORESIZE )
- {
- m_iResizeCorner = KMDI_NORESIZE;
- m_iLastCursorCorner = KMDI_NORESIZE;
- if ( TQApplication::overrideCursor() )
- TQApplication::restoreOverrideCursor();
- }
-}
-
-//============= mouseMoveEvent ===============//
-
-void KMdiChildFrm::mouseMoveEvent( TQMouseEvent *e )
-{
- if ( m_state != Normal )
- return;
-
- if ( !m_pClient )
- return;
-
- if ( m_pClient->minimumSize() == m_pClient->maximumSize() )
- return;
-
- if ( m_bResizing )
- {
- if ( !( e->state() & Qt::RightButton ) && !( e->state() & Qt::MidButton ) )
- {
- // same as: if no button or left button pressed
- TQPoint p = parentWidget()->mapFromGlobal( e->globalPos() );
- resizeWindow( m_iResizeCorner, p.x(), p.y() );
- }
- else
- m_bResizing = false;
- }
- else
- {
- m_iResizeCorner = getResizeCorner( e->pos().x(), e->pos().y() );
- setResizeCursor( m_iResizeCorner );
- }
-}
-
-//============= moveEvent ===============//
-
-void KMdiChildFrm::moveEvent( TQMoveEvent* me )
-{
- // give its child view the chance to notify a childframe move
- KMdiChildFrmMoveEvent cfme( me );
- if ( m_pClient != 0L )
- TQApplication::sendEvent( m_pClient, &cfme );
-}
-
-//=============== leaveEvent ===============//
-
-void KMdiChildFrm::leaveEvent( TQEvent * )
-{
- unsetResizeCursor();
-}
-
-void KMdiChildFrm::resizeWindow( int resizeCorner, int xPos, int yPos )
-{
- TQRect resizeRect( x(), y(), width(), height() );
-
- // Calculate the minimum width & height
- int minWidth = 0;
- int minHeight = 0;
- int maxWidth = TQWIDGETSIZE_MAX;
- int maxHeight = TQWIDGETSIZE_MAX;
-
- // it could be the client forces the childframe to enlarge its minimum size
- if ( m_pClient )
- {
- minWidth = m_pClient->minimumSize().width() + KMDI_CHILDFRM_DOUBLE_BORDER;
- minHeight = m_pClient->minimumSize().height() + KMDI_CHILDFRM_DOUBLE_BORDER +
- m_pCaption->heightHint() + KMDI_CHILDFRM_SEPARATOR;
- maxWidth = m_pClient->maximumSize().width() + KMDI_CHILDFRM_DOUBLE_BORDER;
- maxHeight = m_pClient->maximumSize().height() + KMDI_CHILDFRM_DOUBLE_BORDER +
- m_pCaption->heightHint() + KMDI_CHILDFRM_SEPARATOR;
- }
-
- if ( minWidth < minimumWidth() )
- minWidth = minimumWidth();
-
- if ( minHeight < minimumHeight() )
- minHeight = minimumHeight();
-
- if ( maxWidth > maximumWidth() )
- maxWidth = maximumWidth();
-
- if ( maxHeight > maximumHeight() )
- maxHeight = maximumHeight();
-
- TQPoint mousePos( xPos, yPos );
-
- // manipulate width
- switch ( resizeCorner )
- {
- //left sides
- case KMDI_RESIZE_TOPLEFT:
- case KMDI_RESIZE_LEFT:
- case KMDI_RESIZE_BOTTOMLEFT:
- resizeRect.setLeft( mousePos.x() );
- if ( resizeRect.width() < minWidth )
- resizeRect.setLeft( resizeRect.right() - minWidth + 1 );
- if ( resizeRect.width() > maxWidth )
- resizeRect.setLeft( resizeRect.right() - maxWidth + 1 );
- break;
- //right sides
- case KMDI_RESIZE_TOPRIGHT:
- case KMDI_RESIZE_RIGHT:
- case KMDI_RESIZE_BOTTOMRIGHT:
- resizeRect.setRight( mousePos.x() );
- if ( resizeRect.width() < minWidth )
- resizeRect.setRight( resizeRect.left() + minWidth - 1 );
- if ( resizeRect.width() > maxWidth )
- resizeRect.setRight( resizeRect.left() + maxWidth - 1 );
- break;
- default:
- break;
- }
-
- // manipulate height
- switch ( resizeCorner )
- {
- case KMDI_RESIZE_TOPLEFT:
- case KMDI_RESIZE_TOP:
- case KMDI_RESIZE_TOPRIGHT:
- resizeRect.setTop( mousePos.y() );
- if ( resizeRect.height() < minHeight )
- resizeRect.setTop( resizeRect.bottom() - minHeight + 1 );
- if ( resizeRect.height() > maxHeight )
- resizeRect.setTop( resizeRect.bottom() - maxHeight + 1 );
- break;
- case KMDI_RESIZE_BOTTOMLEFT:
- case KMDI_RESIZE_BOTTOM:
- case KMDI_RESIZE_BOTTOMRIGHT:
- resizeRect.setBottom( mousePos.y() );
- if ( resizeRect.height() < minHeight )
- resizeRect.setBottom( resizeRect.top() + minHeight - 1 );
- if ( resizeRect.height() > maxHeight )
- resizeRect.setBottom( resizeRect.top() + maxHeight - 1 );
- break;
- default:
- // nothing to do
- break;
- }
- // actually resize
- setGeometry( resizeRect );
-
- if ( m_state == Maximized )
- {
- m_state = Normal;
- m_pMaximize->setPixmap( *m_pMaxButtonPixmap );
- }
-}
-
-//================= getResizeCorner =============//
-
-int KMdiChildFrm::getResizeCorner( int ax, int ay )
-{
- int ret = KMDI_NORESIZE;
- if ( m_pClient->minimumWidth() != m_pClient->maximumWidth() )
- {
- if ( ( ax > 0 ) && ( ax < ( KMDI_CHILDFRM_BORDER + 2 ) ) )
- ret |= KMDI_RESIZE_LEFT;
-
- if ( ( ax < width() ) && ( ax > ( width() - ( KMDI_CHILDFRM_BORDER + 2 ) ) ) )
- ret |= KMDI_RESIZE_RIGHT;
- }
- if ( m_pClient->minimumHeight() != m_pClient->maximumHeight() )
- {
- if ( ( ay > 0 ) && ( ay < ( KMDI_CHILDFRM_BORDER + 2 ) ) )
- ret |= KMDI_RESIZE_TOP;
-
- if ( ( ay < ( height() ) ) && ( ay > ( height() - ( KMDI_CHILDFRM_BORDER + 2 ) ) ) )
- ret |= KMDI_RESIZE_BOTTOM;
- }
- return ret;
-}
-
-//============= maximizePressed ============//
-
-void KMdiChildFrm::maximizePressed()
-{
- switch ( m_state )
- {
- case Maximized:
- emit m_pManager->nowMaximized( false );
- setState( Normal );
- break;
- case Normal:
- case Minimized:
- setState( Maximized );
- emit m_pManager->nowMaximized( true );
- break;
- }
-}
-
-void KMdiChildFrm::restorePressed()
-{
- if ( m_state == Normal )
- return ;
-
- if ( m_state == Maximized )
- emit m_pManager->nowMaximized( false );
-
- setState( Normal );
-}
-
-//============= minimizePressed ============//
-
-void KMdiChildFrm::minimizePressed()
-{
- switch ( m_state )
- {
- case Minimized:
- setState( Normal );
- break;
- case Normal:
- setState( Minimized );
- break;
- case Maximized:
- emit m_pManager->nowMaximized( false );
- setState( Normal );
- setState( Minimized );
- break;
- }
-}
-
-//============= closePressed ============//
-
-void KMdiChildFrm::closePressed()
-{
- if ( m_pClient )
- m_pClient->close();
-}
-
-//============= undockPressed ============//
-
-void KMdiChildFrm::undockPressed()
-{
- if ( m_pClient )
- {
- if ( m_state == Minimized )
- setState( Normal );
- m_pClient->detach();
- }
-}
-
-//============ setState =================//
-
-void KMdiChildFrm::setState( MdiWindowState state, bool /*bAnimate*/ )
-{
- if ( m_state == Normal ) //save the current rect
- m_restoredRect = TQRect( x(), y(), width(), height() );
-
- switch ( state )
- {
- case Normal:
- switch ( m_state )
- {
- case Maximized:
- m_pClient->m_stateChanged = true;
- m_state = state;
- // client min / max size / layout behavior don't change
- // set frame max size indirectly by setting the clients max size to
- // it's current value (calls setMaxSize() of frame)
- m_pClient->setMaximumSize( m_pClient->maximumSize().width(), m_pClient->maximumSize().height() );
- m_pMaximize->setPixmap( *m_pMaxButtonPixmap );
- setGeometry( m_restoredRect );
- break;
- case Minimized:
- m_pClient->m_stateChanged = true;
- m_state = state;
- // restore client min / max size / layout behavior
- m_pClient->setMinimumSize( m_oldClientMinSize.width(), m_oldClientMinSize.height() );
- m_pClient->setMaximumSize( m_oldClientMaxSize.width(), m_oldClientMaxSize.height() );
- if ( m_pClient->layout() != 0L )
- {
- m_pClient->layout() ->setResizeMode( m_oldLayoutResizeMode );
- }
- m_pMinimize->setPixmap( *m_pMinButtonPixmap );
- m_pMaximize->setPixmap( *m_pMaxButtonPixmap );
- TQObject::disconnect( m_pMinimize, TQT_SIGNAL( clicked() ), this, TQT_SLOT( restorePressed() ) );
- TQObject::connect( m_pMinimize, TQT_SIGNAL( clicked() ), this, TQT_SLOT( minimizePressed() ) );
- setGeometry( m_restoredRect );
- break;
- case Normal:
- break;
- }
- break;
- case Maximized:
- switch ( m_state )
- {
- case Minimized:
- {
- m_pClient->m_stateChanged = true;
- m_state = state;
- // restore client min / max size / layout behavior
- m_pClient->setMinimumSize( m_oldClientMinSize.width(), m_oldClientMinSize.height() );
- m_pClient->setMaximumSize( m_oldClientMaxSize.width(), m_oldClientMaxSize.height() );
- if ( m_pClient->layout() != 0L )
- {
- m_pClient->layout() ->setResizeMode( m_oldLayoutResizeMode );
- }
- setMaximumSize( TQWIDGETSIZE_MAX, TQWIDGETSIZE_MAX );
- // reset to maximize-captionbar
- m_pMaximize->setPixmap( *m_pRestoreButtonPixmap );
- m_pMinimize->setPixmap( *m_pMinButtonPixmap );
- TQObject::disconnect( m_pMinimize, TQT_SIGNAL( clicked() ), this, TQT_SLOT( restorePressed() ) );
- TQObject::connect( m_pMinimize, TQT_SIGNAL( clicked() ), this, TQT_SLOT( minimizePressed() ) );
- int nFrameWidth = KMDI_CHILDFRM_DOUBLE_BORDER;
- int nFrameHeight = KMDI_CHILDFRM_DOUBLE_BORDER + KMDI_CHILDFRM_SEPARATOR +
- m_pCaption->heightHint();
- setGeometry( -m_pClient->x(), -m_pClient->y(),
- m_pManager->width() + nFrameWidth,
- m_pManager->height() + nFrameHeight );
- raise();
- }
- break;
- case Normal:
- {
- m_pClient->m_stateChanged = true;
- m_state = state;
- // client min / max size / layout behavior don't change
- setMaximumSize( TQWIDGETSIZE_MAX, TQWIDGETSIZE_MAX );
- m_pMaximize->setPixmap( *m_pRestoreButtonPixmap );
- int nFrameWidth = KMDI_CHILDFRM_DOUBLE_BORDER;
- int nFrameHeight = KMDI_CHILDFRM_DOUBLE_BORDER + KMDI_CHILDFRM_SEPARATOR +
- m_pCaption->heightHint();
- TQRect maximizedFrmRect( -m_pClient->x(), -m_pClient->y(),
- m_pManager->width() + nFrameWidth,
- m_pManager->height() + nFrameHeight );
- if ( geometry() != maximizedFrmRect )
- {
- setGeometry( maximizedFrmRect );
- }
- raise();
- }
- break;
- case Maximized:
- break;
- }
- break;
- case Minimized:
- switch ( m_state )
- {
- case Maximized:
- m_pClient->m_stateChanged = true;
- m_state = state;
- // save client min / max size / layout behavior
- m_oldClientMinSize = m_pClient->minimumSize();
- m_oldClientMaxSize = m_pClient->maximumSize();
- if ( m_pClient->layout() != 0L )
- {
- m_oldLayoutResizeMode = m_pClient->layout() ->resizeMode();
- }
- m_pClient->setMinimumSize( 0, 0 );
- m_pClient->setMaximumSize( 0, 0 );
- if ( m_pClient->layout() != 0L )
- {
- m_pClient->layout() ->setResizeMode( TQLayout::FreeResize );
- }
- switchToMinimizeLayout();
- m_pManager->childMinimized( this, true );
- break;
- case Normal:
- m_pClient->m_stateChanged = true;
- m_state = state;
- // save client min / max size / layout behavior
- m_oldClientMinSize = m_pClient->minimumSize();
- m_oldClientMaxSize = m_pClient->maximumSize();
- if ( m_pClient->layout() != 0L )
- {
- m_oldLayoutResizeMode = m_pClient->layout() ->resizeMode();
- }
- m_restoredRect = geometry();
- m_pClient->setMinimumSize( 0, 0 );
- m_pClient->setMaximumSize( 0, 0 );
- if ( m_pClient->layout() != 0L )
- {
- m_pClient->layout() ->setResizeMode( TQLayout::FreeResize );
- }
- switchToMinimizeLayout();
- m_pManager->childMinimized( this, false );
- break;
- case Minimized:
- break;
- }
- break;
- }
-
- KMdiChildFrm* pTopFrame = m_pManager->topChild();
- KMdiChildView* pTopChild = 0L;
- if ( pTopFrame != 0L )
- {
- pTopChild = pTopFrame->m_pClient;
- }
- if ( ( pTopChild != 0L ) && pTopChild->isMaximized() )
- {
- m_pManager->setMinimumSize( pTopChild->minimumWidth(), pTopChild->minimumHeight() );
- /// @todo: setting the maximum size doesn't work properly - fix this later
- /// m_pManager->setMaximumSize(pTopChild->maximumWidth(), pTopChild->maximumHeight());
- }
- else
- {
- m_pManager->setMinimumSize( 0, 0 );
- m_pManager->setMaximumSize( TQWIDGETSIZE_MAX, TQWIDGETSIZE_MAX );
- }
-}
-
-//============== restoreGeometry ================//
-
-TQRect KMdiChildFrm::restoreGeometry() const
-{
- return m_restoredRect;
-}
-
-//============== setRestoreGeometry ================//
-
-void KMdiChildFrm::setRestoreGeometry( const TQRect& newRestGeo )
-{
- m_restoredRect = newRestGeo;
-}
-
-//============ setCaption ===============//
-
-void KMdiChildFrm::setCaption( const TQString& text )
-{
- m_pCaption->setCaption( text );
-}
-
-//============ enableClose ==============//
-
-void KMdiChildFrm::enableClose( bool bEnable )
-{
- m_pClose->setEnabled( bEnable );
- m_pClose->repaint( false );
-}
-
-//============ setIcon ==================//
-
-void KMdiChildFrm::setIcon( const TQPixmap& pxm )
-{
- TQPixmap p = pxm;
- if ( p.width() != 18 || p.height() != 18 )
- {
- TQImage img = p.convertToImage();
- p = img.smoothScale( 18, 18, TQ_ScaleMin );
- }
- const bool do_resize = m_pIconButtonPixmap->size() != p.size();
- *m_pIconButtonPixmap = p;
- m_pWinIcon->setPixmap( p );
- m_pUnixIcon->setPixmap( p );
- if ( do_resize )
- doResize( true );
-}
-
-//============ icon =================//
-
-TQPixmap* KMdiChildFrm::icon() const
-{
- return m_pIconButtonPixmap;
-}
-
-//============ setClient ============//
-void KMdiChildFrm::setClient( KMdiChildView *w, bool bAutomaticResize )
-{
- m_pClient = w;
-
- if ( w->icon() )
- setIcon( *( w->icon() ) );
-
- //resize to match the client
- int clientYPos = m_pCaption->heightHint() + KMDI_CHILDFRM_SEPARATOR + KMDI_CHILDFRM_BORDER;
- if ( bAutomaticResize || w->size().isEmpty() || ( w->size() == TQSize( 1, 1 ) ) )
- {
- if ( m_pManager->topChild() )
- {
- resize( m_pManager->topChild() ->size() );
- }
- else
- {
- resize( m_pManager->m_defaultChildFrmSize.width() + KMDI_CHILDFRM_DOUBLE_BORDER,
- m_pManager->m_defaultChildFrmSize.height() + KMDI_CHILDFRM_BORDER + clientYPos );
- }
- }
- else
- {
- resize( w->width() + KMDI_CHILDFRM_DOUBLE_BORDER, w->height() + KMDI_CHILDFRM_BORDER + clientYPos );
- }
-
- // memorize the focuses in a dictionary because they will get lost during reparenting
- TQDict<TQ_FocusPolicy>* pFocPolDict = new TQDict<TQ_FocusPolicy>;
- pFocPolDict->setAutoDelete( true );
- TQObjectList *list = m_pClient->queryList( TQWIDGET_OBJECT_NAME_STRING );
- TQObjectListIt it( *list ); // iterate over the buttons
- TQObject * obj;
- int i = 1;
- while ( ( obj = it.current() ) != 0 )
- { // for each found object...
- ++it;
- TQWidget* widg = ( TQWidget* ) obj;
- if ( widg->name( 0 ) == 0 )
- {
- TQString tmpStr;
- tmpStr.setNum( i );
- tmpStr = "unnamed" + tmpStr;
- widg->setName( tmpStr.latin1() );
- i++;
- }
- TQ_FocusPolicy* pFocPol = new TQ_FocusPolicy;
- *pFocPol = widg->focusPolicy();
- pFocPolDict->insert( widg->name(), pFocPol );
- }
- delete list; // delete the list, not the objects
-
- //Reparent if needed
- if ( TQT_BASE_OBJECT(w->parent()) != TQT_BASE_OBJECT(this) )
- {
- //reparent to this widget , no flags , point , show it
- TQPoint pnt2( KMDI_CHILDFRM_BORDER, clientYPos );
- TQSize mincs = w->minimumSize();
- TQSize maxcs = w->maximumSize();
- w->setMinimumSize( 0, 0 );
- w->setMaximumSize( TQWIDGETSIZE_MAX, TQWIDGETSIZE_MAX );
-
- // min/max sizes, flags, DND get lost. :-(
- w->reparent( this, 0, pnt2, w->isVisible() );
-
- w->setMinimumSize( mincs.width(), mincs.height() );
- w->setMaximumSize( maxcs.width(), maxcs.height() );
- }
- else
- w->move( KMDI_CHILDFRM_BORDER, clientYPos );
-
- linkChildren( pFocPolDict );
-
- TQObject::connect( m_pClient, TQT_SIGNAL( mdiParentNowMaximized( bool ) ), m_pManager, TQT_SIGNAL( nowMaximized( bool ) ) );
-
- if ( m_pClient->minimumWidth() > m_pManager->m_defaultChildFrmSize.width() )
- setMinimumWidth( m_pClient->minimumSize().width() + KMDI_CHILDFRM_DOUBLE_BORDER );
-
- if ( m_pClient->minimumHeight() > m_pManager->m_defaultChildFrmSize.height() )
- {
- setMinimumHeight( m_pClient->minimumSize().height() + KMDI_CHILDFRM_DOUBLE_BORDER +
- m_pCaption->heightHint() + KMDI_CHILDFRM_SEPARATOR );
- }
-}
-
-//============ unsetClient ============//
-
-void KMdiChildFrm::unsetClient( TQPoint positionOffset )
-{
- if ( !m_pClient )
- return ;
-
- TQObject::disconnect( m_pClient, TQT_SIGNAL( mdiParentNowMaximized( bool ) ), m_pManager, TQT_SIGNAL( nowMaximized( bool ) ) );
-
- //reparent to desktop widget , no flags , point , show it
- TQDict<TQ_FocusPolicy>* pFocPolDict;
- pFocPolDict = unlinkChildren();
-
- // get name of focused child widget
- TQWidget* focusedChildWidget = m_pClient->focusedChildWidget();
- const char* nameOfFocusedWidget = "";
- if ( focusedChildWidget != 0 )
- nameOfFocusedWidget = focusedChildWidget->name();
-
- TQSize mins = m_pClient->minimumSize();
- TQSize maxs = m_pClient->maximumSize();
- m_pClient->reparent( 0, 0, mapToGlobal( pos() ) - pos() + positionOffset, isVisible() );
- m_pClient->setMinimumSize( mins.width(), mins.height() );
- m_pClient->setMaximumSize( maxs.width(), maxs.height() );
-
- // remember the focus policies using the dictionary and reset them
- TQObjectList *list = m_pClient->queryList( TQWIDGET_OBJECT_NAME_STRING );
- TQObjectListIt it( *list ); // iterate over all child widgets of child frame
- TQObject * obj;
- TQWidget* firstFocusableChildWidget = 0;
- TQWidget* lastFocusableChildWidget = 0;
- while ( ( obj = it.current() ) != 0 )
- { // for each found object...
- TQWidget * widg = ( TQWidget* ) obj;
- ++it;
- TQ_FocusPolicy* pFocPol = pFocPolDict->find( widg->name() ); // remember the focus policy from before the reparent
- if ( pFocPol )
- widg->setFocusPolicy( *pFocPol );
-
- // reset focus to old position (doesn't work :-( for its own unexplicable reasons)
- if ( widg->name() == nameOfFocusedWidget )
- widg->setFocus();
-
- // get first and last focusable widget
- if ( ( widg->focusPolicy() == TQ_StrongFocus ) || ( widg->focusPolicy() == TQ_TabFocus ) )
- {
- if ( firstFocusableChildWidget == 0 )
- firstFocusableChildWidget = widg; // first widget
- lastFocusableChildWidget = widg; // last widget
-
- }
- else
- {
- if ( widg->focusPolicy() == TQ_WheelFocus )
- {
- if ( firstFocusableChildWidget == 0 )
- firstFocusableChildWidget = widg; // first widget
- lastFocusableChildWidget = widg; // last widget
- //tqDebug("*** %s (%s)",widg->name(),widg->className());
- }
- }
- }
- delete list; // delete the list, not the objects
- delete pFocPolDict;
-
- // reset first and last focusable widget
- m_pClient->setFirstFocusableChildWidget( firstFocusableChildWidget );
- m_pClient->setLastFocusableChildWidget( lastFocusableChildWidget );
-
- // reset the focus policy of the view
- m_pClient->setFocusPolicy( TQ_ClickFocus );
-
- // lose information about the view (because it's undocked now)
- m_pClient = 0;
-}
-
-//============== linkChildren =============//
-void KMdiChildFrm::linkChildren( TQDict<TQ_FocusPolicy>* pFocPolDict )
-{
- // reset the focus policies for all widgets in the view (take them from the dictionary)
- TQObjectList* list = m_pClient->queryList( TQWIDGET_OBJECT_NAME_STRING );
- TQObjectListIt it( *list ); // iterate over all child widgets of child frame
- TQObject* obj;
- while ( ( obj = it.current() ) != 0 )
- { // for each found object...
- TQWidget* widg = ( TQWidget* ) obj;
- ++it;
- TQ_FocusPolicy* pFocPol = pFocPolDict->find( widg->name() ); // remember the focus policy from before the reparent
-
- if ( pFocPol != 0 )
- widg->setFocusPolicy( *pFocPol );
-
- if ( !( widg->inherits( TQPOPUPMENU_OBJECT_NAME_STRING ) ) )
- widg->installEventFilter( this );
-
- }
- delete list; // delete the list, not the objects
- delete pFocPolDict;
-
- // reset the focus policies for the rest
- m_pWinIcon->setFocusPolicy( TQ_NoFocus );
- m_pUnixIcon->setFocusPolicy( TQ_NoFocus );
- m_pClient->setFocusPolicy( TQ_ClickFocus );
- m_pCaption->setFocusPolicy( TQ_NoFocus );
- m_pUndock->setFocusPolicy( TQ_NoFocus );
- m_pMinimize->setFocusPolicy( TQ_NoFocus );
- m_pMaximize->setFocusPolicy( TQ_NoFocus );
- m_pClose->setFocusPolicy( TQ_NoFocus );
-
- // install the event filter (catch mouse clicks) for the rest
- m_pWinIcon->installEventFilter( this );
- m_pUnixIcon->installEventFilter( this );
- m_pCaption->installEventFilter( this );
- m_pUndock->installEventFilter( this );
- m_pMinimize->installEventFilter( this );
- m_pMaximize->installEventFilter( this );
- m_pClose->installEventFilter( this );
- m_pClient->installEventFilter( this );
- // m_pClient->installEventFilterForAllChildren();
-}
-
-//============== unlinkChildren =============//
-
-TQDict<TQ_FocusPolicy>* KMdiChildFrm::unlinkChildren()
-{
- // memorize the focuses in a dictionary because they will get lost during reparenting
- TQDict<TQ_FocusPolicy>* pFocPolDict = new TQDict<TQ_FocusPolicy>;
- pFocPolDict->setAutoDelete( true );
-
- TQObjectList *list = m_pClient->queryList( TQWIDGET_OBJECT_NAME_STRING );
- TQObjectListIt it( *list ); // iterate over all child widgets of child frame
- TQObject * obj;
- int i = 1;
- while ( ( obj = it.current() ) != 0 )
- { // for each found object...
- ++it;
- TQWidget* w = ( TQWidget* ) obj;
- // get current widget object name
- if ( w->name( 0 ) == 0 )
- {
- TQString tmpStr;
- tmpStr.setNum( i );
- tmpStr = "unnamed" + tmpStr;
- w->setName( tmpStr.latin1() );
- i++;
- }
- TQ_FocusPolicy* pFocPol = new TQ_FocusPolicy;
- *pFocPol = w->focusPolicy();
- // memorize focus policy
- pFocPolDict->insert( w->name(), pFocPol );
- // remove event filter
- ( ( TQWidget* ) obj ) ->removeEventFilter( this );
- }
- delete list; // delete the list, not the objects
-
- // remove the event filter (catch mouse clicks) for the rest
- m_pWinIcon->removeEventFilter( this );
- m_pUnixIcon->removeEventFilter( this );
- m_pCaption->removeEventFilter( this );
- m_pUndock->removeEventFilter( this );
- m_pMinimize->removeEventFilter( this );
- m_pMaximize->removeEventFilter( this );
- m_pClose->removeEventFilter( this );
- m_pClient->removeEventFilter( this );
-
- //SCHEDULED_FOR_REMOVE m_pClient->removeEventFilterForAllChildren();
-
- return pFocPolDict;
-}
-
-//============== resizeEvent ===============//
-
-void KMdiChildFrm::resizeEvent( TQResizeEvent * )
-{
- doResize(); // an extra method because it can also called directly
-}
-
-void KMdiChildFrm::doResize()
-{
- doResize( false );
-}
-
-void KMdiChildFrm::doResize( bool captionOnly )
-{
- //Resize the caption
- int captionHeight = m_pCaption->heightHint();
- int captionWidth = width() - KMDI_CHILDFRM_DOUBLE_BORDER;
- int buttonHeight = m_pClose->pixmap() ->height();
- int buttonWidth = m_pClose->pixmap() ->width();
- int heightOffset = captionHeight / 2 - buttonHeight / 2;
- int rightOffset1 = 1;
- int rightOffset2 = 1;
- int frmIconHeight = m_pWinIcon->pixmap() ->height();
- int frmIconWidth = m_pWinIcon->pixmap() ->width();
- int frmIconOffset = 1;
- TQWidget* pIconWidget = m_pWinIcon;
- m_pCaption->setGeometry( KMDI_CHILDFRM_BORDER, KMDI_CHILDFRM_BORDER, captionWidth, captionHeight );
-
- //The buttons are caption children
- if ( KMdiMainFrm::frameDecorOfAttachedViews() == KMdi::Win95Look )
- {
- rightOffset2 += 2;
- m_pUnixIcon->hide();
- }
- else if ( KMdiMainFrm::frameDecorOfAttachedViews() == KMdi::KDE1Look )
- {
- buttonWidth += 4;
- buttonHeight += 4;
- heightOffset -= 2;
- rightOffset1 = 0;
- rightOffset2 = 0;
- m_pWinIcon->hide();
- frmIconHeight = buttonHeight;
- frmIconWidth = buttonWidth;
- frmIconOffset = 0;
- pIconWidget = m_pUnixIcon;
- }
- else if ( KMdiMainFrm::frameDecorOfAttachedViews() == KMdi::KDELook )
- {
- buttonWidth += 3;
- buttonHeight += 3;
- heightOffset -= 1;
- m_pUnixIcon->hide();
- }
- if ( KMdiMainFrm::frameDecorOfAttachedViews() != KMdi::KDELaptopLook )
- {
- pIconWidget->setGeometry( frmIconOffset, captionHeight / 2 - frmIconHeight / 2, frmIconWidth, frmIconHeight );
- m_pClose->setGeometry( ( captionWidth - buttonWidth ) - rightOffset1, heightOffset, buttonWidth, buttonHeight );
- m_pMaximize->setGeometry( ( captionWidth - ( buttonWidth * 2 ) ) - rightOffset2, heightOffset, buttonWidth, buttonHeight );
- m_pMinimize->setGeometry( ( captionWidth - ( buttonWidth * 3 ) ) - rightOffset2, heightOffset, buttonWidth, buttonHeight );
- m_pUndock->setGeometry( ( captionWidth - ( buttonWidth * 4 ) ) - rightOffset2, heightOffset, buttonWidth, buttonHeight );
- }
- else
- { // KDELaptopLook
- m_pWinIcon->hide();
- m_pUnixIcon->hide();
- buttonHeight += 5;
- heightOffset -= 2;
- m_pClose->setGeometry ( 0, heightOffset, 27, buttonHeight );
- m_pMaximize->setGeometry( captionWidth - 27, heightOffset, 27, buttonHeight );
- m_pMinimize->setGeometry( captionWidth - 27 * 2, heightOffset, 27, buttonHeight );
- m_pUndock->setGeometry ( captionWidth - 27 * 3, heightOffset, 27, buttonHeight );
- }
-
- //Resize the client
- if ( !captionOnly && m_pClient )
- {
- TQSize newClientSize( captionWidth,
- height() - ( KMDI_CHILDFRM_DOUBLE_BORDER + captionHeight + KMDI_CHILDFRM_SEPARATOR ) );
- if ( newClientSize != m_pClient->size() )
- {
- m_pClient->setGeometry( KMDI_CHILDFRM_BORDER,
- m_pCaption->heightHint() + KMDI_CHILDFRM_SEPARATOR + KMDI_CHILDFRM_BORDER,
- newClientSize.width(), newClientSize.height() );
- }
- }
-}
-
-static bool hasParent( TQObject* par, TQObject* o )
-{
- while ( o && o != par )
- o = o->parent();
- return o == par;
-}
-
-//============= eventFilter ===============//
-
-bool KMdiChildFrm::eventFilter( TQObject *obj, TQEvent *e )
-{
- switch ( e->type() )
- {
- case TQEvent::Enter:
- {
- // check if the receiver is really a child of this frame
- bool bIsChild = false;
- TQObject* pObj = obj;
- while ( ( pObj != 0L ) && !bIsChild )
- {
- bIsChild = ( TQT_BASE_OBJECT(pObj) == TQT_BASE_OBJECT(this) );
- pObj = pObj->parent();
- }
- // unset the resize cursor if the cursor moved from the frame into a inner widget
- if ( bIsChild )
- unsetResizeCursor();
- }
- break;
- case TQEvent::MouseButtonPress:
- {
- if ( !hasParent( TQT_TQOBJECT(m_pClient), obj ) )
- {
- bool bIsSecondClick = false;
- if ( m_timeMeasure.elapsed() <= TQApplication::doubleClickInterval() )
- bIsSecondClick = true; // of a possible double click
-
- if ( !( ( ( TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(m_pWinIcon) ) || ( TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(m_pUnixIcon) ) ) && bIsSecondClick ) )
- {
- // in case we didn't click on the icon button
- TQFocusEvent focusEvent( TQFocusEvent::FocusIn );
- TQApplication::sendEvent( tqApp->mainWidget(), &focusEvent );
- if ( m_pClient )
- {
- m_pClient->updateTimeStamp();
- m_pClient->activate();
- }
-
- if ( ( TQT_BASE_OBJECT(obj->parent()) != TQT_BASE_OBJECT(m_pCaption) ) && ( TQT_BASE_OBJECT(obj) != TQT_BASE_OBJECT(m_pCaption) ) )
- {
- TQWidget* w = ( TQWidget* ) obj;
- if ( ( w->focusPolicy() == TQ_ClickFocus ) || ( w->focusPolicy() == TQ_StrongFocus ) )
- {
- w->setFocus();
- }
- }
- }
- if ( ( TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(m_pWinIcon) ) || ( TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(m_pUnixIcon) ) )
- {
- // in case we clicked on the icon button
- if ( m_timeMeasure.elapsed() > TQApplication::doubleClickInterval() )
- {
- showSystemMenu();
- m_timeMeasure.start();
- }
- else
- closePressed(); // double click on icon button closes the view
-
- return true;
- }
- }
- }
- break;
- case TQEvent::Resize:
- {
- if ( ( ( TQWidget* ) obj == m_pClient ) && ( m_state == Normal ) )
- {
- TQResizeEvent* re = ( TQResizeEvent* ) e;
- int captionHeight = m_pCaption->heightHint();
- TQSize newChildFrmSize( re->size().width() + KMDI_CHILDFRM_DOUBLE_BORDER,
- re->size().height() + captionHeight + KMDI_CHILDFRM_SEPARATOR + KMDI_CHILDFRM_DOUBLE_BORDER );
- if ( newChildFrmSize != size() )
- resize( newChildFrmSize );
- }
- }
- break;
- case TQEvent::ChildRemoved:
- {
- // if we lost a child we uninstall ourself as event filter for the lost
- // child and its children
- TQObject* pLostChild = TQT_TQOBJECT(( ( TQChildEvent* ) e )->child());
- if ( ( pLostChild != 0L ) /*&& (pLostChild->inherits(TQWIDGET_OBJECT_NAME_STRING))*/ )
- {
- TQObjectList* list = pLostChild->queryList();
- list->insert( 0, pLostChild ); // add the lost child to the list too, just to save code
- TQObjectListIt it( *list ); // iterate over all lost child widgets
- TQObject* obj;
- while ( ( obj = it.current() ) != 0 )
- { // for each found object...
- TQWidget* widg = ( TQWidget* ) obj;
- ++it;
- widg->removeEventFilter( this );
- }
- delete list; // delete the list, not the objects
- }
- }
- break;
- case TQEvent::ChildInserted:
- {
- // if we got a new child we install ourself as event filter for the new
- // child and its children (as we did when we got our client).
- // XXX see linkChildren() and focus policy stuff
- TQObject* pNewChild = TQT_TQOBJECT(( ( TQChildEvent* ) e ) ->child());
- if ( ( pNewChild != 0L ) && ::tqqt_cast<TQWidget*>( pNewChild ) )
- {
- TQWidget * pNewWidget = TQT_TQWIDGET( pNewChild );
- TQObjectList *list = pNewWidget->queryList( TQWIDGET_OBJECT_NAME_STRING );
- list->insert( 0, pNewChild ); // add the new child to the list too, just to save code
- TQObjectListIt it( *list ); // iterate over all new child widgets
- TQObject * obj;
- while ( ( obj = it.current() ) != 0 )
- { // for each found object...
- TQWidget * widg = ( TQWidget* ) obj;
- ++it;
- if ( !::tqqt_cast<TQPopupMenu*>( widg ) )
- {
- widg->installEventFilter( this );
- }
- }
- delete list; // delete the list, not the objects
- }
- }
- break;
- default:
- break;
- }
-
- return false; // standard event processing (see Qt documentation)
-}
-
-//============= raiseAndActivate ===============//
-
-void KMdiChildFrm::raiseAndActivate()
-{
- m_pCaption->setActive( true );
- m_pManager->setTopChild( this, false ); //Do not focus by now...
-}
-
-//============= setMinimumSize ===============//
-
-void KMdiChildFrm::setMinimumSize ( int minw, int minh )
-{
- TQWidget::setMinimumSize( minw, minh );
- if ( m_state == Maximized )
- {
- m_pManager->setMinimumSize( minw, minh );
- }
-}
-
-//============= systemMenu ===============//
-
-TQPopupMenu* KMdiChildFrm::systemMenu() const
-{
- if ( m_pSystemMenu == 0 )
- return 0;
-
- m_pSystemMenu->clear();
-
- if ( KMdiMainFrm::frameDecorOfAttachedViews() != KMdi::Win95Look )
- {
- m_pSystemMenu->insertItem( i18n( "&Restore" ), this, TQT_SLOT( restorePressed() ) );
- m_pSystemMenu->insertItem( i18n( "&Move" ), m_pCaption, TQT_SLOT( slot_moveViaSystemMenu() ) );
- m_pSystemMenu->insertItem( i18n( "R&esize" ), this, TQT_SLOT( slot_resizeViaSystemMenu() ) );
- m_pSystemMenu->insertItem( i18n( "M&inimize" ), this, TQT_SLOT( minimizePressed() ) );
- m_pSystemMenu->insertItem( i18n( "M&aximize" ), this, TQT_SLOT( maximizePressed() ) );
- if ( state() == Normal )
- m_pSystemMenu->setItemEnabled( m_pSystemMenu->idAt( 0 ), false );
- else if ( state() == Maximized )
- {
- m_pSystemMenu->setItemEnabled( m_pSystemMenu->idAt( 1 ), false );
- m_pSystemMenu->setItemEnabled( m_pSystemMenu->idAt( 2 ), false );
- m_pSystemMenu->setItemEnabled( m_pSystemMenu->idAt( 4 ), false );
- }
- else if ( state() == Minimized )
- {
- m_pSystemMenu->setItemEnabled( m_pSystemMenu->idAt( 2 ), false );
- m_pSystemMenu->setItemEnabled( m_pSystemMenu->idAt( 3 ), false );
- }
- }
- else
- {
- if ( state() != Normal )
- m_pSystemMenu->insertItem( i18n( "&Restore" ), this, TQT_SLOT( restorePressed() ) );
- if ( state() != Maximized )
- m_pSystemMenu->insertItem( i18n( "&Maximize" ), this, TQT_SLOT( maximizePressed() ) );
- if ( state() != Minimized )
- m_pSystemMenu->insertItem( i18n( "&Minimize" ), this, TQT_SLOT( minimizePressed() ) );
- if ( state() != Maximized )
- m_pSystemMenu->insertItem( i18n( "M&ove" ), m_pCaption, TQT_SLOT( slot_moveViaSystemMenu() ) );
- if ( state() == Normal )
- m_pSystemMenu->insertItem( i18n( "&Resize" ), this, TQT_SLOT( slot_resizeViaSystemMenu() ) );
- }
-
- m_pSystemMenu->insertItem( i18n( "&Undock" ), this, TQT_SLOT( undockPressed() ) );
- m_pSystemMenu->insertSeparator();
- m_pSystemMenu->insertItem( i18n( "&Close" ), this, TQT_SLOT( closePressed() ) );
-
- return m_pSystemMenu;
-}
-
-/** Shows a system menu for child frame windows. */
-void KMdiChildFrm::showSystemMenu()
-{
- if ( KMdiMainFrm::frameDecorOfAttachedViews() != KMdi::Win95Look )
- m_pUnixIcon->setDown( false );
-
- TQPoint popupmenuPosition;
-
- TQRect iconGeom;
- if ( KMdiMainFrm::frameDecorOfAttachedViews() == KMdi::Win95Look )
- iconGeom = m_pWinIcon->geometry();
- else
- iconGeom = m_pUnixIcon->geometry();
-
- popupmenuPosition = TQPoint( iconGeom.x(), iconGeom.y() + captionHeight() + KMDI_CHILDFRM_BORDER );
- systemMenu() ->popup( mapToGlobal( popupmenuPosition ) );
-}
-
-void KMdiChildFrm::switchToMinimizeLayout()
-{
- setMinimumWidth( KMDI_CHILDFRM_MIN_WIDTH );
- setFixedHeight( m_pCaption->height() + KMDI_CHILDFRM_DOUBLE_BORDER );
-
- m_pMaximize->setPixmap( *m_pMaxButtonPixmap );
-
- // temporary use of minimize button for restore function
- m_pMinimize->setPixmap( *m_pRestoreButtonPixmap );
- TQObject::disconnect( m_pMinimize, TQT_SIGNAL( clicked() ), this, TQT_SLOT( minimizePressed() ) );
- TQObject::connect( m_pMinimize, TQT_SIGNAL( clicked() ), this, TQT_SLOT( restorePressed() ) );
-
- // resizing
- resize( 300, minimumHeight() );
-
- // positioning
- m_pManager->layoutMinimizedChildren();
-}
-
-void KMdiChildFrm::slot_resizeViaSystemMenu()
-{
- grabMouse();
- m_bResizing = true;
- m_iResizeCorner = KMDI_RESIZE_BOTTOMLEFT;
- setResizeCursor( m_iResizeCorner );
-}
-
-void KMdiChildFrm::redecorateButtons()
-{
- delete m_pMinButtonPixmap;
- delete m_pMaxButtonPixmap;
- delete m_pRestoreButtonPixmap;
- delete m_pCloseButtonPixmap;
- delete m_pUndockButtonPixmap;
-
- if ( KMdiMainFrm::frameDecorOfAttachedViews() == KMdi::Win95Look )
- {
- m_pMinButtonPixmap = new TQPixmap( win_minbutton );
- m_pMaxButtonPixmap = new TQPixmap( win_maxbutton );
- m_pRestoreButtonPixmap = new TQPixmap( win_restorebutton );
- m_pCloseButtonPixmap = new TQPixmap( win_closebutton );
- m_pUndockButtonPixmap = new TQPixmap( win_undockbutton );
- }
- else if ( KMdiMainFrm::frameDecorOfAttachedViews() == KMdi::KDE1Look )
- {
- m_pMinButtonPixmap = new TQPixmap( kde_minbutton );
- m_pMaxButtonPixmap = new TQPixmap( kde_maxbutton );
- m_pRestoreButtonPixmap = new TQPixmap( kde_restorebutton );
- m_pCloseButtonPixmap = new TQPixmap( kde_closebutton );
- m_pUndockButtonPixmap = new TQPixmap( kde_undockbutton );
- }
- else if ( KMdiMainFrm::frameDecorOfAttachedViews() == KMdi::KDELook )
- {
- m_pMinButtonPixmap = new TQPixmap( kde2_minbutton );
- m_pMaxButtonPixmap = new TQPixmap( kde2_maxbutton );
- m_pRestoreButtonPixmap = new TQPixmap( kde2_restorebutton );
- m_pCloseButtonPixmap = new TQPixmap( kde2_closebutton );
- m_pUndockButtonPixmap = new TQPixmap( kde2_undockbutton );
- }
- else
- { // kde2laptop look
- m_pMinButtonPixmap = new TQPixmap( kde2laptop_minbutton );
- m_pMaxButtonPixmap = new TQPixmap( kde2laptop_maxbutton );
- m_pRestoreButtonPixmap = new TQPixmap( kde2laptop_restorebutton );
- m_pCloseButtonPixmap = new TQPixmap( kde2laptop_closebutton );
- m_pUndockButtonPixmap = new TQPixmap( kde2laptop_undockbutton );
- }
-
- m_pUnixIcon->setAutoRaise( true );
- if ( KMdiMainFrm::frameDecorOfAttachedViews() == KMdi::KDE1Look )
- {
- m_pMinimize->setAutoRaise( true );
- m_pMaximize->setAutoRaise( true );
- m_pClose->setAutoRaise( true );
- m_pUndock->setAutoRaise( true );
- }
- else
- {
- m_pMinimize->setAutoRaise( false );
- m_pMaximize->setAutoRaise( false );
- m_pClose->setAutoRaise( false );
- m_pUndock->setAutoRaise( false );
- }
-
- if ( m_pClient && m_pClient->icon() )
- {
- m_pWinIcon->setPixmap( *( m_pClient )->icon() );
- m_pUnixIcon->setPixmap( *( m_pClient )->icon() );
- }
- else
- {
- m_pWinIcon->setPixmap( *m_pIconButtonPixmap );
- m_pUnixIcon->setPixmap( *m_pIconButtonPixmap );
- }
- m_pClose->setPixmap( *m_pCloseButtonPixmap );
- m_pMinimize->setPixmap( *m_pMinButtonPixmap );
- m_pMaximize->setPixmap( *m_pMaxButtonPixmap );
- m_pUndock->setPixmap( *m_pUndockButtonPixmap );
-}
-
-TQRect KMdiChildFrm::mdiAreaContentsRect() const
-{
- TQFrame * p = ( TQFrame* ) parentWidget();
- if ( p )
- {
- return p->contentsRect();
- }
- else
- {
- TQRect empty;
- return empty;
- }
-}
-
-// kate: indent-mode csands; tab-width 4; space-indent off; replace-tabs off;