1 // Copyright (C) 2002 Dominique Devriese <devriese@kde.org>
3 // This program is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU General Public License
5 // as published by the Free Software Foundation; either version 2
6 // of the License, or (at your option) any later version.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18 #include "dragrectmode.h"
20 #include "../kig/kig_document.h"
21 #include "../kig/kig_part.h"
22 #include "../kig/kig_view.h"
23 #include "../misc/kigpainter.h"
29 DragRectMode::DragRectMode( const QPoint
& start
, KigPart
& d
, KigWidget
& w
)
30 : KigMode( d
), mstart( start
), mnc( true ), mstartselected( true ),
36 DragRectMode::DragRectMode( KigPart
& d
, KigWidget
& w
)
37 : KigMode( d
), mnc( true ), mstartselected( false ),
44 void DragRectMode::moved( const QPoint
& p
, KigWidget
& w
)
48 std::vector
<QRect
> overlay
;
51 KigPainter
pt( w
.screenInfo(), &w
.curPix
, mdoc
.document() );
52 pt
.drawFilledRect( QRect( p
, mstart
) );
53 overlay
= pt
.overlay();
55 w
.updateWidget( overlay
);
58 void DragRectMode::released( const QPoint
& p
, KigWidget
& w
, bool nc
)
62 mrect
= w
.fromScreen( QRect( mstart
, p
) );
63 mret
= mdoc
.document().whatIsInHere( mrect
, w
);
66 mdoc
.doneMode( this );
70 void DragRectMode::enableActions()
72 KigMode::enableActions();
74 mdoc
.aCancelConstruction
->setEnabled( true );
77 std::vector
<ObjectHolder
*> DragRectMode::ret() const
82 bool DragRectMode::needClear() const
87 void DragRectMode::moved( QMouseEvent
* e
, KigWidget
& w
)
92 void DragRectMode::released( QMouseEvent
* e
, KigWidget
& w
)
94 released( e
->pos(), w
, ! ( e
->state() & ( ControlButton
| ShiftButton
) ) );
97 DragRectMode::~DragRectMode()
101 void DragRectMode::mouseMoved( QMouseEvent
* e
, KigWidget
* w
)
106 void DragRectMode::leftMouseMoved( QMouseEvent
* e
, KigWidget
* w
)
111 void DragRectMode::midMouseMoved( QMouseEvent
* e
, KigWidget
* w
)
116 void DragRectMode::rightMouseMoved( QMouseEvent
* e
, KigWidget
* w
)
121 void DragRectMode::leftReleased( QMouseEvent
* e
, KigWidget
* w
)
126 void DragRectMode::midReleased( QMouseEvent
* e
, KigWidget
* w
)
131 void DragRectMode::rightReleased( QMouseEvent
* e
, KigWidget
* w
)
136 Rect
DragRectMode::rect() const
141 void DragRectMode::clicked( const QMouseEvent
* e
, KigWidget
& w
)
143 clicked( e
->pos(), w
);
146 void DragRectMode::leftClicked( QMouseEvent
* e
, KigWidget
* w
)
151 void DragRectMode::midClicked( QMouseEvent
* e
, KigWidget
* w
)
156 void DragRectMode::rightClicked( QMouseEvent
* e
, KigWidget
* w
)
161 void DragRectMode::clicked( const QPoint
& p
, KigWidget
& )
163 if ( !mstartselected
)
165 mstartselected
= true;
170 bool DragRectMode::cancelled() const
175 void DragRectMode::cancelConstruction()
178 mdoc
.doneMode( this );