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)
#include <config.h>
#include "GuiFontExample.h"
+#include "GuiFontMetrics.h"
#include <QPainter>
#include <QPaintEvent>
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();
}
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);
#include "PanelStack.h"
#include "GuiApplication.h"
+#include "GuiFontMetrics.h"
#include "qt_helpers.h"
#include "support/debug.h"
#include <QAbstractButton>
#include <QApplication>
#include <QComboBox>
-#include <QFontMetrics>
#include <QGroupBox>
#include <QHideEvent>
#include <QHash>
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;
* BUILD/INSTALLATION
+- Remove use of deprecated Qt methods.