aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/webviewtabbar.cpp37
-rw-r--r--src/widgets/webviewtabbar.h2
2 files changed, 39 insertions, 0 deletions
diff --git a/src/widgets/webviewtabbar.cpp b/src/widgets/webviewtabbar.cpp
index c091e56..db44bc9 100644
--- a/src/widgets/webviewtabbar.cpp
+++ b/src/widgets/webviewtabbar.cpp
@@ -19,13 +19,44 @@
******************************************************************************/
#include "webviewtabbar.h"
+#include "settings.h"
+#include <QAction>
WebViewTabBar::WebViewTabBar(QWidget *parent) :
QTabBar(parent)
{
+ setElideMode(Qt::ElideRight);
setTabsClosable(true);
+ setMovable(true);
connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(handleTabClose(int)));
connect(this, SIGNAL(currentChanged(int)), this, SLOT(handleCurrentChanged(int)));
+ connect(this, SIGNAL(tabMoved(int,int)), this, SLOT(updateVectorArrangement(int,int)));
+
+ Settings settings;
+ if(settings.contains("shortcuts/tabClose")) {
+ QAction *tabCloseAction = new QAction(this);
+ tabCloseAction->setShortcut(QKeySequence::fromString(settings.value("shortcuts/tabClose").toString()));
+ connect(tabCloseAction, &QAction::triggered, [this]() {
+ this->handleTabClose(currentIndex());
+ });
+ addAction(tabCloseAction);
+ }
+ if(settings.contains("shortcuts/tabLeft")) {
+ QAction *tabLeftAction = new QAction(this);
+ tabLeftAction->setShortcut(QKeySequence::fromString(settings.value("shortcuts/tabLeft").toString()));
+ connect(tabLeftAction, &QAction::triggered, [this]() {
+ this->setCurrentIndex(currentIndex()-1);
+ });
+ addAction(tabLeftAction);
+ }
+ if(settings.contains("shortcuts/tabRight")) {
+ QAction *tabRightAction = new QAction(this);
+ tabRightAction->setShortcut(QKeySequence::fromString(settings.value("shortcuts/tabRight").toString()));
+ connect(tabRightAction, &QAction::triggered, [this]() {
+ this->setCurrentIndex(currentIndex()+1);
+ });
+ addAction(tabRightAction);
+ }
}
WebViewTabBar::~WebViewTabBar()
@@ -83,6 +114,7 @@ void WebViewTabBar::handleCurrentChanged(int index)
void WebViewTabBar::handleTabClose(int index)
{
+ qDebug("removing tab %i", index);
removeTab(index);
m_views.at(index)->deleteLater();
m_views.remove(index);
@@ -93,3 +125,8 @@ void WebViewTabBar::updateTabText(WebView *view, const QString &text)
int index = m_views.indexOf(view);
setTabText(index, text);
}
+
+void WebViewTabBar::updateVectorArrangement(int from, int to)
+{
+ m_views.move(from, to);
+}
diff --git a/src/widgets/webviewtabbar.h b/src/widgets/webviewtabbar.h
index 260100b..9029bf5 100644
--- a/src/widgets/webviewtabbar.h
+++ b/src/widgets/webviewtabbar.h
@@ -48,8 +48,10 @@ private slots:
void handleTabClose(int index);
void updateTabText(WebView *view, const QString &text);
+ void updateVectorArrangement(int from, int to);
private:
+ // store all views in a vector since tabs can only store a QVariant, and that can't easily take a pointer
QVector<WebView*> m_views;
};