diff options
| -rw-r--r-- | src/mainview.cpp | 24 | ||||
| -rw-r--r-- | src/mainview.h | 6 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 2 | ||||
| -rw-r--r-- | src/tabbar.cpp | 82 | ||||
| -rw-r--r-- | src/tabbar.h | 4 | 
5 files changed, 56 insertions, 62 deletions
| diff --git a/src/mainview.cpp b/src/mainview.cpp index ba7b720e..a0b0c6e7 100644 --- a/src/mainview.cpp +++ b/src/mainview.cpp @@ -131,7 +131,7 @@ int MainView::webViewIndex(WebView *webView) const  } -void MainView::showTabBar() +void MainView::updateTabBar()  {      if (ReKonfig::alwaysShowTabBar())      { @@ -139,6 +139,7 @@ void MainView::showTabBar()          {              m_tabBar->show();          } +        m_tabBar->updateNewTabButton();      }      else      { @@ -152,6 +153,7 @@ void MainView::showTabBar()              {                  m_tabBar->show();              } +            m_tabBar->updateNewTabButton();          }      }  } @@ -283,15 +285,15 @@ WebView *MainView::newWebView(bool focused, bool nearParent)          insertTab(currentIndex() + 1, webView, i18n("(Untitled)"));      else          addTab(webView, i18n("(Untitled)")); -        + +    updateTabBar(); +          if (focused)      {          setCurrentWidget(webView);      }      emit tabsChanged(); - -    showTabBar();      return webView;  } @@ -369,7 +371,7 @@ void MainView::slotCloseOtherTabs(int index)          slotCloseTab(i);      } -    showTabBar(); +    updateTabBar();  } @@ -383,7 +385,7 @@ void MainView::slotCloneTab(int index)      WebView *tab = newWebView();      tab->setUrl(webView(index)->url()); -    showTabBar(); +    updateTabBar();  } @@ -418,6 +420,7 @@ void MainView::slotCloseTab(int index)      QWidget *webView = widget(index);      removeTab(index); +    updateTabBar();         // UI operation: do it ASAP!!      webView->deleteLater();  // webView is scheduled for deletion.      emit tabsChanged(); @@ -426,8 +429,6 @@ void MainView::slotCloseTab(int index)      {          currentWebView()->setFocus();      } - -    showTabBar();  } @@ -578,3 +579,10 @@ KUrl::List MainView::recentlyClosedTabs()  {      return m_recentlyClosedTabs;  } + + +void MainView::resizeEvent(QResizeEvent *event) +{ +    updateTabBar(); +    KTabWidget::resizeEvent(event); +}
\ No newline at end of file diff --git a/src/mainview.h b/src/mainview.h index 96710919..db4c455d 100644 --- a/src/mainview.h +++ b/src/mainview.h @@ -76,7 +76,7 @@ public:       * "Always Show TabBar" option       *       */ -    void showTabBar(); +    void updateTabBar();      void clear();      /** @@ -136,7 +136,9 @@ private slots:      void windowCloseRequested(); -     +protected: +    virtual void resizeEvent(QResizeEvent *event); +  private:      /**       * This function creates (if not exists) and returns a QLabel diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c0008cba..a75c3d16 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -451,7 +451,7 @@ void MainWindow::setupSidePanel()  void MainWindow::slotUpdateConfiguration()  {      // ============== General ================== -    mainView()->showTabBar(); +    mainView()->updateTabBar();      // =========== Fonts ==============      QWebSettings *defaultSettings = QWebSettings::globalSettings(); diff --git a/src/tabbar.cpp b/src/tabbar.cpp index 94f2c274..b1b727ae 100644 --- a/src/tabbar.cpp +++ b/src/tabbar.cpp @@ -89,11 +89,6 @@ TabBar::~TabBar()  void TabBar::postLaunch()  { -    // HACK this is used to fix add tab button position -    QToolButton *secondAddTabButton = new QToolButton(this); -    secondAddTabButton->setAutoRaise(true); -    secondAddTabButton->setToolButtonStyle(Qt::ToolButtonIconOnly); -          // Find the correct MainWindow of this tab button      MainWindowList list = Application::instance()->mainWindowList();      Q_FOREACH(QPointer<MainWindow> w, list) @@ -101,7 +96,6 @@ void TabBar::postLaunch()          if (w->isAncestorOf(this))          {              m_addTabButton->setDefaultAction(w->actionByName("new_tab")); -            secondAddTabButton->setDefaultAction(w->actionByName("new_tab"));              break;          }      } @@ -109,10 +103,6 @@ void TabBar::postLaunch()      m_addTabButton->setAutoRaise(true);      m_addTabButton->setToolButtonStyle(Qt::ToolButtonIconOnly);      m_addTabButton->show(); -     -    // stupid tabbar, that's what you gain... -    m_parent->setCornerWidget(secondAddTabButton); -    m_parent->cornerWidget()->hide();  } @@ -147,13 +137,6 @@ QSize TabBar::tabSizeHint(int index) const  } -void TabBar::tabLayoutChange() -{ -    setTabButtonPosition(); -    KTabBar::tabLayoutChange(); -} - -  void TabBar::contextMenuRequested(const QPoint &position)  {      KMenu menu; @@ -205,37 +188,6 @@ void TabBar::reloadTab()  } -void TabBar::setTabButtonPosition() -{ -    if(count() >= MIN_WIDTH_DIVISOR - 1) -    { -        if(m_addTabButton->isVisible()) -        { -            m_addTabButton->hide(); -            m_parent->cornerWidget()->show(); -        } -        return; -    } -     -    if(m_addTabButton->isHidden()) -    { -        m_addTabButton->show(); -        m_parent->cornerWidget()->hide(); -    } - -    int tabWidgetWidth = frameSize().width(); -    int tabBarWidth = tabSizeHint(0).width()*count(); -    int newPosY = height() - m_addTabButton->height(); -    int newPosX = tabWidgetWidth - m_addTabButton->width(); - -    if (tabBarWidth + m_addTabButton->width() < tabWidgetWidth) -        newPosX = tabBarWidth; - -    m_addTabButton->move(newPosX, newPosY); -    m_addTabButton->show(); -} - -  void TabBar::showTabPreview(int tab)  {      WebView *view = m_parent->webView(tab); @@ -316,3 +268,37 @@ void TabBar::leaveEvent(QEvent *event)      KTabBar::leaveEvent(event);  } + + +void TabBar::updateNewTabButton() +{ +    static bool ButtonInCorner = false; + +    int tabWidgetWidth = m_parent->frameSize().width(); +    int tabBarWidth = tabSizeHint(0).width() * count(); + +    if (tabBarWidth + m_addTabButton->width() > tabWidgetWidth) +    { +        if(ButtonInCorner) +            return; +        m_parent->setCornerWidget(m_addTabButton); +        ButtonInCorner = true; +    } +    else +    { +        if(ButtonInCorner) +        { +            m_parent->setCornerWidget(0); +            m_addTabButton->show(); +            ButtonInCorner = false; +        } + +        int newPosX = tabWidgetWidth - m_addTabButton->width(); +        int newPosY = height() - m_addTabButton->height(); + +        if (tabBarWidth + m_addTabButton->width() < tabWidgetWidth) +            newPosX = tabBarWidth; + +        m_addTabButton->move(newPosX, newPosY); +    } +} diff --git a/src/tabbar.h b/src/tabbar.h index dd08f7b8..580021c4 100644 --- a/src/tabbar.h +++ b/src/tabbar.h @@ -63,6 +63,7 @@ public:      ~TabBar();      void showTabPreview(int tab); +    void updateNewTabButton();  signals:      void cloneTab(int index); @@ -76,7 +77,6 @@ protected:       * Added to fix tab dimension       */      virtual QSize tabSizeHint(int index) const; -    virtual void tabLayoutChange();      virtual void mouseMoveEvent(QMouseEvent *event);      virtual void leaveEvent(QEvent *event); @@ -89,8 +89,6 @@ private slots:      void postLaunch();  private: -    void setTabButtonPosition(); -      MainView *m_parent;      QToolButton *m_addTabButton; | 
