Summary:
This is what I envision for the Konsole Tab / Splits
management. One tab contain a QSPlitter that can contain
multiple TerminalDisplays / Splits.
You can test this behavior by hitting ctrl + shift + 9
and ctrl + shift + 0 to activate the splits, and ctrl +
shift + t to activate a new tab.
Old:
{F6484123}
New:
{F6484124}
What works:
- Tab Creation
- Split Creation (Even Recursive splitting)
- Terminal Close will close the Split on last split
- Last last split to close will close the tab
- Last tab to close will close konsole
- Detaching
- Tab Renaming
- Closing splits after detach
- Closing windows after detach
- Detach / Reattach works!
This patch series has the commits of Thomas Surrel, Maciej Niedbdalski and Myself.
Reviewers: #konsole, hindenburg
Reviewed By: #konsole, hindenburg
Subscribers: luc4, hallas, anthonyfieroni, gennad, ngraham, thsurrel, maciejn, mglb, hindenburg, konsole-devel
Tags: #konsole
Differential Revision: https://phabricator.kde.org/D17643
Summary:
If you moved the tabs to splits in a way that you have a different
number of tabs in each split, and started closing it, the count()
of the tabs would be different and we would hit an assert.
The fix is simple: don't separate the logic between tabEmpty and
tabDestroyed, if the tab is empty it will be destroyed but we can
treat everything in the tabEmpty signal, this way we will never hit
a dangling pointer.
Because of that it was possible that a splitView had a invalid
activeWidget for a microsecond, when it's deleting itself, so
instead of asserting if we have no active view, I choose to return
a empty list of properties.
Reviewers: hindenburg, ngraham, sandsmark
Reviewed By: hindenburg
Subscribers: konsole-devel
Tags: #konsole
Differential Revision: https://phabricator.kde.org/D15379
Summary:
this is a WIP, I don't plan to merge this yet, there are many thigns to solve.
Drop the handmade TabWidget used inside of konsole in favor of Qt's QTabWidget
This drops tons of code we manually did, but it also drops a bit of functionality.
Missing features:
- Close Button
- New Tab on double click
- Drag'n Drop
- Detach
and lots of testing.
Subscribers: konsole-devel
Tags: #konsole
Differential Revision: https://phabricator.kde.org/D13882
So if someone notices later some Qt header is included in the form
of "#include <Class>" instead of the more common form of "#include
<Module/Class>", do not rush changing it.
REVIEW: 105819
* Initial draft of dialogs to manage sessions
- SessionTypeDialog lists available session types and allows the
user to trigger creation, editing or removal of a type.
- EditSessionDialog allows the user to edit an individual session
type.
* Remove access to the old KDE 3 preferences dialog
* Began a re-write of the Konsole part, the intention is to avoid
the duplication of code between the part and the main application
which occurred in KDE 3 and also to make more of the functionality
from the main application available to the part's clients.
* Implement the history size dialog
* Implement SSH bookmarks
* Implement Bookmark Tabs as Folders
* Allow the user to choose which sessions are shown in the 'File' menu
* Implement 'background mode'. When Konsole is started in this mode
(by running "konsole --background-mode") it creates a new session in the
background which can be displayed or hidden at any time by pressing F12.
Idea taken from Yakuake.
* Use tab bar rather than a tab widget for the view container by default,
removes the frame around the terminal display, this does not look correct
if you are using the ported-from-3.5 KDE "Plastik" style in KDE 4.
Qt's very-similar-looking Platique style produces the desired results.
* Fixed two spectacular memory leaks.
* Add option to split the view left/right ( in addition to top/bottom ) and
allow more than two views open at once. Dividing the view into a grid
( aka. "recursive splitting" ) is not yet supported.
* Add menu options to Close Active View and Close Others ( which closes
all views except the active one )
// Behind the scenes stuff
* Rewrote color scheme code
ColorSchema -> ColorScheme
ColorSchemaList -> replaced with global ColorSchemeManager
KDE 4 INI-format color schemes are used if available with fallback to the KDE 3
.schema files otherwise.
* Some more Qt 3 -> 4 porting:
Q3TextEdit -> QTextEdit
Q3IntDict<V> -> QHash<int,V>
Q3PtrList<T> -> QList<T*>
* Various adjustments to resource loading so that the various
*Manager classes can find their resources when being used in
an application other than Konsole ( eg. when being used in a part )
* Change access to singleton managers, the *Manager classes
now have an instance() method to access the global instance and
a setInstance() method which is called by the Application or KPart
constructor to create the manager initially.
* Remove all references to MainWindow from the ViewManager and move
the relevant code to the MainWindow class itself.
svn path=/branches/work/konsole-split-view/; revision=654402
independantly. Added ScreenWindow class which represents a window
onto a terminal screen. Each terminal view has one screen window
associated with it.
This breaks the original design choice of not having the view know anything
about the session it was displaying, but I feel that no longer makes
sense when there is more than one view on a session.
Still work-in-progress
* Add methods to support tooltips in filters
* Add start of new history size dialog which I hope is easier to understand.
* Internal renaming for clarity
ca -> Character
cacol -> CharacterColor
CO_XYZ -> COLOR_SPACE_XYZ
ca.c -> ca.character
ca.r -> ca.rendition
ca.f -> ca.foregroundColor
ca.b -> ca.backgroundColor
svn path=/branches/work/konsole-split-view/; revision=640688
New User-Visible Features:
* 'Merge Windows' feature. This merges all of the existing Konsole windows into a single
window. (The opposite of detach view in a sense). Only merges the views from the active
tab widget in each window at the moment.
* Split-view feature. Splits existing view top/bottom.
New Front-end Progress:
* Make creating a new tab and window work in the new front-end
* Add detach-view in new front-end
* Added ViewManager class which manges views and view containers in a main window as well
as creating new views and session controllers for terminal sessions.
* Added SessionController class which provides the actions associated with an individual session and view.
(including the Edit and History menus)
* Menu items now working: Copy,Paste,Clear,Clear & Reset,Clear History,Configure Konsole
* Wrote a widget for incremental searches in documents ( IncrementalSearchBar ). The widget
is closely modelled on the incremental search bar found in Firefox.
* SessionList class to provide the actions used to create new sessions in menus
Fixes:
* Fix crashes with multiple views caused by trying to change the size of the
terminal image ( via setSize() ) after the user manually resizes the display
* Update terminal size associated with pty when resizing display
* Fix broken signal-slot connection in TabbedViewContainer
* Check for a minimum terminal size of 1 line x 1 column when updating the terminal image
* Ensure that internal array used by display widget to store terminal characters is always non-zero
in size. Also ensure that 'lines' and 'columns' internal properties are always > 0.
Fixes crashes when display widget has a very small height or width.
* Fixed crash with small display widget caused by TEWidget's count of used lines and used columns
(usedLines,usedColumn fields) not being updated when the terminal image was made smaller.
Refactoring:
* Further file renaming for consistancy between file name and class name
* Make ViewContainer subclasses take a QObject* parent argument in their constructors
svn path=/branches/work/konsole-split-view/; revision=618089