]> git.lyx.org Git - lyx.git/commitdiff
Replace QFontMetrics::width() by horizontalAdvance() in Qt>=5.11
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Sat, 24 Oct 2020 17:29:34 +0000 (19:29 +0200)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 17 Dec 2020 10:32:44 +0000 (11:32 +0100)
The method horizontalAdvance() replaces width() starting with Qt 5.11.
To handle this, all direct calls to QFontMetrics::width() are replaced
by calls to GuiFontMetrics::width(), and the code for
GuiFontMetrics::width(QChar) uses horizontalAdvance on newer Qt
versions.

(cherry picked from commit 21422dd6527754d8b7876a6e11b686cd726321ed)

src/frontends/qt4/GuiFontExample.cpp
src/frontends/qt4/GuiFontMetrics.cpp
src/frontends/qt4/PanelStack.cpp
status.23x

index cb27b5fb5a84295b50199b4b74823d88bf92de2c..8a4ca13df8f83334ef93397526a8b4158ead5d3e 100644 (file)
@@ -11,6 +11,7 @@
 #include <config.h>
 
 #include "GuiFontExample.h"
+#include "GuiFontMetrics.h"
 
 #include <QPainter>
 #include <QPaintEvent>
@@ -28,20 +29,20 @@ void GuiFontExample::set(QFont const & font, QString const & text)
 
 QSize GuiFontExample::sizeHint() const
 {
-       QFontMetrics m(font_);
-       return QSize(m.width(text_) + 10, m.ascent() + m.descent() + 6);
+       lyx::frontend::GuiFontMetrics m(font_);
+       return QSize(m.width(text_) + 10, m.maxHeight() + 6);
 }
 
 
 void GuiFontExample::paintEvent(QPaintEvent *)
 {
        QPainter p;
-       QFontMetrics m(font_);
+       lyx::frontend::GuiFontMetrics m(font_);
 
        p.begin(this);
        p.setFont(font_);
        p.drawRect(0, 0, width() - 1, height() - 1);
-       p.drawText(5, 3 + m.ascent(), text_);
+       p.drawText(5, 3 + m.maxAscent(), text_);
        p.end();
 }
 
index 33fcf306efda8dd9571cf9f762b03b7ae47d5a35..3df1bc951a5f11d7af8e3538fdd42219d7971dcf 100644 (file)
@@ -563,10 +563,17 @@ int GuiFontMetrics::width(char_type c) const
        if (value != outOfLimitMetric)
                return value;
 
+#if QT_VERSION >= 0x050b00
+       if (is_utf16(c))
+               value = metrics_.horizontalAdvance(ucs4_to_qchar(c));
+       else
+               value = metrics_.horizontalAdvance(toqstr(docstring(1, c)));
+#else
        if (is_utf16(c))
                value = metrics_.width(ucs4_to_qchar(c));
        else
                value = metrics_.width(toqstr(docstring(1, c)));
+#endif
 
        width_cache_.insert(c, value);
 
index c61c8e02442f531fb3eae7ac2c0abde51a46f900..e81d58c4a4773cdf844fa4457e6ed157ea219c18 100644 (file)
@@ -13,6 +13,7 @@
 #include "PanelStack.h"
 
 #include "GuiApplication.h"
+#include "GuiFontMetrics.h"
 #include "qt_helpers.h"
 
 #include "support/debug.h"
@@ -21,7 +22,6 @@
 #include <QAbstractButton>
 #include <QApplication>
 #include <QComboBox>
-#include <QFontMetrics>
 #include <QGroupBox>
 #include <QHideEvent>
 #include <QHash>
@@ -118,7 +118,7 @@ void PanelStack::addCategory(QString const & name, QString const & parent)
 
        panel_map_[name] = item;
 
-       QFontMetrics fm(list_->font());
+       GuiFontMetrics fm(list_->font());
 
        // calculate the real size the current item needs in the listview
        int itemsize = fm.width(qt_(name)) + 10 + list_->indentation() * depth;
index fd6995ed259bd2556f2e821bd4316c5e8aa37ae3..1b5350fe106f8de49b50fce0ba4663eb80cd6bd2 100644 (file)
@@ -100,3 +100,4 @@ What's new
 
 * BUILD/INSTALLATION
 
+- Remove use of deprecated Qt methods.