43 #include <tdepopupmenu.h>
46 #include <tqobjectlist.h>
48 #include "tabwidget.h"
49 #include "tabwidget.moc"
53 class TabWidgetPrivate
62 TabWidget::TabWidget(TQWidget* parent,
const char* name)
63 : KTabWidget(parent,name)
64 , m_visibility (
KMDI::ShowWhenMoreThanOneTab)
65 , d (new KMDIPrivate::TabWidgetPrivate())
67 installEventFilter (
this);
71 setHoverCloseButton(
true);
73 connect(
this, TQ_SIGNAL(closeRequest(TQWidget*)),
this, TQ_SLOT(closeTab(TQWidget*)));
76 TabWidget::~TabWidget()
82 bool TabWidget::eventFilter(TQObject *obj, TQEvent *e )
84 if(e->type() == TQEvent::FocusIn)
88 else if (e->type() == TQEvent::ChildRemoved)
92 TQObject* pLostChild = ((TQChildEvent*)e)->child();
93 if ((pLostChild != 0L) && (pLostChild->isWidgetType())) {
94 TQObjectList *list = pLostChild->queryList(
"TQWidget" );
95 list->insert(0, pLostChild);
96 TQObjectListIt it( *list );
98 while ( (o=it.current()) != 0 ) {
99 TQWidget* widg = (TQWidget*)o;
101 widg->removeEventFilter(
this);
106 else if (e->type() == TQEvent::ChildInserted)
111 TQObject* pNewChild = ((TQChildEvent*)e)->child();
112 if ((pNewChild != 0L) && (pNewChild->isWidgetType()))
114 TQWidget* pNewWidget = (TQWidget*)pNewChild;
115 if (pNewWidget->testWFlags((WFlags)(WType_Dialog | WShowModal)))
117 TQObjectList *list = pNewWidget->queryList(
"TQWidget" );
118 list->insert(0, pNewChild);
119 TQObjectListIt it( *list );
121 while ( (o=it.current()) != 0 ) {
122 TQWidget* widg = (TQWidget*)o;
124 widg->installEventFilter(
this);
125 connect(widg, TQ_SIGNAL(destroyed()),
this, TQ_SLOT(childDestroyed()));
131 return KTabWidget::eventFilter (obj, e);
134 void TabWidget::childDestroyed()
138 const TQObject* pLostChild = sender();
139 if ((pLostChild != 0L) && (pLostChild->isWidgetType()))
141 TQObjectList *list = ((TQObject*)(pLostChild))->queryList(
"TQWidget");
142 list->insert(0, pLostChild);
143 TQObjectListIt it( *list );
145 while ( (obj=it.current()) != 0 ) {
146 TQWidget* widg = (TQWidget*)obj;
148 widg->removeEventFilter(
this);
154 void TabWidget::closeTab(TQWidget* w)
159 void TabWidget::addTab ( TQWidget * child,
const TQString & label )
161 KTabWidget::addTab(child,label);
166 void TabWidget::addTab ( TQWidget * child,
const TQIconSet & iconset,
const TQString & label )
168 KTabWidget::addTab(child,iconset,label);
173 void TabWidget::addTab ( TQWidget * child, TQTab * tab )
175 KTabWidget::addTab(child,tab);
180 void TabWidget::insertTab ( TQWidget * child,
const TQString & label,
int index)
182 KTabWidget::insertTab(child,label,index);
188 void TabWidget::insertTab ( TQWidget * child,
const TQIconSet & iconset,
const TQString & label,
int index )
190 KTabWidget::insertTab(child,iconset,label,index);
196 void TabWidget::insertTab ( TQWidget * child, TQTab * tab,
int index)
198 KTabWidget::insertTab(child,tab,index);
204 void TabWidget::removePage ( TQWidget * w )
206 KTabWidget::removePage(w);
210 void TabWidget::updateIconInView( TQWidget *w, TQPixmap icon )
212 changeTab(w,icon,tabLabel(w));
215 void TabWidget::updateCaptionInView( TQWidget *w,
const TQString &caption )
217 changeTab(w, caption);
220 void TabWidget::maybeShow()
222 switch (m_visibility)
224 case KMDI::AlwaysShowTabs:
229 setCornerWidgetVisibility(
false);
231 setCornerWidgetVisibility(
true);
235 case KMDI::ShowWhenMoreThanOneTab:
236 if (count()<2) tabBar()->hide();
237 else tabBar()->show();
241 setCornerWidgetVisibility(
false);
243 setCornerWidgetVisibility(
true);
247 case KMDI::NeverShowTabs:
253 void TabWidget::setCornerWidgetVisibility(
bool visible) {
256 if (cornerWidget(TQt::TopLeft) ) {
258 cornerWidget(TQt::TopLeft)->show();
260 cornerWidget(TQt::TopLeft)->hide();
263 if (cornerWidget(TQt::TopRight) ) {
265 cornerWidget(TQt::TopRight)->show();
267 cornerWidget(TQt::TopRight)->hide();
271 void TabWidget::setTabWidgetVisibility( KMDI::TabWidgetVisibility visibility )
273 m_visibility = visibility;
277 KMDI::TabWidgetVisibility TabWidget::tabWidgetVisibility( )
const
A namespace for the KMDI library.