* speeds up incremental builds as changes to a header will not always
need the full mocs_compilation.cpp for all the target's headers rebuild,
while having a moc file sourced into a source file only adds minor
extra costs, due to small own code and the used headers usually
already covered by the source file, being for the same class/struct
* seems to not slow down clean builds, due to empty mocs_compilation.cpp
resulting in those quickly processed, while the minor extra cost of the
sourced moc files does not outweigh that in summary.
Measured times actually improved by some percent points.
(ideally CMake would just skip empty mocs_compilation.cpp & its object
file one day)
* enables compiler to see all methods of a class in same compilation unit
to do some sanity checks
* potentially more inlining in general, due to more in the compilation unit
* allows to keep using more forward declarations in the header, as with the
moc code being sourced into the cpp file there definitions can be ensured
and often are already for the needs of the normal class methods
_showAllFonts and _showAllFontsWarning widgets only have functionality for non emoji font selection dialog.
They are shown as redundant and blank widgets at a misplaced position for emoji font selection dialog.
This change simply hides them.
BUG: 469563
QT can't be made to draw monospaced text (if the font does not cooperate),
so avoid combining characters, using a QPainter::drawText() call for each
character.
For bidi text support this change requires konsole to reorder and reshape
the characters. This is done using the ICU library (which QT also uses).
This change allows for some improvements related to text rendering:
- More precise bidi reordering, which is no longer changed by characters'
attributes and selection.
- underlines drawn separately from the text, allowing for differing
underline modes (double, curly, dashed, dotted, colored).
- Overriding font for emoji characters.
This commit fixes a few bugs and addresses a lot more:
Feature requests: More standard conforming RTL and various underlines:
BUG: 403729
BUG: 387811
Using non-monospace font:
BUG: 416508
BUG: 452087
BUG: 425973
BUG: 430822
BUG: 442742
BUG: 441037
BUG: 430822
Emoji:
BUG: 440070
CCBUG: 450017
CCBUG: 445846
CCBUG: 453086
Regression: devanagari rendering
CCBUG: 381593
CCBUG: 451716
Summary:
Overall changes
---------------
* Use a dialog with category buttons on the left, which is used in most
KDE applications
* Apply KDE HIG as much as possible
* Align layout columns in multiple group boxes
* Move some settings to another groups
General page
------------
{F6447280}
Profile name and icon, and settings related to session/application
initialization.
* Move "Show hint for terminal size after resizing" to Appearance page
* Move "Dim the colors when the window loses focus" to Appearance page
Tabs page, rename tab dialog
----------------------------
{F6447281}
Tabs settings
* Only minor UI changes
Appearance page
---------------
{F6447282} {F6447283} {F6447284}
{F6447290}
Settings related to basic appearance.
* Add additional tabs
* Cursor - cursor settings from Advanced page
* Miscellaneous
* Add "Line spacing" from Advanced page
* Add previously missing terminal margins and terminal center
settings (4 years old config-only feature)
* Add "Show hint for terminal size after resizing" from General page
* Add "Dim the colors when the window loses focus" from General page
* Use customized font selection dialog
* Show all printable ASCII characters and look-alike character sets as
a preview
* Live preview for changes in the dialog
* Move "Show all fonts" to the font selection dialog
* Remove "text size" (it is replaced with live preview in the font
dialog)
* Add live preview for cursor settings
* Add live preview for "Line spacing"
Scrolling page, history size dialog
-----------------------------------
{F6447285}
Settings related to scrolling and history.
* Replace popping-in warning frames in "Scrollback" group with warning
buttons which show floating warning after click. The controls does
not change position anymore when switching the scrollback options.
Applies also to history size dialog.
* Replace scrollbar "hide"/"show on left side"/"show on right side"
options with "visible" checkbox and "show on left side"/"show on
right side" options enabled after checking the checkbox.
Keyboard page
-------------
{F6447286}
* Removed redundant group box
Mouse page
----------
{F6447287}
{F6447288}
* Shorten "Characters considered part of a word..." label
* Replace "triple-click selects" drop-down with option buttons
* Split settings to "Text interaction" and "Miscellaneous" tabs
* Use monospace font for "Word characters" text input
Advanced page
-------------
{F6447289}
More advanced settings or settings regular user don't care about.
* Replace "Show URL hints when these keys are pressed" checkboxes with
toggle buttons which are easier to associate visually with hardware
keys
* Move "Line spacing" to Appearance tab
* Move cursor settings to Appearance tab
* Show "Default character encoding" value directly on drop-down button
Preview for: breeze (dark colors), Oxygen, QtCurve
--------------------------------------------------
{F6447339}
Test Plan:
* Check visually with light/dark color scheme, Breeze, Fusion, Oxygen,
QtCurve widget styles, normal/large font, QT_SCALE_FACTOR set
to 1 and 2
* Change every possible control to check UI logic
* Change as much settings as possible and see if they are applied
Reviewers: #konsole, #vdg, ngraham, hindenburg
Reviewed By: #konsole, #vdg, ngraham, hindenburg
Subscribers: emateli, loh.tar, hein, mart, hindenburg, rizzitello, abetts, ngraham, konsole-devel
Tags: #konsole
Differential Revision: https://phabricator.kde.org/D17244