Maximized views must be un-maximized before certain actions:
- detach view
- split view
- move to new tab
- close
This commit fixes the toggle state getting out of sync after those
actions, adds the un-maximize step for splitting a maximized view,
and reduces code duplication by adding ViewSplitter::clearMaximized(),
For now, clearMaximized() does need to be called manually: we want the
display restored before the removal, but ViewSplitter handles removals
after the fact with QEvent::ChildRemoved.
When a Splitter has only one child, it can be removed, and the
child can be united with the widget above, unless it's the only
splitter - as that holds the main widget.
New ViewSplitter showEvent() method override sets focus proxy before
showing the MainWindow. It is userful for background mode to keep active
terminal focused.
BUG: 411543
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