• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeparts
 

tdeparts

  • tdeparts
partmanager.cpp
1/* This file is part of the KDE project
2 Copyright (C) 1999 Simon Hausmann <hausmann@kde.org>
3 (C) 1999 David Faure <faure@kde.org>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21#include "partmanager.h"
22#include <tdeparts/event.h>
23#include <tdeparts/part.h>
24#include <tdeglobal.h>
25#include <kdebug.h>
26
27#include <tqapplication.h>
28
29//#define DEBUG_PARTMANAGER
30
31using namespace KParts;
32
33template class TQPtrList<Part>;
34
35namespace KParts {
36
37class PartManagerPrivate
38{
39public:
40 PartManagerPrivate()
41 {
42 m_activeWidget = 0;
43 m_activePart = 0;
44 m_selectedPart = 0;
45 m_selectedWidget = 0;
46 m_bAllowNestedParts = false;
47 m_bIgnoreScrollBars = false;
48 m_activationButtonMask = TQt::LeftButton | TQt::MidButton | TQt::RightButton;
49 m_reason = PartManager::NoReason;
50 }
51 ~PartManagerPrivate()
52 {
53 }
54 void setReason( TQEvent* ev ) {
55 switch( ev->type() ) {
56 case TQEvent::MouseButtonPress:
57 case TQEvent::MouseButtonDblClick: {
58 TQMouseEvent* mev = static_cast<TQMouseEvent*>( ev );
59 m_reason = mev->button() == TQt::LeftButton
60 ? PartManager::ReasonLeftClick
61 : ( mev->button() == TQt::MidButton
62 ? PartManager::ReasonMidClick
63 : PartManager::ReasonRightClick );
64 break;
65 }
66 case TQEvent::FocusIn:
67 m_reason = static_cast<TQFocusEvent*>( ev )->reason();
68 break;
69 default:
70 kdWarning(1000) << "PartManagerPrivate::setReason got unexpected ev type " << ev->type() << endl;
71 break;
72 }
73 }
74
75 Part * m_activePart;
76 TQWidget *m_activeWidget;
77
78 TQPtrList<Part> m_parts;
79
80 PartManager::SelectionPolicy m_policy;
81
82 Part *m_selectedPart;
83 TQWidget *m_selectedWidget;
84
85 TQPtrList<TQWidget> m_managedTopLevelWidgets;
86 short int m_activationButtonMask;
87 bool m_bIgnoreScrollBars;
88 bool m_bAllowNestedParts;
89 int m_reason;
90};
91
92}
93
94PartManager::PartManager( TQWidget * parent, const char * name )
95 : TQObject( parent, name )
96{
97 d = new PartManagerPrivate;
98
99 tqApp->installEventFilter( this );
100
101 d->m_policy = Direct;
102
103 addManagedTopLevelWidget( parent );
104}
105
106PartManager::PartManager( TQWidget *topLevel, TQObject *parent, const char *name )
107 : TQObject( parent, name )
108{
109 d = new PartManagerPrivate;
110
111 tqApp->installEventFilter( this );
112
113 d->m_policy = Direct;
114
115 addManagedTopLevelWidget( topLevel );
116}
117
118PartManager::~PartManager()
119{
120 for ( TQPtrListIterator<TQWidget> it( d->m_managedTopLevelWidgets );
121 it.current(); ++it )
122 disconnect( it.current(), TQ_SIGNAL( destroyed() ),
123 this, TQ_SLOT( slotManagedTopLevelWidgetDestroyed() ) );
124
125 for ( TQPtrListIterator<Part> it( d->m_parts ); it.current(); ++it )
126 {
127 it.current()->setManager( 0 );
128 }
129
130 // core dumps ... setActivePart( 0L );
131 tqApp->removeEventFilter( this );
132 delete d;
133}
134
135void PartManager::setSelectionPolicy( SelectionPolicy policy )
136{
137 d->m_policy = policy;
138}
139
140PartManager::SelectionPolicy PartManager::selectionPolicy() const
141{
142 return d->m_policy;
143}
144
145void PartManager::setAllowNestedParts( bool allow )
146{
147 d->m_bAllowNestedParts = allow;
148}
149
150bool PartManager::allowNestedParts() const
151{
152 return d->m_bAllowNestedParts;
153}
154
155void PartManager::setIgnoreScrollBars( bool ignore )
156{
157 d->m_bIgnoreScrollBars = ignore;
158}
159
160bool PartManager::ignoreScrollBars() const
161{
162 return d->m_bIgnoreScrollBars;
163}
164
165void PartManager::setActivationButtonMask( short int buttonMask )
166{
167 d->m_activationButtonMask = buttonMask;
168}
169
170short int PartManager::activationButtonMask() const
171{
172 return d->m_activationButtonMask;
173}
174
175bool PartManager::eventFilter( TQObject *obj, TQEvent *ev )
176{
177
178 if ( ev->type() != TQEvent::MouseButtonPress &&
179 ev->type() != TQEvent::MouseButtonDblClick &&
180 ev->type() != TQEvent::FocusIn )
181 return false;
182
183 if ( !obj->isWidgetType() )
184 return false;
185
186 TQWidget *w = static_cast<TQWidget*>( obj );
187
188 if ( ( w->testWFlags( WType_Dialog ) && w->isModal() ) ||
189 w->testWFlags( WType_Popup ) || w->testWFlags( WStyle_Tool ) )
190 return false;
191
192 TQMouseEvent* mev = 0L;
193 if ( ev->type() == TQEvent::MouseButtonPress || ev->type() == TQEvent::MouseButtonDblClick )
194 {
195 mev = static_cast<TQMouseEvent*>( ev );
196#ifdef DEBUG_PARTMANAGER
197 kdDebug(1000) << "PartManager::eventFilter button: " << mev->button() << " " << "d->m_activationButtonMask=" << d->m_activationButtonMask << endl;
198#endif
199 if ( ( mev->button() & d->m_activationButtonMask ) == 0 )
200 return false; // ignore this button
201 }
202
203 Part * part;
204 while ( w )
205 {
206 TQPoint pos;
207
208 if ( !d->m_managedTopLevelWidgets.containsRef( w->topLevelWidget() ) )
209 return false;
210
211 if ( d->m_bIgnoreScrollBars && w->inherits( "TQScrollBar" ) )
212 return false;
213
214 if ( mev ) // mouse press or mouse double-click event
215 {
216 pos = mev->globalPos();
217 part = findPartFromWidget( w, pos );
218 } else
219 part = findPartFromWidget( w );
220
221#ifdef DEBUG_PARTMANAGER
222 TQCString evType = ( ev->type() == TQEvent::MouseButtonPress ) ? "MouseButtonPress"
223 : ( ev->type() == TQEvent::MouseButtonDblClick ) ? "MouseButtonDblClick"
224 : ( ev->type() == TQEvent::FocusIn ) ? "FocusIn" : "OTHER! ERROR!";
225#endif
226 if ( part ) // We found a part whose widget is w
227 {
228 if ( d->m_policy == PartManager::TriState )
229 {
230 if ( ev->type() == TQEvent::MouseButtonDblClick )
231 {
232 if ( part == d->m_activePart && w == d->m_activeWidget )
233 return false;
234
235#ifdef DEBUG_PARTMANAGER
236 kdDebug(1000) << "PartManager::eventFilter dblclick -> setActivePart" << part << endl;
237#endif
238 d->setReason( ev );
239 setActivePart( part, w );
240 d->m_reason = NoReason;
241 return true;
242 }
243
244 if ( ( d->m_selectedWidget != w || d->m_selectedPart != part ) &&
245 ( d->m_activeWidget != w || d->m_activePart != part ) )
246 {
247 if ( part->isSelectable() )
248 setSelectedPart( part, w );
249 else {
250#ifdef DEBUG_PARTMANAGER
251 kdDebug(1000) << "Part " << part << " (non-selectable) made active because " << w->className() << " got event" << " " << evType << endl;
252#endif
253 d->setReason( ev );
254 setActivePart( part, w );
255 d->m_reason = NoReason;
256 }
257 return true;
258 }
259 else if ( d->m_selectedWidget == w && d->m_selectedPart == part )
260 {
261#ifdef DEBUG_PARTMANAGER
262 kdDebug(1000) << "Part " << part << " made active (from selected) because " << w->className() << " got event" << " " << evType << endl;
263#endif
264 d->setReason( ev );
265 setActivePart( part, w );
266 d->m_reason = NoReason;
267 return true;
268 }
269 else if ( d->m_activeWidget == w && d->m_activePart == part )
270 {
271 setSelectedPart( 0L );
272 return false;
273 }
274
275 return false;
276 }
277 else if ( part != d->m_activePart )
278 {
279#ifdef DEBUG_PARTMANAGER
280 kdDebug(1000) << "Part " << part << " made active because " << w->className() << " got event" << " " << evType << endl;
281#endif
282 d->setReason( ev );
283 setActivePart( part, w );
284 d->m_reason = NoReason;
285 }
286
287 return false;
288 }
289
290 w = w->parentWidget();
291
292 if ( w && ( ( w->testWFlags( WType_Dialog ) && w->isModal() ) ||
293 w->testWFlags( WType_Popup ) || w->testWFlags( WStyle_Tool ) ) )
294 {
295#ifdef DEBUG_PARTMANAGER
296 kdDebug(1000) << TQString("No part made active although %1/%2 got event - loop aborted").arg(obj->name()).arg(obj->className()) << endl;
297#endif
298 return false;
299 }
300
301 }
302
303#ifdef DEBUG_PARTMANAGER
304 kdDebug(1000) << TQString("No part made active although %1/%2 got event").arg(obj->name()).arg(obj->className()) << endl;
305#endif
306 return false;
307}
308
309Part * PartManager::findPartFromWidget( TQWidget * widget, const TQPoint &pos )
310{
311 TQPtrListIterator<Part> it ( d->m_parts );
312 for ( ; it.current() ; ++it )
313 {
314 Part *part = it.current()->hitTest( widget, pos );
315 if ( part && d->m_parts.findRef( part ) != -1 )
316 return part;
317 }
318 return 0L;
319}
320
321Part * PartManager::findPartFromWidget( TQWidget * widget )
322{
323 TQPtrListIterator<Part> it ( d->m_parts );
324 for ( ; it.current() ; ++it )
325 {
326 if ( widget == it.current()->widget() )
327 return it.current();
328 }
329 return 0L;
330}
331
332void PartManager::addPart( Part *part, bool setActive )
333{
334 if ( d->m_parts.findRef( part ) != -1 ) // don't add parts more than once :)
335 {
336#ifdef DEBUG_PARTMANAGER
337 kdWarning(1000) << k_funcinfo << part << " already added" << kdBacktrace(5) << endl;
338#endif
339 return;
340 }
341
342 d->m_parts.append( part );
343
344 part->setManager( this );
345
346 if ( setActive )
347 {
348 setActivePart( part );
349 if ( part->widget() )
350 part->widget()->setFocus();
351 }
352
353 // Prevent focus problems
354 if ( part->widget() && part->widget()->focusPolicy() == TQWidget::NoFocus )
355 {
356 kdWarning(1000) << "Part '" << part->name() << "' has a widget " << part->widget()->name() << " with a focus policy of NoFocus. It should have at least a ClickFocus policy, for part activation to work well." << endl;
357 }
358 if ( part->widget() && part->widget()->focusPolicy() == TQWidget::TabFocus )
359 {
360 kdWarning(1000) << "Part '" << part->name() << "' has a widget " << part->widget()->name() << " with a focus policy of TabFocus. It should have at least a ClickFocus policy, for part activation to work well." << endl;
361 }
362
363 if ( setActive && part->widget() )
364 part->widget()->show();
365 emit partAdded( part );
366}
367
368void PartManager::removePart( Part *part )
369{
370 if ( d->m_parts.findRef( part ) == -1 )
371 {
372 kdFatal(1000) << TQString(TQString("Can't remove part %1, not in KPartManager's list.").arg(part->name())) << endl;
373 return;
374 }
375
376 //Warning. The part could be already deleted
377 //kdDebug(1000) << TQString("Part %1 removed").arg(part->name()) << endl;
378 int nb = d->m_parts.count();
379 bool ok = d->m_parts.removeRef( part );
380 Q_ASSERT( ok );
381 Q_ASSERT( (int)d->m_parts.count() == nb-1 );
382 part->setManager(0);
383
384 emit partRemoved( part );
385
386 if ( part == d->m_activePart )
387 setActivePart( 0 );
388 if ( part == d->m_selectedPart )
389 setSelectedPart( 0 );
390}
391
392void PartManager::replacePart( Part * oldPart, Part * newPart, bool setActive )
393{
394 //kdDebug(1000) << "replacePart " << oldPart->name() << "-> " << newPart->name() << " setActive=" << setActive << endl;
395 // This methods does exactly removePart + addPart but without calling setActivePart(0) in between
396 if ( d->m_parts.findRef( oldPart ) == -1 )
397 {
398 kdFatal(1000) << TQString(TQString("Can't remove part %1, not in KPartManager's list.").arg(oldPart->name())) << endl;
399 return;
400 }
401
402 d->m_parts.removeRef( oldPart );
403 oldPart->setManager(0);
404
405 emit partRemoved( oldPart );
406
407 addPart( newPart, setActive );
408}
409
410void PartManager::setActivePart( Part *part, TQWidget *widget )
411{
412 if ( part && d->m_parts.findRef( part ) == -1 )
413 {
414 kdWarning( 1000 ) << "PartManager::setActivePart : trying to activate a non-registered part! " << part->name() << endl;
415 return; // don't allow someone call setActivePart with a part we don't know about
416 }
417
418 //check whether nested parts are disallowed and activate the top parent part then, by traversing the
419 //tree recursively (Simon)
420 if ( part && !d->m_bAllowNestedParts )
421 {
422 TQObject *parentPart = part->parent(); // ### this relies on people using KParts::Factory!
423 if ( parentPart && parentPart->inherits( "KParts::Part" ) )
424 {
425 KParts::Part *parPart = static_cast<KParts::Part *>( parentPart );
426 setActivePart( parPart, parPart->widget() );
427 return;
428 }
429 }
430
431#ifdef DEBUG_PARTMANAGER
432 kdDebug(1000) << "PartManager::setActivePart d->m_activePart=" << d->m_activePart << "<->part=" << part
433 << " d->m_activeWidget=" << d->m_activeWidget << "<->widget=" << widget << endl;
434#endif
435
436 // don't activate twice
437 if ( d->m_activePart && part && d->m_activePart == part &&
438 (!widget || d->m_activeWidget == widget) )
439 return;
440
441 KParts::Part *oldActivePart = d->m_activePart;
442 TQWidget *oldActiveWidget = d->m_activeWidget;
443
444 setSelectedPart( 0L );
445
446 d->m_activePart = part;
447 d->m_activeWidget = widget;
448
449 if ( oldActivePart )
450 {
451 KParts::Part *savedActivePart = part;
452 TQWidget *savedActiveWidget = widget;
453
454 PartActivateEvent ev( false, oldActivePart, oldActiveWidget );
455 TQApplication::sendEvent( oldActivePart, &ev );
456 if ( oldActiveWidget )
457 {
458 disconnect( oldActiveWidget, TQ_SIGNAL( destroyed() ),
459 this, TQ_SLOT( slotWidgetDestroyed() ) );
460 TQApplication::sendEvent( oldActiveWidget, &ev );
461 }
462
463 d->m_activePart = savedActivePart;
464 d->m_activeWidget = savedActiveWidget;
465 }
466
467 if ( d->m_activePart )
468 {
469 if ( !widget )
470 d->m_activeWidget = part->widget();
471
472 PartActivateEvent ev( true, d->m_activePart, d->m_activeWidget );
473 TQApplication::sendEvent( d->m_activePart, &ev );
474 if ( d->m_activeWidget )
475 {
476 connect( d->m_activeWidget, TQ_SIGNAL( destroyed() ),
477 this, TQ_SLOT( slotWidgetDestroyed() ) );
478 TQApplication::sendEvent( d->m_activeWidget, &ev );
479 }
480 }
481 // Set the new active instance in TDEGlobal
482 setActiveInstance( d->m_activePart ? d->m_activePart->instance() : 0L );
483
484 kdDebug(1000) << this << " emitting activePartChanged " << d->m_activePart << endl;
485 emit activePartChanged( d->m_activePart );
486}
487
488void PartManager::setActiveInstance( TDEInstance * instance )
489{
490 // It's a separate method to allow redefining this behavior
491 TDEGlobal::_activeInstance = instance;
492}
493
494Part *PartManager::activePart() const
495{
496 return d->m_activePart;
497}
498
499TQWidget *PartManager::activeWidget() const
500{
501 return d->m_activeWidget;
502}
503
504void PartManager::setSelectedPart( Part *part, TQWidget *widget )
505{
506 if ( part == d->m_selectedPart && widget == d->m_selectedWidget )
507 return;
508
509 Part *oldPart = d->m_selectedPart;
510 TQWidget *oldWidget = d->m_selectedWidget;
511
512 d->m_selectedPart = part;
513 d->m_selectedWidget = widget;
514
515 if ( part && !widget )
516 d->m_selectedWidget = part->widget();
517
518 if ( oldPart )
519 {
520 PartSelectEvent ev( false, oldPart, oldWidget );
521 TQApplication::sendEvent( oldPart, &ev );
522 TQApplication::sendEvent( oldWidget, &ev );
523 }
524
525 if ( d->m_selectedPart )
526 {
527 PartSelectEvent ev( true, d->m_selectedPart, d->m_selectedWidget );
528 TQApplication::sendEvent( d->m_selectedPart, &ev );
529 TQApplication::sendEvent( d->m_selectedWidget, &ev );
530 }
531}
532
533Part *PartManager::selectedPart() const
534{
535 return d->m_selectedPart;
536}
537
538TQWidget *PartManager::selectedWidget() const
539{
540 return d->m_selectedWidget;
541}
542
543void PartManager::slotObjectDestroyed()
544{
545 kdDebug(1000) << "KPartManager::slotObjectDestroyed()" << endl;
546 removePart( const_cast<Part *>( static_cast<const Part *>( sender() ) ) );
547}
548
549void PartManager::slotWidgetDestroyed()
550{
551 kdDebug(1000) << "KPartsManager::slotWidgetDestroyed()" << endl;
552 if ( static_cast<const TQWidget *>( sender() ) == d->m_activeWidget )
553 setActivePart( 0L ); //do not remove the part because if the part's widget dies, then the
554 //part will delete itself anyway, invoking removePart() in its destructor
555}
556
557const TQPtrList<Part> *PartManager::parts() const
558{
559 return &d->m_parts;
560}
561
562void PartManager::addManagedTopLevelWidget( const TQWidget *topLevel )
563{
564 if ( !topLevel->isTopLevel() )
565 return;
566
567 if ( d->m_managedTopLevelWidgets.containsRef( topLevel ) )
568 return;
569
570 d->m_managedTopLevelWidgets.append( topLevel );
571 connect( topLevel, TQ_SIGNAL( destroyed() ),
572 this, TQ_SLOT( slotManagedTopLevelWidgetDestroyed() ) );
573}
574
575void PartManager::removeManagedTopLevelWidget( const TQWidget *topLevel )
576{
577 if ( !topLevel->isTopLevel() )
578 return;
579
580 if ( d->m_managedTopLevelWidgets.findRef( topLevel ) == -1 )
581 return;
582
583 d->m_managedTopLevelWidgets.remove();
584}
585
586void PartManager::slotManagedTopLevelWidgetDestroyed()
587{
588 const TQWidget *widget = static_cast<const TQWidget *>( sender() );
589 removeManagedTopLevelWidget( widget );
590}
591
592int PartManager::reason() const
593{
594 return d->m_reason;
595}
596
597void PartManager::virtual_hook( int, void* )
598{ /*BASE::virtual_hook( id, data );*/ }
599
600#include "partmanager.moc"
KParts::PartActivateEvent
This event is sent by the part manager when the active part changes.
Definition: event.h:77
KParts::PartManager::setIgnoreScrollBars
void setIgnoreScrollBars(bool ignore)
Specifies whether the partmanager should ignore mouse click events for scrollbars or not.
Definition: partmanager.cpp:155
KParts::PartManager::activationButtonMask
short int activationButtonMask() const
Definition: partmanager.cpp:170
KParts::PartManager::ignoreScrollBars
bool ignoreScrollBars() const
Definition: partmanager.cpp:160
KParts::PartManager::partAdded
void partAdded(KParts::Part *part)
Emitted when a new part has been added.
KParts::PartManager::removePart
virtual void removePart(Part *part)
Removes a part from the manager (this does not delete the object) .
Definition: partmanager.cpp:368
KParts::PartManager::PartManager
PartManager(TQWidget *parent, const char *name=0L)
Constructs a part manager.
Definition: partmanager.cpp:94
KParts::PartManager::setActiveInstance
virtual void setActiveInstance(TDEInstance *instance)
Changes the active instance when the active part changes.
Definition: partmanager.cpp:488
KParts::PartManager::setActivationButtonMask
void setActivationButtonMask(short int buttonMask)
Specifies which mouse buttons the partmanager should react upon.
Definition: partmanager.cpp:165
KParts::PartManager::setSelectedPart
virtual void setSelectedPart(Part *part, TQWidget *widget=0L)
Sets the selected part.
Definition: partmanager.cpp:504
KParts::PartManager::reason
int reason() const
Definition: partmanager.cpp:592
KParts::PartManager::activePart
virtual Part * activePart() const
Returns the active part.
Definition: partmanager.cpp:494
KParts::PartManager::parts
const TQPtrList< Part > * parts() const
Returns the list of parts being managed by the partmanager.
Definition: partmanager.cpp:557
KParts::PartManager::addManagedTopLevelWidget
void addManagedTopLevelWidget(const TQWidget *topLevel)
Adds the topLevel widget to the list of managed toplevel widgets.
Definition: partmanager.cpp:562
KParts::PartManager::SelectionPolicy
SelectionPolicy
Selection policy. The default policy of a PartManager is Direct.
Definition: partmanager.h:58
KParts::PartManager::replacePart
virtual void replacePart(Part *oldPart, Part *newPart, bool setActive=true)
Replaces oldPart with newPart, and sets newPart as active if setActive is true.
Definition: partmanager.cpp:392
KParts::PartManager::setSelectionPolicy
void setSelectionPolicy(SelectionPolicy policy)
Sets the selection policy of the partmanager.
Definition: partmanager.cpp:135
KParts::PartManager::setActivePart
virtual void setActivePart(Part *part, TQWidget *widget=0L)
Sets the active part.
Definition: partmanager.cpp:410
KParts::PartManager::activePartChanged
void activePartChanged(KParts::Part *newPart)
Emitted when the active part has changed.
KParts::PartManager::slotObjectDestroyed
void slotObjectDestroyed()
Removes a part when it is destroyed.
Definition: partmanager.cpp:543
KParts::PartManager::selectedWidget
virtual TQWidget * selectedWidget() const
Returns the selected widget of the current selected part (see selectedPart()).
Definition: partmanager.cpp:538
KParts::PartManager::removeManagedTopLevelWidget
void removeManagedTopLevelWidget(const TQWidget *topLevel)
Removes the topLevel widget from the list of managed toplevel widgets.
Definition: partmanager.cpp:575
KParts::PartManager::activeWidget
virtual TQWidget * activeWidget() const
Returns the active widget of the current active part (see activePart()).
Definition: partmanager.cpp:499
KParts::PartManager::selectedPart
virtual Part * selectedPart() const
Returns the current selected part.
Definition: partmanager.cpp:533
KParts::PartManager::allowNestedParts
bool allowNestedParts() const
Definition: partmanager.cpp:150
KParts::PartManager::selectionPolicy
SelectionPolicy selectionPolicy() const
Returns the current selection policy.
Definition: partmanager.cpp:140
KParts::PartManager::addPart
virtual void addPart(Part *part, bool setActive=true)
Adds a part to the manager.
Definition: partmanager.cpp:332
KParts::PartManager::setAllowNestedParts
void setAllowNestedParts(bool allow)
Specifies whether the partmanager should handle/allow nested parts or not.
Definition: partmanager.cpp:145
KParts::PartManager::partRemoved
void partRemoved(KParts::Part *part)
Emitted when a part has been removed.
KParts::PartSelectEvent
This event is sent when a part is selected or deselected.
Definition: event.h:100
KParts::Part
Base class for parts.
Definition: part.h:182
KParts::Part::isSelectable
bool isSelectable() const
Returns whether the part is selectable or not.
Definition: part.cpp:216
KParts::Part::widget
virtual TQWidget * widget()
Definition: part.cpp:171
KParts::Part::hitTest
virtual Part * hitTest(TQWidget *widget, const TQPoint &globalPos)
Returns the part (this, or a child part) at the given global position.
Definition: part.cpp:186
TDEInstance
kdFatal
kdbgstream kdFatal(int area=0)
kdBacktrace
TQString kdBacktrace(int levels=-1)
kdWarning
kdbgstream kdWarning(int area=0)
endl
kndbgstream & endl(kndbgstream &s)
kdDebug
kdbgstream kdDebug(int area=0)

tdeparts

Skip menu "tdeparts"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeparts

Skip menu "tdeparts"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeparts by doxygen 1.9.4
This website is maintained by Timothy Pearson.