New tab to manage the drag out of the tabbar

wilder-portage
Tomaz Canabrava 8 years ago
parent 494a1b32c8
commit 8cc637f8b7
  1. 1
      src/CMakeLists.txt
  2. 17
      src/DetachableTabBar.cpp
  3. 17
      src/DetachableTabBar.h
  4. 9
      src/ViewContainer.cpp
  5. 1
      src/ViewContainer.h

@ -55,6 +55,7 @@ set(konsoleprivate_SRCS ${sessionadaptors_SRCS}
CopyInputDialog.cpp
EditProfileDialog.cpp
Emulation.cpp
DetachableTabBar.cpp
Filter.cpp
History.cpp
HistorySizeDialog.cpp

@ -0,0 +1,17 @@
#include "DetachableTabBar.h"
#include <QMouseEvent>
DetachableTabBar::DetachableTabBar(QWidget *parent) : QTabBar(parent){}
void DetachableTabBar::mouseMoveEvent(QMouseEvent *event)
{
QTabBar::mouseMoveEvent(event);
}
void DetachableTabBar::mouseReleaseEvent(QMouseEvent *event)
{
QTabBar::mouseReleaseEvent(event);
if (!contentsRect().contains(event->pos())) {
emit detachTab(currentIndex());
}
}

@ -0,0 +1,17 @@
#ifndef DETACHABLETABBAR_H
#define DETACHABLETABBAR_H
#include <QTabBar>
class DetachableTabBar : public QTabBar {
Q_OBJECT
public:
DetachableTabBar(QWidget *parent = nullptr);
Q_SIGNALS:
void detachTab(int idx);
protected:
void mouseMoveEvent(QMouseEvent*event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
};
#endif

@ -28,6 +28,7 @@
#include <QMenu>
#include <QFile>
#include <QOperatingSystemVersion>
#include <QMouseEvent>
// KDE
#include <KColorScheme>
@ -42,16 +43,20 @@
#include "ViewManager.h"
#include "KonsoleSettings.h"
#include "SessionController.h"
#include "DetachableTabBar.h"
// TODO Perhaps move everything which is Konsole-specific into different files
using namespace Konsole;
TabbedViewContainer::TabbedViewContainer(ViewManager *connectedViewManager, QWidget *parent) :
QTabWidget(parent),
_connectedViewManager(connectedViewManager),
_newTabButton(new QToolButton())
{
auto tabBarWidget = new DetachableTabBar();
setTabBar(tabBarWidget);
setDocumentMode(true);
setMovable(true);
@ -66,11 +71,13 @@ TabbedViewContainer::TabbedViewContainer(ViewManager *connectedViewManager, QWid
connect(tabBar(), &QTabBar::tabCloseRequested,
this, &TabbedViewContainer::closeTerminalTab);
connect(tabBar(), &QTabBar::tabBarDoubleClicked, this,
&Konsole::TabbedViewContainer::tabDoubleClicked);
connect(tabBar(), &QTabBar::customContextMenuRequested, this,
&Konsole::TabbedViewContainer::openTabContextMenu);
connect(tabBarWidget, &DetachableTabBar::detachTab, this, [this](int idx) {
qDebug() << "Trying to detach this";
});
connect(this, &TabbedViewContainer::currentChanged, this, [this](int index) {
if (index != -1) {

@ -28,6 +28,7 @@
#include <QHash>
#include <QList>
#include <QTabWidget>
#include <QTabBar>
// Konsole
#include "Profile.h"

Loading…
Cancel
Save