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

kparts

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

kparts

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

kparts

Skip menu "kparts"
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • krandr
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for kparts by doxygen 1.8.11
This website is maintained by Timothy Pearson.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. |