[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