[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: Re: Patch to add 'close tab' button in Mozilla style to Konqueror.
From: Rik Hemsley <rik () kde ! org>
Date: 2002-06-05 1:26:48
[Download RAW message or body]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
#if Rik Hemsley
> Oops, took out the resizeEvent() code and forgot to put it back in.
Corrected patch attached.
Rik
- --
http://rikkus.info
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE8/WjY6rehpl6X9l0RAqiCAJ9JKj2geJ0h5NxHo7tHL+tX+u3f7QCghvrf
y1GzBDuAguPckUPVleAKDlw=
=Auh4
-----END PGP SIGNATURE-----
["close_button.diff" (text/x-diff)]
Index: konq_frame.cc
===================================================================
RCS file: /home/kde/kdebase/konqueror/konq_frame.cc,v
retrieving revision 1.145
diff -u -3 -p -r1.145 konq_frame.cc
--- konq_frame.cc 2002/05/08 18:50:06 1.145
+++ konq_frame.cc 2002/06/05 01:27:42
@@ -783,6 +783,12 @@ void KonqTabBar::mouseReleaseEvent(QMous
kdDebug(1202) << "KonqTabBar::mouseReleaseEvent end" << endl;
}
+void KonqTabBar::layoutTabs()
+{
+ QTabBar::layoutTabs();
+ emit(doneTabLayout());
+}
+
KonqFrameTabs::KonqFrameTabs(QWidget* parent, KonqFrameContainerBase* \
parentContainer, KonqViewManager* viewManager, const char * name) : \
QTabWidget(parent, name) {
@@ -793,9 +799,29 @@ KonqFrameTabs::KonqFrameTabs(QWidget* pa
m_pChildFrameList->setAutoDelete(false);
m_pActiveChild = 0L;
m_pViewManager = viewManager;
+
+ m_closeActiveTabButton = new QToolButton(this);
+ m_closeActiveTabButton->setPixmap(SmallIcon("tab_remove"));
+ m_closeActiveTabButton->setFixedSize(16, 16);
+ m_closeActiveTabButton->move(width() - 18, 2);
+
+ connect
+ (
+ m_closeActiveTabButton,
+ SIGNAL(clicked()),
+ m_pViewManager->mainWindow(),
+ SLOT(slotRemoveTabPopup())
+ );
+
+ m_closeActiveTabButton->setEnabled(false);
+ m_closeActiveTabButton->hide();
- setTabBar( new KonqTabBar( m_pViewManager, this ) );
+ KonqTabBar * tabBar = new KonqTabBar( m_pViewManager, this );
+ connect(tabBar, SIGNAL(doneTabLayout()), SLOT(slotDoneTabLayout()));
+
+ setTabBar( tabBar );
+
connect( this, SIGNAL( currentChanged ( QWidget * ) ), this, SLOT( \
slotCurrentChanged( QWidget* ) ) ); }
@@ -908,6 +934,9 @@ void KonqFrameTabs::insertChildFrame( Ko
}
else
kdWarning(1202) << "KonqFrameTabs " << this << ": insertChildFrame(0L) !" << \
endl; +
+ m_closeActiveTabButton->setEnabled(true);
+ m_closeActiveTabButton->show();
}
void KonqFrameTabs::removeChildFrame( KonqFrameBase * frame )
@@ -920,6 +949,12 @@ void KonqFrameTabs::removeChildFrame( Ko
else
kdWarning(1202) << "KonqFrameTabs " << this << ": removeChildFrame(0L) !" << \
endl;
+ if (0 == tabBar()->count())
+ {
+ m_closeActiveTabButton->setEnabled(false);
+ m_closeActiveTabButton->hide();
+ }
+
kdDebug(1202) << "KonqFrameTabs::RemoveChildFrame finished" << endl;
}
@@ -931,6 +966,24 @@ void KonqFrameTabs::slotCurrentChanged(
m_pActiveChild = currentFrame;
currentFrame->activateChild();
}
+}
+
+void KonqFrameTabs::slotDoneTabLayout()
+{
+ if (tabBar()->width() > width() - 20)
+ tabBar()->resize(tabBar()->width() - 20, tabBar()->height());
+
+ m_closeActiveTabButton->move(width() - 18, 2);
+}
+
+void KonqFrameTabs::resizeEvent(QResizeEvent * e)
+{
+ QTabWidget::resizeEvent(e);
+
+ if (tabBar()->width() > width() - 20)
+ tabBar()->resize(tabBar()->width() - 20, tabBar()->height());
+
+ m_closeActiveTabButton->move(width() - 18, 2);
}
#include "konq_frame.moc"
Index: konq_frame.h
===================================================================
RCS file: /home/kde/kdebase/konqueror/konq_frame.h,v
retrieving revision 1.70
diff -u -3 -p -r1.70 konq_frame.h
--- konq_frame.h 2002/05/05 18:37:09 1.70
+++ konq_frame.h 2002/06/05 01:27:43
@@ -424,9 +424,15 @@ class KonqTabBar : public QTabBar
public:
KonqTabBar(KonqViewManager* viewManager, KonqFrameTabs *parent, const char *name \
= 0);
+ virtual void layoutTabs();
+
protected:
void mouseReleaseEvent(QMouseEvent *e);
+ signals:
+
+ void doneTabLayout();
+
private:
KonqFrameTabs* m_pTabWidget;
KonqViewManager* m_pViewManager;
@@ -476,14 +482,20 @@ public:
public slots:
void slotCurrentChanged( QWidget* newPage );
+protected slots:
+ void slotDoneTabLayout();
+
signals:
void ctrlTabPressed();
protected:
QPtrList<KonqFrameBase>* m_pChildFrameList;
+ void resizeEvent(QResizeEvent *);
private:
KonqViewManager* m_pViewManager;
+
+ QToolButton * m_closeActiveTabButton;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic