• 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 
31 using namespace KParts;
32 
33 template class TQPtrList<Part>;
34 
35 namespace KParts {
36 
37 class PartManagerPrivate
38 {
39 public:
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 
94 PartManager::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 
106 PartManager::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 
118 PartManager::~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 
135 void PartManager::setSelectionPolicy( SelectionPolicy policy )
136 {
137  d->m_policy = policy;
138 }
139 
140 PartManager::SelectionPolicy PartManager::selectionPolicy() const
141 {
142  return d->m_policy;
143 }
144 
145 void PartManager::setAllowNestedParts( bool allow )
146 {
147  d->m_bAllowNestedParts = allow;
148 }
149 
150 bool PartManager::allowNestedParts() const
151 {
152  return d->m_bAllowNestedParts;
153 }
154 
155 void PartManager::setIgnoreScrollBars( bool ignore )
156 {
157  d->m_bIgnoreScrollBars = ignore;
158 }
159 
160 bool PartManager::ignoreScrollBars() const
161 {
162  return d->m_bIgnoreScrollBars;
163 }
164 
165 void PartManager::setActivationButtonMask( short int buttonMask )
166 {
167  d->m_activationButtonMask = buttonMask;
168 }
169 
170 short int PartManager::activationButtonMask() const
171 {
172  return d->m_activationButtonMask;
173 }
174 
175 bool 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 
309 Part * 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 
321 Part * 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 
332 void 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 
368 void 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 
392 void 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 
410 void 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 
488 void PartManager::setActiveInstance( TDEInstance * instance )
489 {
490  // It's a separate method to allow redefining this behavior
491  TDEGlobal::_activeInstance = instance;
492 }
493 
494 Part *PartManager::activePart() const
495 {
496  return d->m_activePart;
497 }
498 
499 TQWidget *PartManager::activeWidget() const
500 {
501  return d->m_activeWidget;
502 }
503 
504 void 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 
533 Part *PartManager::selectedPart() const
534 {
535  return d->m_selectedPart;
536 }
537 
538 TQWidget *PartManager::selectedWidget() const
539 {
540  return d->m_selectedWidget;
541 }
542 
543 void PartManager::slotObjectDestroyed()
544 {
545  kdDebug(1000) << "KPartManager::slotObjectDestroyed()" << endl;
546  removePart( const_cast<Part *>( static_cast<const Part *>( sender() ) ) );
547 }
548 
549 void 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 
557 const TQPtrList<Part> *PartManager::parts() const
558 {
559  return &d->m_parts;
560 }
561 
562 void 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 
575 void 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 
586 void PartManager::slotManagedTopLevelWidgetDestroyed()
587 {
588  const TQWidget *widget = static_cast<const TQWidget *>( sender() );
589  removeManagedTopLevelWidget( widget );
590 }
591 
592 int PartManager::reason() const
593 {
594  return d->m_reason;
595 }
596 
597 void 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)
endl
kndbgstream & endl(kndbgstream &s)
kdBacktrace
TQString kdBacktrace(int levels=-1)
kdWarning
kdbgstream kdWarning(int area=0)
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.1
This website is maintained by Timothy Pearson.