Don't duplicate the tabs when Spliting the View
AbandonedPublic

Authored by tcanabrava on Nov 30 2018, 3:11 PM.

Details

Reviewers
None
Summary

Instead of iterating over the sessions to fetch the view and
duplicate the current screen once for each split, igore all
of them and just create a new terminal view. The only thing
this terminal view shares with the previous current widget
is the profile.

Only create a new tab in the *current* Container

Instead of duplicating tabs in all of the split views.

Test Plan

manually run tests and splits / tabs

Diff Detail

Repository
R319 Konsole
Branch
dontDuplicateTabs
Lint
No Linters Available
Unit
No Unit Test Coverage
Build Status
Buildable 5546
Build 5564: arc lint + arc unit
tcanabrava created this revision.Nov 30 2018, 3:11 PM
Restricted Application added a project: Konsole. · View Herald TranscriptNov 30 2018, 3:11 PM
Restricted Application added a subscriber: konsole-devel. · View Herald Transcript
tcanabrava requested review of this revision.Nov 30 2018, 3:11 PM

before:

After:

I like the feature but it crashes when I do the following:

  • open left/right split view
  • close the right side with Ctrl-D

sorry for the crash, I'm researching what caused it.

gennad added a subscriber: gennad.Nov 30 2018, 4:31 PM

I'm a bit lost on what cause it so I accept help if you have a bit of time.
The crash is inside the eventFilter of the mainwindow with the following
backtrace:

#0 0x00007ffff7f822ac in QWeakPointer<QObject>::QWeakPointer
(this=0x7fffffffce20, other=...) at
/usr/include/qt/QtCore/qsharedpointer_impl.h:589
#1 0x00007ffff7f8d8dd in QPointer<Konsole::TerminalDisplay>::QPointer
(this=0x7fffffffce20) at /usr/include/qt/QtCore/qpointer.h:53
#2 0x00007ffff7f8d923 in Konsole::SessionController::view (this=0x0) at
/home/tcanabrava/Projects/kdesrc/konsole/src/SessionController.h:116
#3 0x00007ffff7f8ceae in Konsole::MainWindow::eventFilter
(this=0x5555555e9880, obj=0x555555961ed0, event=0x7fffffffd0e0) at
/home/tcanabrava/Projects/kdesrc/konsole/src/MainWindow.cpp:847
#4 0x00007ffff5bd094b in
QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*)
() from /usr/lib/libQt5Core.so.5
#5 0x00007ffff6614e04 in QApplicationPrivate::notify_helper(QObject*,
QEvent*) () from /usr/lib/libQt5Widgets.so.5
#6 0x00007ffff661c6e1 in QApplication::notify(QObject*, QEvent*) () from
/usr/lib/libQt5Widgets.so.5
#7 0x00007ffff5bd0c39 in QCoreApplication::notifyInternal2(QObject*,
QEvent*) () from /usr/lib/libQt5Core.so.5

So aparently we are calling a already destructed SessionController, I
belive I missed *something* while constructing this session controller
that's making it not disconnect on the mainwindow but I can't find where.
konsole's initialization of the TerminalDisplays / Sessions / Controllers
etc are still a bit of mistery to me.

Can you try to shed some ligth?

tcanabrava abandoned this revision.Nov 30 2018, 5:01 PM

arc diff created a new revision instead of updating this one, sorry for the noise. https://phabricator.kde.org/D17267