Get rid of Qt4 code in src/

Qt4 code has been identidifed by
  git grep -l 'QT_VERSION.*\(0x050000\|0x04\)' src

Uses of QT_VERSION_CHECK have been checked too.

been used to remember what places need further work.

Then remaining Qt4 references have been searched using
  git grep -i qt4
  git grep -i 'qt 4'
and relevant issues have been either fixed or noted in the new
TODO.killqt4 file.
This commit is contained in:
Jean-Marc Lasgouttes 2022-11-18 17:19:50 +01:00
parent d984730235
commit ac248e392d
28 changed files with 69 additions and 405 deletions

16
TODO.killqt4 Normal file
View File

@ -0,0 +1,16 @@
Things left to do after killing Qt4 (obtained by grepping for Qt4 and 'Qt 4'):
* look at the FIXME KILLQT4 comments in src/ and resolve them
* update README
* update INSTALL
* update INSTALL.cmake
* update INSTALL.MacOSX
* update autoconf
see also lib/RELEASE-NOTES
* update cmake
* check whether development/autotests/keytest.py really needs QT4
investigate references to Qt4 in keytest
* update or remove development/lyx.rpm.README
* update or remove development/lyxserver/server_monitor.cpp
* update or remove development/tools/count_total_lines_of_compiled_code.sh
* check references to qt4 in lib/symbols

View File

@ -19,8 +19,6 @@
#include "GuiApplication.h"
#endif
#if QT_VERSION >= 0x040600
#include <QEvent>
#include <QDebug>
#include <QString>
@ -33,9 +31,7 @@
#include <QPainter>
#include <QStyle>
#include <QPaintEvent>
#if QT_VERSION >= 0x050000
#include <QWindow>
#endif
enum { margin = 6 };
@ -198,10 +194,8 @@ void FancyLineEdit::updateMargins()
Side realRight = (leftToRight ? Right : Left);
qreal dpr = 1.0;
#if QT_VERSION >= 0x050000
// Consider device/pixel ratio (HiDPI)
dpr = devicePixelRatio();
#endif
int leftMargin = (m_d->m_iconbutton[realLeft]->pixmap().width() / dpr ) + 8;
int rightMargin = (m_d->m_iconbutton[realRight]->pixmap().width() / dpr) + 8;
// Note KDE does not reserve space for the highlight color
@ -342,12 +336,9 @@ IconButton::IconButton(QWidget *parent)
void IconButton::paintEvent(QPaintEvent *)
{
qreal dpr = 1.0;
#if QT_VERSION >= 0x050000
// Consider device/pixel ratio (HiDPI)
QWindow * window = this->window()->windowHandle();
dpr = window->devicePixelRatio();
#endif
qreal const dpr = window->devicePixelRatio();
QRect pixmapRect(QPoint(), m_pixmap.size() / dpr);
pixmapRect.moveCenter(rect().center());
QPixmap pm = m_pixmap;
@ -381,6 +372,4 @@ void IconButton::animateShow(bool visible)
} // namespace lyx
#endif // QT_VERSION >= 0x040600
#include "moc_FancyLineEdit.cpp"

View File

