Scott Kostyshak [Thu, 19 Mar 2020 22:22:16 +0000 (18:22 -0400)]
cat.py: fix Python deprecation warning
This commit fixes the following warning:
DeprecationWarning: 'U' mode is deprecated
Removing 'U' has no effect with Python 3 [1]:
There is an additional mode character permitted, 'U', which no
longer has any effect, and is considered deprecated. It previously
enabled universal newlines in text mode, which became the default
behaviour in Python 3.0.
Scott Kostyshak [Fri, 20 Mar 2020 13:12:47 +0000 (09:12 -0400)]
Remove redundant font loader code
Setting the family to "family" is already attempted above. A
different case was adapted to be this duplicate case at d4ff3a29,
but it should have just been removed.
Scott Kostyshak [Thu, 19 Mar 2020 16:20:16 +0000 (12:20 -0400)]
Fix Qt dep warn and remove XLFD font workaround
This commit fixes a few warnings from Qt 5.14 regarding
QFont::setRawName() and QFont::rawName() like the following one:
error: ‘void QFont::setRawName(const QString&)’ is deprecated [-Werror=deprecated-declarations]
These methods were deprecated in Qt 5.3. [1]
This commit removes code from 2002 (539ce478) that worked around a
problem in Qt's handling of XLFD fonts that no longer seems relevant
since XLFD is no longer supported in Qt 5 [2]. Even if the problem
were relevant, setRawName() would not fix anything since it is now
an empty method. [3]
I tested that compilation with Qt 4.8.7 works without error.
Scott Kostyshak [Thu, 19 Mar 2020 14:16:19 +0000 (10:16 -0400)]
Fix Qt deprecation warns for setTextColor()
This commit fixes the following warning from Qt 5.14:
error: ‘void QTreeWidgetItem::setTextColor(int, const QColor&)’ is deprecated: Use QTreeWidgetItem::setForeground() instead [-Werror=deprecated-declarations]
setForeground was introduced in Qt 4.2 [1].
We have a couple of commented out uses of a setTextColor() method in
GuiDocument.cpp, but the QTextEdit::setTextColor() is not deprecated so no
change is needed.
Scott Kostyshak [Thu, 19 Mar 2020 01:00:09 +0000 (21:00 -0400)]
Fix Qt deprecation warns for setAutoCompletion()
This commit fixes a few warnings from Qt 5.14 like the following
one:
error: ‘void QComboBox::setAutoCompletion(bool)’ is deprecated: Use setCompleter() instead. [-Werror=deprecated-declarations]
We only generated setAutoCompletion() from setting the property in
the .ui files. There does not seem to be a .ui file property that
generates setCompleter(). However, the default in both Qt5 [1] and
Qt4 [2] is to enable case-insensitive autocompletion, which seems to
be the same type of autocompletion as when we were relying on
setAutoCompletion(true). Thus, we can remove the properties that set
autocomplete to true. There is only one file, SearchUi.ui, where we
were turning off the autocompletion; we now do so using
setCompleter(0) in GuiSearch::GuiSearch().
Track whether title has been issued via OutputParams.
When branches are used in the title, we may need to track whether
we've issued the title across branch insets. So we put the relevant
variables into OutputParams.
Scott Kostyshak [Mon, 16 Mar 2020 00:32:16 +0000 (20:32 -0400)]
Fix Qt deprecation warns for QTime
This commit fixes a couple of warnings from Qt 5.14 like the
following one:
error: ‘int QTime::restart()’ is deprecated: Use QElapsedTimer instead [-Werror=deprecated-declarations]
This commit changes two uses of QTime to QElapsedTimer, one used
only when the "files" debug flag is set, and the other for timing
whether a script (e.g., knitr) takes longer than a certain amount of
time to run.
QElapsedTimer is superior for these two use cases in that it uses a
monotonic clock if possible, and is thus more robust to certain
changes (e.g., daylight savings changes) [1]. Similarly, the commit
in Qt Base that makes this deprecation [2] mentions the following in
the commit message:
QElapsedTimer does the job better and without the DST kludges.
Note that QElapsedTimer class was introduced in Qt 4.7, so no
conditioning on Qt version is necessary.
Not all methods of QTime are deprecated and we still use some of
the non-deprecated methods in our code (e.g., to get the current
wall clock time in GuiProgress::currentTime()).
Fix Python 3 issues when generating preview snippets
The log file generated by latex can contain strings encoded in
whatever supported encoding. Instead of guessing the encoding,
it is better to open it in binary mode and then performing the
necessary comparisons as "bytes". In order to do this, the
strings are encoded in utf8, so that, for example, b"pythön" is
encoded as "pyth\xc3\xb6n" (7 bytes). Of course, this means that
we can only successfully perform comparisons with ascii strings.
However, this is what we actually do, as we only search for
ascii strings in the log file.
Do not break on undefined references that are part of the family.
Thus a document can be viewed if it contains references to
its master, children or siblings that are being excluded via includeonly,
or viewed standalone if it contains references to its master or siblings.
Using a dialog may trigger a redraw at times where the metrics caches
have not been updated yet. To fix this, do as in paintEvent() and
abort caret blinking if there is an open undo group.
Move the decision to skip the caret painting to showCaret(), closer to
where real work happens. hideCaret () is now an alias for
showCaret(false), which allows some code refactoring.
This is a mode for includeonly handling that is effective and still outputs
at least mostly correct counters and references. This is intended for non-
final editing work.
Scott Kostyshak [Wed, 11 Mar 2020 19:02:22 +0000 (15:02 -0400)]
Fix preview check box for include insets
GuiInclude::initialiseParams() calls InsetCommand::string2params()
which calls InsetCommandParams::clear(), however this last function
did not reset the special "preview_" parameter. Now this parameter
is reset to false as part of clear().
The ParamData class documents (see InsetCommandParams.h) the
following:
// No parameter may be named "preview", because that is a required
// flag for all commands.
Thus, we must handle preview_ separately from the other parameters.
Scott Kostyshak [Fri, 13 Mar 2020 02:36:49 +0000 (22:36 -0400)]
CMake build: find enchant 2.x binary and lib
For example, see the Fedora file lists for the package
enchant2-devel [1] as well as the Debian Sid file lists for the
packages libenchant-2-dev [2] and enchant-2 [3]. The packages for
Ubuntu 20.04 are similar. Our autotools build has had support for
finding enchant 2.x since 71977769.
Searching for enchant-2 first is consistent with what we do for
autotools (see 1ae537c5).
Improve performance of includeonly with "maintain counters and references"
First, we do not need to run bibtex/biber on the maintenance run, as
the necessary references will be generated on the includeonly run.
Second, exclude the master from DepTable in maintenance run, as the
master is re-checked in any case in the includeonly run, and as it will
always be detected as changed due to the \includeonly statement, which
will trigger a complete build.
Scott Kostyshak [Sun, 8 Mar 2020 15:16:28 +0000 (11:16 -0400)]
Fix Qt deprecation warns for setting tab
Fix warnings coming from deprecations of QTextEdit::tabStopWidth()
and QFontMetrics::width(). Regarding tabStopWidth(), the ChangeLog
states the following [1]:
Introduced tabStopDistance property in QTextOption, QTextEdit and
QPlainTextEdit as replacement for the inconsistently named tabStop and
tabStopWidth properties. QTextOption::tabStop, QTextEdit::tabStopWidth and
QPlainTextEdit::tabStopWidth are now deprecated.
Note that QFontMetrics::horizontalAdvance() is what we want here, as
opposed to QFontMetrics::boundingRect(), because we want to know
where to draw the next character after the tab.
Scott Kostyshak [Fri, 6 Mar 2020 14:18:59 +0000 (09:18 -0500)]
Fix Qt deprecation warn for setConfirmOverwrite()
Fix the following warning:
error: ‘void QFileDialog::setConfirmOverwrite(bool)’ is deprecated: Use setOption(DontConfirmOverwrite, !enabled) instead [-Werror=deprecated-declarations]
Note in the change that "false" changes to "true" because the option
is *Dont*ConfirmOverwrite.
QFileDialog::setConfirmOverwrite() is obsolete at least since 4.8
and QFileDialog::setOption() is available since 4.5 [1].
Scott Kostyshak [Thu, 5 Mar 2020 16:35:49 +0000 (11:35 -0500)]
Fix deprecation warnings from use of qSort()
This commit replaces qSort with std::sort to fix warnings from compiling with
Qt 5.14.1. Below is one of the warnings:
error: ‘void qSort(RandomAccessIterator, RandomAccessIterator, LessThan) [with RandomAccessIterator = QList<lyx::ColorCode>::iterator; LessT$
an = bool (*)(lyx::ColorCode, lyx::ColorCode)]’ is deprecated: Use std::sort [-Werror=deprecated-declarations]
qSort() has been deprecated since Qt 5.2. Quoting from the ChangeLog [1]:
With STL no longer being optional for building and using Qt, a number of
parts of QtAlgorithms no longer make sense, and have therefore been
deprecated. Replacements are available in the STL, and generally have
much better performance
There are some cases that require more than just a trivial substitution, but
our code does not appear to use any of those cases.
For some discussion on the differences in speed of std::sort() and
qSort(), see the following:
https://phabricator.kde.org/D10857
These are just warnings now, but will likely be errors with Qt 6:
https://bugreports.qt.io/browse/QTBUG-73048
I tested that LyX can still be built against Qt 4.8.7 with this commit.
This commit follows 24926b2e, which also fixes some deprecation warnings.
Scott Kostyshak [Thu, 5 Mar 2020 16:11:09 +0000 (11:11 -0500)]
Fix a few deprecation warnings in Qt 5.14.1
These changes fix a few instances of the following type of warning:
error: ‘void QListWidget::setItemSelected(const QListWidgetItem*, bool)’ is deprecated: Use QListWidgetItem::setSelected() instead [-Werror=deprecated-declarations]
as well as similar warnings for setItemHidden() and
setItemExpanded(). These are just warnings now, but it is planned to
remove the methods for Qt 6:
https://bugreports.qt.io/browse/QTBUG-73048
I tested that LyX can still be built against Qt 4.8.7 with this
commit. Indeed, these methods have been deprecated for a while (it
is just that QT_DEPRECATED_WARNINGS was only turned on by default
starting with 5.13.0). See, e.g.,
Fixup cf9827df: do not forget keyboard bindings and docs
Keyboard bindings are easy. For lfun icons in documentation, both the UserGuide and Tutorial have to be updated. Since this will have to be done again once the documentation is imported from branch, I list them here for reference:
For the lib/doc/ directory:
find . -name 'Tutorial.lyx' | xargs sed -i 's/"layout List"/"layout Labeling"/g'
find . -name 'UserGuide.lyx' | xargs sed -i 's/"layout List"/"layout Labeling"/g'
and then
find . -name 'Tutorial.lyx' | xargs sed -i 's/"layout \(Itemize\|Description\|Labeling\|Enumerate\|List\)"/"layout-toggle \1"/g'
find . -name 'UserGuide.lyx' | xargs sed -i 's/"layout \(Itemize\|Description\|Labeling\|Enumerate\|List\)"/"layout-toggle \1"/g'
Using a dialog may trigger a redraw at times where the metrics caches
have not been updated yet. To fix this, do as in paintEvent() and
abort caret blinking if there is an open undo group.
Move the decision to skip the caret painting to showCaret(), closer to
where real work happens. hideCaret () is now an alias for
showCaret(false), which allows some code refactoring.