Added x-attach-split-to-window command line arg (#2411)

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This commit is contained in:
fourtf
2021-04-17 16:15:23 +02:00
committed by GitHub
parent 58017a7546
commit 2db140d5af
21 changed files with 350 additions and 160 deletions
+57 -9
View File
@@ -11,6 +11,7 @@
#include "widgets/Notebook.hpp"
#include "widgets/helper/ChannelView.hpp"
#include "widgets/helper/NotebookTab.hpp"
#include "widgets/splits/ClosedSplits.hpp"
#include "widgets/splits/Split.hpp"
#include <QApplication>
@@ -160,8 +161,6 @@ void SplitContainer::insertSplit(Split *split, Direction direction,
assertInGuiThread();
split->setContainer(this);
if (relativeTo == nullptr)
{
if (this->baseNode_.type_ == Node::EmptyRoot)
@@ -211,7 +210,9 @@ void SplitContainer::addSplit(Split *split)
this->refreshTab();
this->managedConnect(split->getChannelView().tabHighlightRequested,
auto &&conns = this->connectionsPerSplit_[split];
conns.managedConnect(split->getChannelView().tabHighlightRequested,
[this](HighlightState state) {
if (this->tab_ != nullptr)
{
@@ -219,14 +220,64 @@ void SplitContainer::addSplit(Split *split)
}
});
this->managedConnect(split->getChannelView().liveStatusChanged, [this]() {
conns.managedConnect(split->getChannelView().liveStatusChanged, [this]() {
this->refreshTabLiveStatus();
});
this->managedConnect(split->focused, [this, split] {
conns.managedConnect(split->focused, [this, split] {
this->setSelected(split);
});
conns.managedConnect(split->openSplitRequested, [this](auto channel) {
this->appendNewSplit(false)->setChannel(channel);
});
conns.managedConnect(
split->actionRequested, [this, split](Split::Action action) {
switch (action)
{
case Split::Action::RefreshTab:
this->refreshTab();
break;
case Split::Action::ResetMouseStatus:
this->resetMouseStatus();
break;
case Split::Action::AppendNewSplit:
this->appendNewSplit(true);
break;
case Split::Action::Delete: {
this->deleteSplit(split);
auto *tab = this->getTab();
tab->connect(tab, &QWidget::destroyed, [tab]() mutable {
ClosedSplits::invalidateTab(tab);
});
ClosedSplits::push({split->getChannel()->getName(), tab});
}
break;
case Split::Action::SelectSplitLeft:
this->selectNextSplit(SplitContainer::Left);
break;
case Split::Action::SelectSplitRight:
this->selectNextSplit(SplitContainer::Right);
break;
case Split::Action::SelectSplitAbove:
this->selectNextSplit(SplitContainer::Above);
break;
case Split::Action::SelectSplitBelow:
this->selectNextSplit(SplitContainer::Below);
break;
}
});
conns.managedConnect(split->insertSplitRequested, [this](int dir,
Split *parent) {
this->insertSplit(new Split(this), static_cast<Direction>(dir), parent);
});
this->layout();
}
@@ -282,10 +333,7 @@ SplitContainer::Position SplitContainer::releaseSplit(Split *split)
this->refreshTab();
// fourtf: really bad
split->getChannelView().tabHighlightRequested.disconnectAll();
split->getChannelView().tabHighlightRequested.disconnectAll();
this->connectionsPerSplit_.erase(this->connectionsPerSplit_.find(split));
return position;
}