@ -135,13 +135,9 @@
#endif
#endif
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400)
#if (QT_VERSION >= 0x050400)
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
#if (QT_VERSION < 0x050000)
#include <QWindowsMime>
#define QWINDOWSMIME QWindowsMime
#define QVARIANTTYPE QVariant::Type
#elif (QT_VERSION >= 0x060000)
#if (QT_VERSION >= 0x060000)
#include <QtGui/private/qguiapplication_p.h>
#include <QtGui/private/qwindowsmime_p.h>
#include <QtGui/qpa/qplatformintegration.h>
@ -719,7 +715,6 @@ QPixmap getPixmap(QString const & path, QString const & name, QString const & ex
QIcon getIcon(FuncRequest const & f, bool unknown, bool rtl)
{
#if (QT_VERSION >= 0x040600)
if (lyxrc.use_system_theme_icons) {
// use the icons from system theme that are available
QString action = toqstr(lyxaction.getActionName(f.action()));
@ -732,7 +727,6 @@ QIcon getIcon(FuncRequest const & f, bool unknown, bool rtl)
return thmicn;
}
}
#endif
IconInfo icondata = iconInfo(f, unknown, rtl);
if (icondata.filepath.isEmpty())
@ -784,11 +778,7 @@ public:
QString translate(const char * /* context */,
const char *sourceText,
#if QT_VERSION >= 0x050000
const char * /* disambiguation */ = nullptr, int /* n */ = -1) const override
#else
const char * /*comment*/ = 0) const override
#endif
{
// Here we declare the strings that need to be translated from Qt own GUI
// This is needed to include these strings to po files
@ -879,7 +869,7 @@ public:
////////////////////////////////////////////////////////////////////////
// Windows specific stuff goes here...
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400)
#if (QT_VERSION >= 0x050400)
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
// QWindowsMimeMetafile can only be compiled on Windows.
@ -1045,7 +1035,7 @@ struct GuiApplication::Private
, last_state_(Qt::ApplicationInactive)
#endif
{
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400)
#if (QT_VERSION >= 0x050400)
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
/// WMF Mime handler for Windows clipboard.
wmf_mime_ = new QWindowsMimeMetafile;
@ -1134,7 +1124,7 @@ struct GuiApplication::Private
QMacPasteboardMimeGraphics mac_pasteboard_mime_;
#endif
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400)
#if (QT_VERSION >= 0x050400)
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
/// WMF Mime handler for Windows clipboard.
QWindowsMimeMetafile * wmf_mime_;
@ -1239,11 +1229,8 @@ GuiApplication::GuiApplication(int & argc, char ** argv)
if (lyxrc.typewriter_font_name.empty())
lyxrc.typewriter_font_name = fromqstr(typewriterFontName());
#if (QT_VERSION >= 0x050000)
// Qt4 does this in event(), see below.
// Track change of keyboard
connect(inputMethod(), SIGNAL(localeChanged()), this, SLOT(onLocaleChanged()));
#endif
d->general_timer_.setInterval(500);
connect(&d->general_timer_, SIGNAL(timeout()),
@ -1266,36 +1253,9 @@ GuiApplication * theGuiApp()
}
#if QT_VERSION < 0x050000
// Emulate platformName() for Qt4
// FIXME: when ditching this method, remove all tests
// platformName() == "qt4x11"
// in the code
QString GuiApplication::platformName() const
{
# if defined(Q_WS_X11)
// Note that this one does not really exist
return "qt4x11";
# elif defined(Q_OS_MAC)
return "cocoa";
# elif defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
return "windows";
# else
LYXERR0("Unknown platform!");
return "unknown";
# endif
}
#endif
double GuiApplication::pixelRatio() const
{
#if QT_VERSION >= 0x050000
return qt_scale_factor * devicePixelRatio();
#else
return 1.0;
#endif
}
@ -2363,11 +2323,7 @@ docstring GuiApplication::viewStatusMessage()
string GuiApplication::inputLanguageCode() const
{
#if (QT_VERSION < 0x050000)
QLocale loc = keyboardInputLocale();
#else
QLocale loc = inputMethod()->locale();
#endif
//LYXERR0("input lang = " << fromqstr(loc.name()));
return loc.name() == "C" ? "en_US" : fromqstr(loc.name());
}
@ -2862,10 +2818,8 @@ void GuiApplication::execBatchCommands()
return;
#ifdef Q_OS_MAC
#if QT_VERSION > 0x040600
setAttribute(Qt::AA_MacDontSwapCtrlAndMeta,lyxrc.mac_dontswap_ctrl_meta);
#endif
#if QT_VERSION >= 0x050000 && QT_VERSION < 0x060000
# if QT_VERSION < 0x060000
setAttribute(Qt::AA_UseHighDpiPixmaps,true);
# endif
// Create the global default menubar which is shown for the dialogs
@ -3033,15 +2987,6 @@ bool GuiApplication::event(QEvent * e)
e->accept();
return true;
}
#if (QT_VERSION < 0x050000)
// Qt5 uses a signal for that, see above.
case QEvent::KeyboardLayoutChange:
//LYXERR0("keyboard change");
if (currentView() && currentView()->currentBufferView())
currentView()->currentBufferView()->cursor().setLanguageFromInput();
e->accept();
return true;
#endif
case QEvent::ApplicationPaletteChange: {
// runtime switch from/to dark mode
onPaletteChanged();

View File

@ -164,21 +164,12 @@ public:
///
GuiView & view(int id) const;
#if (QT_VERSION < 0x050000)
/// Emulate platformName() for Qt4
QString platformName() const;
#endif
/// Current ratio between physical pixels and device-independent pixels
double pixelRatio() const;
/// How to load image files
support::search_mode imageSearchMode() const {
#if QT_VERSION >= 0x050000
return pixelRatio() > 1 ? support::check_hidpi : support::must_exist;
#else
return support::must_exist;
#endif
}
/// return true if the key is part of a shortcut

View File

@ -108,13 +108,8 @@ GuiBibtex::GuiBibtex(GuiView & lv)
this, SLOT(filterChanged(QString)));
connect(filter_, SIGNAL(returnPressed()),
this, SLOT(filterPressed()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
availableLV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed,
availableLV, [this](){ focusAndHighlight(availableLV); });
#endif
availableLV->setToolTip(formatToolTip(qt_("This list consists of all databases that are indexed by LaTeX and thus are found without a file path. "
"This is usually everything in the bib/ subdirectory of LaTeX's texmf tree. "
@ -129,11 +124,7 @@ GuiBibtex::GuiBibtex(GuiView & lv)
bc().addReadOnly(bibtocCB);
bc().addReadOnly(bibEncodingCO);
#if (QT_VERSION < 0x050000)
selectedLV->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
#else
selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
#endif
// Always put the default encoding in the first position.
bibEncodingCO->addItem(qt_("Document Encoding"), "default");

View File

@ -153,13 +153,8 @@ GuiCitation::GuiCitation(GuiView & lv)
this, SLOT(filterChanged(QString)));
connect(filter_, SIGNAL(returnPressed()),
this, SLOT(filterPressed()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
availableLV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed,
availableLV, [this](){ focusAndHighlight(availableLV); });
#endif
connect(regexp_, SIGNAL(triggered()),
this, SLOT(regexChanged()));
connect(casesense_, SIGNAL(triggered()),
@ -167,11 +162,7 @@ GuiCitation::GuiCitation(GuiView & lv)
connect(instant_, SIGNAL(triggered(bool)),
this, SLOT(instantChanged(bool)));
#if (QT_VERSION < 0x050000)
selectedLV->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
#else
selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
#endif
selectedLV->setToolTip(qt_("Ordered list of all cited references.\n"
"You can reorder, add and remove references with the buttons on the left."));

View File

@ -909,13 +909,8 @@ GuiDocument::GuiDocument(GuiView & lv)
masterChildModule->childrenTW->setColumnCount(2);
masterChildModule->childrenTW->headerItem()->setText(0, qt_("Child Document"));
masterChildModule->childrenTW->headerItem()->setText(1, qt_("Include to Output"));
#if (QT_VERSION > 0x050000)
masterChildModule->childrenTW->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
masterChildModule->childrenTW->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
#else
masterChildModule->childrenTW->header()->setResizeMode(0, QHeaderView::ResizeToContents);
masterChildModule->childrenTW->header()->setResizeMode(1, QHeaderView::ResizeToContents);
#endif
// Formats
outputModule = new UiWidget<Ui::OutputUi>(this);
@ -1679,13 +1674,8 @@ GuiDocument::GuiDocument(GuiView & lv)
this, SLOT(moduleFilterChanged(QString)));
connect(filter_, SIGNAL(returnPressed()),
this, SLOT(moduleFilterPressed()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
modulesModule->availableLV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed,
modulesModule->availableLV, [this](){ focusAndHighlight(modulesModule->availableLV); });
#endif
// PDF support
@ -1793,11 +1783,10 @@ GuiDocument::GuiDocument(GuiView & lv)
docPS->addPanel(outputModule, N_("Formats[[output]]"));
docPS->addPanel(preambleModule, N_("LaTeX Preamble"));
docPS->setCurrentPanel("Document Class");
// FIXME KILLQT4: check that this is still needed (is this workaround still needed?)
// FIXME: hack to work around resizing bug in Qt >= 4.2
// bug verified with Qt 4.2.{0-3} (JSpitzm)
#if QT_VERSION >= 0x040200
docPS->updateGeometry();
#endif
}

View File

@ -66,27 +66,9 @@ namespace {
struct SymbolFont {
FontFamily lyx_family;
QString family;
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
QString xlfd;
#endif
};
SymbolFont symbol_fonts[] = {
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
{ SYMBOL_FAMILY,"symbol", "-*-symbol-*-*-*-*-*-*-*-*-*-*-adobe-fontspecific"},
{ CMR_FAMILY, "cmr10", "-*-cmr10-medium-*-*-*-*-*-*-*-*-*-*-*" },
{ CMSY_FAMILY, "cmsy10", "-*-cmsy10-*-*-*-*-*-*-*-*-*-*-*-*" },
{ CMM_FAMILY, "cmmi10", "-*-cmmi10-medium-*-*-*-*-*-*-*-*-*-*-*" },
{ CMEX_FAMILY, "cmex10", "-*-cmex10-*-*-*-*-*-*-*-*-*-*-*-*" },
{ MSA_FAMILY, "msam10", "-*-msam10-*-*-*-*-*-*-*-*-*-*-*-*" },
{ MSB_FAMILY, "msbm10", "-*-msbm10-*-*-*-*-*-*-*-*-*-*-*-*" },
{ DS_FAMILY, "dsrom10", "-*-dsrom10-*-*-*-*-*-*-*-*-*-*-*-*" },
{ EUFRAK_FAMILY,"eufm10", "-*-eufm10-medium-*-*-*-*-*-*-*-*-*-*-*" },
{ RSFS_FAMILY, "rsfs10", "-*-rsfs10-medium-*-*-*-*-*-*-*-*-*-*-*" },
{ STMARY_FAMILY,"stmary10","-*-stmary10-medium-*-*-*-*-*-*-*-*-*-*-*" },
{ WASY_FAMILY, "wasy10", "-*-wasy10-medium-*-*-*-*-*-*-*-*-*-*-*" },
{ ESINT_FAMILY, "esint10","-*-esint10-medium-*-*-*-*-*-*-*-*-*-*-*" }
#else
{ SYMBOL_FAMILY,"symbol"},
{ CMR_FAMILY, "cmr10"},
{ CMSY_FAMILY, "cmsy10"},
@ -100,7 +82,6 @@ SymbolFont symbol_fonts[] = {
{ STMARY_FAMILY,"stmary10"},
{ WASY_FAMILY, "wasy10"},
{ ESINT_FAMILY, "esint10"}
#endif
};
size_t const nr_symbol_fonts = sizeof(symbol_fonts) / sizeof(symbol_fonts[0]);
@ -147,19 +128,6 @@ GuiFontInfo & fontinfo(FontInfo const & f)
}
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
QString rawName(QString const & family)
{
for (size_t i = 0; i < nr_symbol_fonts; ++i)
if (family == symbol_fonts[i].family)
return symbol_fonts[i].xlfd;
LYXERR(Debug::FONT, "BUG: family not found !");
return QString();
}
#endif
QString symbolFamily(FontFamily family)
{
for (size_t i = 0; i < nr_symbol_fonts; ++i) {
@ -190,10 +158,7 @@ static bool isChosenFont(QFont & font, QString const & family,
LYXERR_NOPOS(Debug::FONT, "got: " << fi.family());
if (fi.family().contains(family)
#if QT_VERSION >= 0x040800
&& (style.isEmpty() || fi.styleName().contains(style))
#endif
) {
&& (style.isEmpty() || fi.styleName().contains(style))) {
LYXERR_NOENDL(Debug::FONT, " got it ");
return true;
}
@ -209,8 +174,7 @@ QFont symbolFont(QString const & family, bool * ok)
upper[0] = family[0].toUpper();
QFont font;
if (guiApp->platformName() == "qt4x11"
|| guiApp->platformName() == "xcb"
if (guiApp->platformName() == "xcb"
|| guiApp->platformName().contains("wayland")) {
// On *nix we have to also specify the foundry to be able to
// discriminate our fonts when the texlive fonts are managed by
@ -220,7 +184,6 @@ QFont symbolFont(QString const & family, bool * ok)
font.setFamily(family);
}
font.setStyleStrategy(QFont::NoFontMerging);
#if QT_VERSION >= 0x040800
font.setStyleName("LyX");
if (isChosenFont(font, family, "LyX")) {
@ -231,7 +194,6 @@ QFont symbolFont(QString const & family, bool * ok)
LYXERR_NOENDL(Debug::FONT, "Trying normal " << family << " ... ");
font.setStyleName(QString());
#endif
if (isChosenFont(font, family, QString())) {
LYXERR_NOPOS(Debug::FONT, "normal!");
@ -248,20 +210,6 @@ QFont symbolFont(QString const & family, bool * ok)
return font;
}
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
// A simple setFamily() fails on Qt 2
QString const raw = rawName(family);
LYXERR_NOENDL(Debug::FONT, "Trying " << raw << " ... ");
font.setRawName(raw);
if (isChosenFont(font, family, QString())) {
LYXERR_NOPOS(Debug::FONT, "raw version!");
*ok = true;
return font;
}
#endif
LYXERR_NOPOS(Debug::FONT, " FAILED :-(");
*ok = false;
return font;
@ -337,13 +285,12 @@ QFont makeQFont(FontInfo const & f)
toqstr(lyxrc.roman_font_foundry));
font.setFamily(family);
#ifdef Q_OS_MAC
#if QT_VERSION >= 0x040300 //&& QT_VERSION < 0x040800
// FIXME KILLQT4: Double-check that this is fixed in Qt5
// Workaround for a Qt bug, see http://www.lyx.org/trac/ticket/3684
// and http://bugreports.qt.nokia.com/browse/QTBUG-11145.
// FIXME: Check whether this is really fixed in Qt 4.8
if (family == "Times" && !font.exactMatch())
font.setFamily("Times New Roman");
#endif
#endif
break;
}
@ -394,10 +341,6 @@ QFont makeQFont(FontInfo const & f)
else
LYXERR(Debug::FONT, "This font is NOT an exact match");
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
LYXERR(Debug::FONT, "XFLD: " << font.rawName());
#endif
font.setPointSizeF(f.realSize() * lyxrc.currentZoom / 100.0);
LYXERR(Debug::FONT, "The font has size: " << font.pointSizeF());
@ -453,13 +396,9 @@ bool FontLoader::canBeDisplayed(char_type c)
{
// bug 8493
if (c == 0x0009)
// FIXME KILLQT4: get rid of this function if not needed anymore
// FIXME check whether this is still needed for Qt5
return false;
#if QT_VERSION < 0x050000 && defined(QT_MAC_USE_COCOA) && (QT_MAC_USE_COCOA > 0)
// bug 7954, see also comment in GuiPainter::text()
if (c == 0x00ad)
return false;
#endif
return true;
}

View File

@ -53,14 +53,6 @@ using namespace lyx::support;
#endif
#if QT_VERSION < 0x050000
inline uint qHash(double key)
{
return qHash(QByteArray(reinterpret_cast<char const *>(&key), sizeof(key)));
}
#endif
namespace std {
/*
@ -91,7 +83,8 @@ int const strwidth_cache_max_cost = 1024 * 1024;
int const breakstr_cache_max_cost = 10 * 1024 * 1024;
// Qt 5.x already has its own caching of QTextLayout objects
// but it does not seem to work well on MacOS X.
#if (QT_VERSION < 0x050000) || defined(Q_OS_MAC)
#if defined(Q_OS_MAC)
//FIXME KILLQT4: check wether setting the cache to 0 hurts on macOS
// Limit qtextlayout_cache_ size to 500 elements (we do not know the
// size of the QTextLayout objects anyway).
int const qtextlayout_cache_max_size = 500;
@ -291,11 +284,7 @@ int GuiFontMetrics::width(docstring const & s) const
*/
int w = 0;
// is the string a single character from a math font ?
#if QT_VERSION >= 0x040800
bool const math_char = s.length() == 1 && font_.styleName() == "LyX";
#else
bool const math_char = s.length() == 1;
#endif
if (math_char) {
QString const qs = toqstr(s);
int br_width = metrics_.boundingRect(qs).width();
@ -354,7 +343,7 @@ struct TextLayoutHelper
/// \c s is the original string
/// \c isrtl is true if the string is right-to-left
/// \c naked is true to disable the insertion of zero width annotations
/// FIXME: remove \c naked argument when Qt4 support goes away.
/// FIXME KILLQT4: remove \c naked argument when Qt4 support goes away.
TextLayoutHelper(docstring const & s, bool isrtl, bool naked = false);
/// translate QString index to docstring index

View File

@ -120,7 +120,7 @@ private:
double slope_;
/// If true, avoid extra annotation in string for QTextLayout
// FIXME: remove wen Qt4 suport goes away
// FIXME KILLQT4: remove when Qt4 suport goes away
bool needs_naked_ = false;
/// Cache of char widths

View File

@ -64,25 +64,17 @@ QImage const & GuiImage::image() const
unsigned int GuiImage::width() const
{
#if QT_VERSION >= 0x050000
return static_cast<unsigned int>(ceil(is_transformed_ ?
(transformed_.width() / transformed_.devicePixelRatio()) :
(original_.width() / original_.devicePixelRatio())));
#else
return is_transformed_ ? transformed_.width() : original_.width();
#endif
}
unsigned int GuiImage::height() const
{
#if QT_VERSION >= 0x050000
return static_cast<unsigned int>(ceil(is_transformed_ ?
(transformed_.height() / transformed_.devicePixelRatio()) :
(original_.height() / original_.devicePixelRatio())));
#else
return is_transformed_ ? transformed_.height() : original_.height();
#endif
}
@ -117,9 +109,7 @@ bool GuiImage::setPixmap(Params const & params)
return false;
}
#if QT_VERSION >= 0x050000
original_.setDevicePixelRatio(params.pixel_ratio);
#endif
is_transformed_ = clip(params);
is_transformed_ |= rotate(params);
@ -141,14 +131,9 @@ bool GuiImage::clip(Params const & params)
// No clipping is necessary.
return false;
#if QT_VERSION >= 0x050000
double const pixelRatio = is_transformed_ ? transformed_.devicePixelRatio() : original_.devicePixelRatio();
int const new_width = static_cast<int>((params.bb.xr.inBP() - params.bb.xl.inBP()) * pixelRatio);
int const new_height = static_cast<int>((params.bb.yt.inBP() - params.bb.yb.inBP()) * pixelRatio);
#else
int const new_width = static_cast<int>((params.bb.xr.inBP() - params.bb.xl.inBP()));
int const new_height = static_cast<int>((params.bb.yt.inBP() - params.bb.yb.inBP()));
#endif
QImage const & image = is_transformed_ ? transformed_ : original_;
@ -191,19 +176,8 @@ bool GuiImage::scale(Params const & params)
if (params.scale == 100)
return false;
#if QT_VERSION >= 0x050000
double const pixelRatio = is_transformed_ ? transformed_.devicePixelRatio() : original_.devicePixelRatio();
qreal scale = qreal(params.scale) / 100.0 * pixelRatio;
#else
qreal scale = qreal(params.scale) / 100.0;
#endif
#if (QT_VERSION >= 0x040500) && (QT_VERSION <= 0x040502)
// Due to a bug in Qt, LyX will crash for certain
// scaling factors and sizes of the image.
// see bug #5957: http://www.lyx.org/trac/ticket/5957
scale += 0.0001;
#endif
qreal const scale = qreal(params.scale) / 100.0 * pixelRatio;
QTransform m;
m.scale(scale, scale);

View File

@ -11,7 +11,7 @@
#include <config.h>
#include "GuiKeySymbol.h"
#if defined(Q_OS_MAC) && QT_VERSION > 0x050000
#if defined(Q_OS_MAC)
#include "GuiApplication.h"
#endif
#include "qt_helpers.h"
@ -867,7 +867,7 @@ bool KeySymbol::operator==(KeySymbol const & ks) const
KeyModifier q_key_state(Qt::KeyboardModifiers state)
{
KeyModifier k = NoModifier;
#if defined(Q_OS_MAC) && (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) && (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
#if defined(Q_OS_MAC) && (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
/// Additional check for Control and Meta modifier swap state.
/// Starting with Qt 5 the modifiers aren't reported correctly.
/// Until this is fixed a correction is required.

View File

@ -189,13 +189,8 @@ GuiLyXFiles::GuiLyXFiles(GuiView & lv)
filter_->setClearButton(true);
filter_->setPlaceholderText(qt_("All available files"));
filter_->setToolTip(qt_("Enter string to filter the list of available files"));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
filesLW, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed,
filesLW, [this](){ focusAndHighlight(filesLW); });
#endif
filterBarL->addWidget(filter_, 0);
findKeysLA->setBuddy(filter_);

View File

@ -315,13 +315,6 @@ void GuiPainter::text(int x, int y, docstring const & s,
*/
QString str = toqstr(s);
#if 0
// HACK: QT3 refuses to show single compose characters
// Still needed with Qt4?
if (ls == 1 && str[0].unicode() >= 0x05b0 && str[0].unicode() <= 0x05c2)
str = ' ' + str;
#endif
QFont ff = getFont(f);
ff.setWordSpacing(wordspacing);
GuiFontMetrics const & fm = getFontMetrics(f);

View File

@ -438,13 +438,11 @@ PrefInput::PrefInput(GuiPreferences * form)
this, SIGNAL(changed()));
// reveal checkbox for switching Ctrl and Meta on Mac:
bool swapcb = false;
#ifdef Q_OS_MAC
#if QT_VERSION > 0x040600
swapcb = true;
dontswapCB->setVisible(true);
#else
dontswapCB->setVisible(false);
#endif
#endif
dontswapCB->setVisible(swapcb);
}
@ -2635,11 +2633,8 @@ PrefUserInterface::PrefUserInterface(GuiPreferences * form)
iconSetCO->addItem(qt_("Classic"), "classic");
iconSetCO->addItem(qt_("Oxygen"), "oxygen");
#if QT_VERSION >= 0x040600
if (guiApp->platformName() != "qt4x11"
&& guiApp->platformName() != "xcb"
if (guiApp->platformName() != "xcb"
&& !guiApp->platformName().contains("wayland"))
#endif
useSystemThemeIconsCB->hide();
}
@ -3573,11 +3568,10 @@ GuiPreferences::GuiPreferences(GuiView & lv)
addModule(formats);
prefsPS->setCurrentPanel("User Interface");
// FIXME KILLQT4: check that this is still needed (what bug is it?)
// FIXME: hack to work around resizing bug in Qt >= 4.2
// bug verified with Qt 4.2.{0-3} (JSpitzm)
#if QT_VERSION >= 0x040200
prefsPS->updateGeometry();
#endif
bc().setPolicy(ButtonPolicy::PreferencesPolicy);
bc().setOK(buttonBox->button(QDialogButtonBox::Ok));

View File

@ -59,13 +59,8 @@ GuiRef::GuiRef(GuiView & lv)
filter_->setClearButton(true);
filter_->setPlaceholderText(qt_("All available labels"));
filter_->setToolTip(qt_("Enter string to filter the list of available labels"));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
refsTW, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed,
refsTW, [this](){ focusAndHighlight(refsTW); });
#endif
filterBarL->addWidget(filter_, 0);
findKeysLA->setBuddy(filter_);

View File

@ -42,9 +42,7 @@
#include <QHideEvent>
#include <QShowEvent>
#include "QSizePolicy"
#if QT_VERSION >= 0x050000
#include <QSvgRenderer>
#endif
using namespace std;
using namespace lyx::support;
@ -233,11 +231,9 @@ void GuiSearchWidget::handleIndicators()
bool const dark_mode = guiApp && guiApp->isInDarkMode();
qreal dpr = 1.0;
#if QT_VERSION >= 0x050000
// Consider device/pixel ratio (HiDPI)
if (guiApp && guiApp->currentView())
dpr = guiApp->currentView()->devicePixelRatio();
#endif
QString imagedir = "images/";
QPixmap bpixmap = getPixmap("images/", "search-options", "svgz,png");
QPixmap pm = bpixmap;
@ -256,10 +252,7 @@ void GuiSearchWidget::handleIndicators()
if (caseCB->isChecked()) {
tip += "<li>" + qt_("Case sensitive search");
QPixmap spixmap = getPixmap("images/", "search-case-sensitive", "svgz,png");
#if QT_VERSION < 0x050000
painter.drawPixmap(x, 0, spixmap);
#else
// With Qt5, we render SVG directly for HiDPI scalability
// We render SVG directly for HiDPI scalability
FileName fname = imageLibFileSearch(imagedir, "search-case-sensitive", "svgz,png");
QString fpath = toqstr(fname.absFileName());
if (!fpath.isEmpty()) {
@ -268,15 +261,11 @@ void GuiSearchWidget::handleIndicators()
svgRenderer.render(&painter, QRectF(0, 0, spixmap.width() * dpr,
spixmap.height() * dpr));
}
#endif
x += (spixmap.width() * dpr) + gap;
}
if (wordsCB->isChecked()) {
tip += "<li>" + qt_("Whole words only");
QPixmap spixmap = getPixmap("images/", "search-whole-words", "svgz,png");
#if QT_VERSION < 0x050000
painter.drawPixmap(x, 0, spixmap);
#else
FileName fname = imageLibFileSearch(imagedir, "search-whole-words", "svgz,png");
QString fpath = toqstr(fname.absFileName());
if (!fpath.isEmpty()) {
@ -285,15 +274,11 @@ void GuiSearchWidget::handleIndicators()
svgRenderer.render(&painter, QRectF(x, 0, spixmap.width() * dpr,
spixmap.height() * dpr));
}
#endif
x += (spixmap.width() * dpr) + gap;
}
if (selectionCB->isChecked()) {
tip += "<li>" + qt_("Search only in selection");
QPixmap spixmap = getPixmap("images/", "search-selection", "svgz,png");
#if QT_VERSION < 0x050000
painter.drawPixmap(x, 0, spixmap);
#else
FileName fname = imageLibFileSearch(imagedir, "search-selection", "svgz,png");
QString fpath = toqstr(fname.absFileName());
if (!fpath.isEmpty()) {
@ -302,15 +287,11 @@ void GuiSearchWidget::handleIndicators()
svgRenderer.render(&painter, QRectF(x, 0, spixmap.width() * dpr,
spixmap.height() * dpr));
}
#endif
x += (spixmap.width() * dpr) + gap;
}
if (instantSearchCB->isChecked()) {
tip += "<li>" + qt_("Search as you type");
QPixmap spixmap = getPixmap("images/", "search-instant", "svgz,png");
#if QT_VERSION < 0x050000
painter.drawPixmap(x, 0, spixmap);
#else
FileName fname = imageLibFileSearch(imagedir, "search-instant", "svgz,png");
QString fpath = toqstr(fname.absFileName());
if (!fpath.isEmpty()) {
@ -319,15 +300,11 @@ void GuiSearchWidget::handleIndicators()
svgRenderer.render(&painter, QRectF(x, 0, spixmap.width() * dpr,
spixmap.height() * dpr));
}
#endif
x += (spixmap.width() * dpr) + gap;
}
if (wrapCB->isChecked()) {
tip += "<li>" + qt_("Wrap search");
QPixmap spixmap = getPixmap("images/", "search-wrap", "svgz,png");
#if QT_VERSION < 0x050000
painter.drawPixmap(x, 0, spixmap);
#else
FileName fname = imageLibFileSearch(imagedir, "search-wrap", "svgz,png");
QString fpath = toqstr(fname.absFileName());
if (!fpath.isEmpty()) {
@ -336,18 +313,14 @@ void GuiSearchWidget::handleIndicators()
svgRenderer.render(&painter, QRectF(x, 0, spixmap.width() * dpr,
spixmap.height() * dpr));
}
#endif
x += (spixmap.width() * dpr) + gap;
}
tip += "</ul>";
#if QT_VERSION >= 0x050000
pm.setDevicePixelRatio(dpr);
#endif
painter.end();
} else {
tip = qt_("Click here to change search options");
#if QT_VERSION >= 0x050000
// With Qt5, we render SVG directly for HiDPI scalability
// We render SVG directly for HiDPI scalability
FileName fname = imageLibFileSearch(imagedir, "search-options", "svgz,png");
QString fpath = toqstr(fname.absFileName());
if (!fpath.isEmpty()) {
@ -360,7 +333,6 @@ void GuiSearchWidget::handleIndicators()
pm.setDevicePixelRatio(dpr);
}
}
#endif
}
if (dark_mode) {
QImage img = pm.toImage();

View File

@ -521,7 +521,7 @@ void GuiToolbar::add(ToolbarItem const & item)
case ToolbarItem::MINIBUFFER:
command_buffer_ = new GuiCommandBuffer(&owner_);
addWidget(command_buffer_);
/// \todo find a Qt4 equivalent to setHorizontalStretchable(true);
/// \todo find a Qt5 equivalent to setHorizontalStretchable(true);
//setHorizontalStretchable(true);
break;
case ToolbarItem::TABLEINSERT: {

View File

@ -159,7 +159,6 @@ public:
/// The text to be written on top of the pixmap
QString const text = lyx_version ?
qt_("version ") + lyx_version : qt_("unknown version");
#if QT_VERSION >= 0x050000
QString imagedir = "images/";
FileName fname = imageLibFileSearch(imagedir, "banner", "svgz");
QSvgRenderer svgRenderer(toqstr(fname.absFileName()));
@ -171,9 +170,6 @@ public:
} else {
splash_ = getPixmap("images/", "banner", "png");
}
#else
splash_ = getPixmap("images/", "banner", "svgz,png");
#endif
QPainter pain(&splash_);
pain.setPen(QColor(0, 0, 0));
@ -262,11 +258,7 @@ private:
/// Current ratio between physical pixels and device-independent pixels
double pixelRatio() const {
#if QT_VERSION >= 0x050000
return qt_scale_factor * devicePixelRatio();
#else
return 1.0;
#endif
}
qreal fontSize() const {
@ -286,11 +278,7 @@ private:
/// Ratio between physical pixels and device-independent pixels of splash image
double splashPixelRatio() const {
#if QT_VERSION >= 0x050000
return splash_.devicePixelRatio();
#else
return 1.0;
#endif
}
};
@ -606,15 +594,10 @@ GuiView::GuiView(int id)
setAttribute(Qt::WA_DeleteOnClose, true);
#if !(defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)) && !defined(Q_OS_MAC)
// QIcon::fromTheme was introduced in Qt 4.6
#if (QT_VERSION >= 0x040600)
// assign an icon to main form. We do not do it under Qt/Win or Qt/Mac,
// since the icon is provided in the application bundle. We use a themed
// version when available and use the bundled one as fallback.
setWindowIcon(QIcon::fromTheme("lyx", getPixmap("images/", "lyx", "svg,png")));
#else
setWindowIcon(getPixmap("images/", "lyx", "svg,png"));
#endif
#endif
resetWindowTitle();
@ -986,7 +969,7 @@ void GuiView::saveLayout() const
settings.setValue("devel_mode", devel_mode_);
settings.beginGroup("views");
settings.beginGroup(QString::number(id_));
if (guiApp->platformName() == "qt4x11" || guiApp->platformName() == "xcb") {
if (guiApp->platformName() == "xcb") {
settings.setValue("pos", pos());
settings.setValue("size", size());
} else
@ -1052,7 +1035,7 @@ bool GuiView::restoreLayout()
char_nb_count_enabled_ = settings.value("char_nb_count_enabled", true).toBool();
stat_counts_->setVisible(word_count_enabled_ || char_count_enabled_ || char_nb_count_enabled_);
if (guiApp->platformName() == "qt4x11" || guiApp->platformName() == "xcb") {
if (guiApp->platformName() == "xcb") {
QPoint pos = settings.value("pos", QPoint(50, 50)).toPoint();
QSize size = settings.value("size", QSize(690, 510)).toSize();
resize(size);
@ -1820,11 +1803,7 @@ void GuiView::resetCommandExecute()
double GuiView::pixelRatio() const
{
#if QT_VERSION >= 0x050000
return qt_scale_factor * devicePixelRatio();
#else
return 1.0;
#endif
}
@ -5217,11 +5196,9 @@ Dialog * GuiView::findOrBuild(string const & name, bool hide_it)
dialog = build(name);
d.dialogs_[name].reset(dialog);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
// Force a uniform style for group boxes
// On Mac non-flat works better, on Linux flat is standard
flatGroupBoxes(dialog->asQWidget(), guiApp->platformName() != "cocoa");
#endif
if (lyxrc.allow_geometry_session)
dialog->restoreSession();
if (hide_it)

View File

@ -53,9 +53,6 @@
#include "frontends/WorkAreaManager.h"
#include <QContextMenuEvent>
#if (QT_VERSION < 0x050000)
#include <QInputContext>
#endif
#include <QDrag>
#include <QHelpEvent>
#ifdef Q_OS_MAC
@ -182,11 +179,7 @@ GuiWorkArea::GuiWorkArea(Buffer & buffer, GuiView & gv)
double GuiWorkArea::pixelRatio() const
{
#if QT_VERSION >= 0x050000
return qt_scale_factor * devicePixelRatio();
#else
return 1.0;
#endif
}
@ -202,7 +195,7 @@ void GuiWorkArea::init()
});
d->resetScreen();
// With Qt4.5 a mouse event will happen before the first paint event
// A mouse event will happen before the first paint event,
// so make sure that the buffer view has an up to date metrics.
d->buffer_view_->resize(viewport()->width(), viewport()->height());
@ -724,10 +717,6 @@ void GuiWorkArea::mousePressEvent(QMouseEvent * e)
return;
}
#if (QT_VERSION < 0x050000) && !defined(__HAIKU__)
inputContext()->reset();
#endif
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
FuncRequest const cmd(LFUN_MOUSE_PRESS, e->position().x(), e->position().y(),
#else
@ -860,13 +849,6 @@ void GuiWorkArea::wheelEvent(QWheelEvent * ev)
// Wheel rotation by one notch results in a delta() of 120 (see
// documentation of QWheelEvent)
// But first we have to ignore horizontal scroll events.
#if QT_VERSION < 0x050000
if (ev->orientation() == Qt::Horizontal) {
ev->accept();
return;
}
double const delta = ev->delta() / 120.0;
#else
QPoint const aDelta = ev->angleDelta();
// skip horizontal wheel event
if (abs(aDelta.x()) > abs(aDelta.y())) {
@ -874,7 +856,6 @@ void GuiWorkArea::wheelEvent(QWheelEvent * ev)
return;
}
double const delta = aDelta.y() / 120.0;
#endif
bool zoom = false;
switch (lyxrc.scroll_wheel_zoom) {
@ -1232,9 +1213,7 @@ void GuiWorkArea::Private::resetScreen()
screen_ = QImage(pr * p->viewport()->width(),
pr * p->viewport()->height(),
QImage::Format_ARGB32_Premultiplied);
# if QT_VERSION >= 0x050000
screen_.setDevicePixelRatio(pr);
# endif
}
}
@ -1378,11 +1357,7 @@ QVariant GuiWorkArea::inputMethodQuery(Qt::InputMethodQuery query) const
switch (query) {
// this is the CJK-specific composition window position and
// the context menu position when the menu key is pressed.
#if (QT_VERSION < 0x050000)
case Qt::ImMicroFocus: {
#else
case Qt::ImCursorRectangle: {
#endif
CaretGeometry const & cg = bufferView().caretGeometry();
return QRect(cg.left - 10 * (d->preedit_lines_ != 1),
cg.top + cg.height() * d->preedit_lines_,
@ -1595,11 +1570,7 @@ void TabWorkArea::paintEvent(QPaintEvent * event)
// painting of the frame of the tab widget.
// This is needed for gtk style in Qt.
QStylePainter p(this);
#if QT_VERSION < 0x050000
QStyleOptionTabWidgetFrameV2 opt;
#else
QStyleOptionTabWidgetFrame opt;
#endif
initStyleOption(&opt);
opt.rect = style()->subElementRect(QStyle::SE_TabWidgetTabPane,
&opt, this);

View File

@ -76,10 +76,8 @@
#include <QHash>
#include <QList>
#include <QMenuBar>
#include <QString>
#if QT_VERSION >= 0x040600
#include <QProxyStyle>
#endif
#include <QString>
#include <algorithm>
#include <memory>
@ -2146,7 +2144,7 @@ void Menu::Impl::populate(QMenu * qMenu, MenuDefinition const & menu)
}
}
#if (defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)) && (QT_VERSION >= 0x040600)
#if (defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN))
class AlwaysMnemonicStyle : public QProxyStyle {
public:
int styleHint(StyleHint hint, const QStyleOption *opt = 0, const QWidget *widget = 0,
@ -2166,7 +2164,7 @@ public:
Menu::Menu(GuiView * gv, QString const & name, bool top_level, bool keyboard)
: QMenu(gv), d(new Menu::Impl)
{
#if (defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)) && (QT_VERSION >= 0x040600)
#if (defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN))
if (keyboard)
setStyle(new AlwaysMnemonicStyle);
#else
@ -2280,11 +2278,10 @@ MenuDefinition Menus::Impl::mac_special_menu_;
*/
void Menus::Impl::macxMenuBarInit(QMenuBar * qmb)
{
/* Since Qt 4.2, the qt/mac menu code has special code for
specifying the role of a menu entry. However, it does not
work very well with our scheme of creating menus on demand,
and therefore we need to put these entries in a special
invisible menu. (JMarc)
/* The qt/mac menu code has special code for specifying the role
of a menu entry. However, it does not work very well with our
scheme of creating menus on demand, and therefore we need to
put these entries in a special invisible menu. (JMarc)
*/
/* The entries of our special mac menu. If we add support for
@ -2306,11 +2303,6 @@ void Menus::Impl::macxMenuBarInit(QMenuBar * qmb)
QAction::AboutRole},
{LFUN_DIALOG_SHOW, "prefs", "Preferences",
QAction::PreferencesRole},
#if !(defined(QT_MAC_USE_COCOA) || (QT_VERSION >= 0x050000))
/* This doesn't work with Cocoa. */
{LFUN_RECONFIGURE, "", "Reconfigure",
QAction::ApplicationSpecificRole},
#endif
{LFUN_LYX_QUIT, "", "Quit LyX", QAction::QuitRole}
};
const size_t num_entries = sizeof(entries) / sizeof(entries[0]);
@ -2641,7 +2633,7 @@ void Menus::fillMenuBar(QMenuBar * qmb, GuiView * view, bool initial)
} else {
// Clear all menubar contents before filling it.
qmb->clear();
#if (QT_VERSION >= 0x050000 && defined(Q_OS_MAC))
#if (defined(Q_OS_MAC))
d->macxMenuBarInit(qmb);
#endif
}
@ -2684,8 +2676,8 @@ void Menus::fillMenuBar(QMenuBar * qmb, GuiView * view, bool initial)
Menu * menuptr = new Menu(view, m->submenuname(), true);
menuptr->setTitle(label(*m));
#if defined(Q_OS_MAC) && (defined(QT_MAC_USE_COCOA) || (QT_VERSION >= 0x050000))
// On Mac OS with QT/cocoa, the menu is not displayed if there is no action
#if defined(Q_OS_MAC)
// On Mac OS with Qt/Cocoa, the menu is not displayed if there is no action
// so we create a temporary one here
QAction * action = new QAction(menuptr);
menuptr->addAction(action);

View File

@ -102,13 +102,8 @@ TocWidget::TocWidget(GuiView & gui_view, QWidget * parent)
this, SLOT(showContextMenu(const QPoint &)));
connect(filter_, SIGNAL(textEdited(QString)),
this, SLOT(filterContents()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
tocTV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed,
tocTV, [this](){ focusAndHighlight(tocTV); });
#endif
connect(activeFilterCO, SIGNAL(activated(int)),
this, SLOT(filterContents()));

View File

@ -269,22 +269,16 @@ void setMessageColour(list<QWidget *> highlighted, list<QWidget *> plain)
}
/// FIXME KILLQT4: kill this function
/// wrapper to hide the change of method name to setSectionResizeMode
void setSectionResizeMode(QHeaderView * view,
int logicalIndex, QHeaderView::ResizeMode mode) {
#if (QT_VERSION >= 0x050000)
view->setSectionResizeMode(logicalIndex, mode);
#else
view->setResizeMode(logicalIndex, mode);
#endif
}
/// FIXME KILLQT4: kill this function
void setSectionResizeMode(QHeaderView * view, QHeaderView::ResizeMode mode) {
#if (QT_VERSION >= 0x050000)
view->setSectionResizeMode(mode);
#else
view->setResizeMode(mode);
#endif
}
void showDirectory(FileName const & directory)

View File

@ -57,16 +57,11 @@
//#define ResultsDebug
#define USE_QT_FOR_SEARCH
#if defined(USE_QT_FOR_SEARCH)
#include <QtCore> // sets QT_VERSION
#if (QT_VERSION >= 0x050000)
#include <QRegularExpression>
#define QTSEARCH 1
#else
#define QTSEARCH 0
#endif
#else
#define QTSEARCH 0
#endif
using namespace std;
using namespace lyx::support;

View File

@ -126,15 +126,7 @@ void FileMonitorGuard::refresh(bool const emit)
if (!qwatcher_->files().contains(qfilename)) {
bool const existed = exists_;
exists_ = QFile(qfilename).exists();
#if (QT_VERSION >= 0x050000)
if (exists_ && !qwatcher_->addPath(qfilename))
#else
auto add_path = [&]() {
qwatcher_->addPath(qfilename);
return qwatcher_->files().contains(qfilename);
};
if (exists_ && !add_path())
#endif
{
LYXERR(Debug::FILES,
"Could not add path to QFileSystemWatcher: " << filename_);

View File

@ -778,11 +778,7 @@ docstring FileName::fileContents(string const & encoding) const
if (encoding.empty() || encoding == "UTF-8")
s = QString::fromUtf8(contents.data());
else if (encoding == "ascii")
#if (QT_VERSION < 0x050000)
s = QString::fromAscii(contents.data());
#else
s = QString::fromLatin1(contents.data());
#endif
else if (encoding == "local8bit")
s = QString::fromLocal8Bit(contents.data());
else if (encoding == "latin1")

View File

@ -420,12 +420,9 @@ FileName const get_document_dir(FileName const & home_dir)
(void)home_dir; // Silence warning about unused variable.
os::GetFolderPath win32_folder_path;
return FileName(win32_folder_path(os::GetFolderPath::PERSONAL));
#elif defined (USE_MACOSX_PACKAGING) && (QT_VERSION >= 0x050000)
(void)home_dir; // Silence warning about unused variable.
return FileName(fromqstr(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)));
#elif defined (USE_MACOSX_PACKAGING)
(void)home_dir; // Silence warning about unused variable.
return FileName(fromqstr(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation)));
return FileName(fromqstr(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)));
#else // Posix-like.
return home_dir;
#endif
@ -686,13 +683,9 @@ FileName const get_default_user_support_dir(FileName const & home_dir)
os::GetFolderPath win32_folder_path;
return FileName(addPath(win32_folder_path(os::GetFolderPath::APPDATA), PACKAGE));
#elif defined (USE_MACOSX_PACKAGING) && (QT_VERSION >= 0x050000)
(void)home_dir; // Silence warning about unused variable.
return FileName(addPath(fromqstr(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)), PACKAGE));
#elif defined (USE_MACOSX_PACKAGING)
(void)home_dir; // Silence warning about unused variable.
return FileName(addPath(fromqstr(QDesktopServices::storageLocation(QDesktopServices::DataLocation)), PACKAGE));
return FileName(addPath(fromqstr(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)), PACKAGE));
#elif defined (USE_HAIKU_PACKAGING)
return FileName(addPath(home_dir.absFileName(), string("/config/settings/") + PACKAGE));

View File

@ -1314,12 +1314,8 @@ void fileUnlock(int fd, const char * /* lock_file*/)
std::string toHexHash(const std::string & str)
{
// Use the best available hashing algorithm. Qt 5 proposes SHA-2, but Qt 4 is limited to SHA-1.
#if QT_VERSION >= 0x050000
// Use the best available hashing algorithm.
auto hashAlgo = QCryptographicHash::Sha256;
#else
auto hashAlgo = QCryptographicHash::Sha1;
#endif
QByteArray hash = QCryptographicHash::hash(toqstr(str).toLocal8Bit(), hashAlgo);
return fromqstr(QString(hash.toHex()));