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

View File

@ -135,13 +135,9 @@
#endif #endif
#endif #endif
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400) #if (QT_VERSION >= 0x050400)
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN) #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
#if (QT_VERSION < 0x050000) #if (QT_VERSION >= 0x060000)
#include <QWindowsMime>
#define QWINDOWSMIME QWindowsMime
#define QVARIANTTYPE QVariant::Type
#elif (QT_VERSION >= 0x060000)
#include <QtGui/private/qguiapplication_p.h> #include <QtGui/private/qguiapplication_p.h>
#include <QtGui/private/qwindowsmime_p.h> #include <QtGui/private/qwindowsmime_p.h>
#include <QtGui/qpa/qplatformintegration.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) QIcon getIcon(FuncRequest const & f, bool unknown, bool rtl)
{ {
#if (QT_VERSION >= 0x040600)
if (lyxrc.use_system_theme_icons) { if (lyxrc.use_system_theme_icons) {
// use the icons from system theme that are available // use the icons from system theme that are available
QString action = toqstr(lyxaction.getActionName(f.action())); QString action = toqstr(lyxaction.getActionName(f.action()));
@ -732,7 +727,6 @@ QIcon getIcon(FuncRequest const & f, bool unknown, bool rtl)
return thmicn; return thmicn;
} }
} }
#endif
IconInfo icondata = iconInfo(f, unknown, rtl); IconInfo icondata = iconInfo(f, unknown, rtl);
if (icondata.filepath.isEmpty()) if (icondata.filepath.isEmpty())
@ -784,11 +778,7 @@ public:
QString translate(const char * /* context */, QString translate(const char * /* context */,
const char *sourceText, const char *sourceText,
#if QT_VERSION >= 0x050000
const char * /* disambiguation */ = nullptr, int /* n */ = -1) const override 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 // Here we declare the strings that need to be translated from Qt own GUI
// This is needed to include these strings to po files // This is needed to include these strings to po files
@ -879,7 +869,7 @@ public:
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
// Windows specific stuff goes here... // 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) #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
// QWindowsMimeMetafile can only be compiled on Windows. // QWindowsMimeMetafile can only be compiled on Windows.
@ -1045,7 +1035,7 @@ struct GuiApplication::Private
, last_state_(Qt::ApplicationInactive) , last_state_(Qt::ApplicationInactive)
#endif #endif
{ {
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400) #if (QT_VERSION >= 0x050400)
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN) #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
/// WMF Mime handler for Windows clipboard. /// WMF Mime handler for Windows clipboard.
wmf_mime_ = new QWindowsMimeMetafile; wmf_mime_ = new QWindowsMimeMetafile;
@ -1134,7 +1124,7 @@ struct GuiApplication::Private
QMacPasteboardMimeGraphics mac_pasteboard_mime_; QMacPasteboardMimeGraphics mac_pasteboard_mime_;
#endif #endif
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400) #if (QT_VERSION >= 0x050400)
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN) #if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
/// WMF Mime handler for Windows clipboard. /// WMF Mime handler for Windows clipboard.
QWindowsMimeMetafile * wmf_mime_; QWindowsMimeMetafile * wmf_mime_;
@ -1239,11 +1229,8 @@ GuiApplication::GuiApplication(int & argc, char ** argv)
if (lyxrc.typewriter_font_name.empty()) if (lyxrc.typewriter_font_name.empty())
lyxrc.typewriter_font_name = fromqstr(typewriterFontName()); lyxrc.typewriter_font_name = fromqstr(typewriterFontName());
#if (QT_VERSION >= 0x050000)
// Qt4 does this in event(), see below.
// Track change of keyboard // Track change of keyboard
connect(inputMethod(), SIGNAL(localeChanged()), this, SLOT(onLocaleChanged())); connect(inputMethod(), SIGNAL(localeChanged()), this, SLOT(onLocaleChanged()));
#endif
d->general_timer_.setInterval(500); d->general_timer_.setInterval(500);
connect(&d->general_timer_, SIGNAL(timeout()), 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 double GuiApplication::pixelRatio() const
{ {
#if QT_VERSION >= 0x050000
return qt_scale_factor * devicePixelRatio(); return qt_scale_factor * devicePixelRatio();
#else
return 1.0;
#endif
} }
@ -2363,11 +2323,7 @@ docstring GuiApplication::viewStatusMessage()
string GuiApplication::inputLanguageCode() const string GuiApplication::inputLanguageCode() const
{ {
#if (QT_VERSION < 0x050000)
QLocale loc = keyboardInputLocale();
#else
QLocale loc = inputMethod()->locale(); QLocale loc = inputMethod()->locale();
#endif
//LYXERR0("input lang = " << fromqstr(loc.name())); //LYXERR0("input lang = " << fromqstr(loc.name()));
return loc.name() == "C" ? "en_US" : fromqstr(loc.name()); return loc.name() == "C" ? "en_US" : fromqstr(loc.name());
} }
@ -2862,12 +2818,10 @@ void GuiApplication::execBatchCommands()
return; return;
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
#if QT_VERSION > 0x040600
setAttribute(Qt::AA_MacDontSwapCtrlAndMeta,lyxrc.mac_dontswap_ctrl_meta); setAttribute(Qt::AA_MacDontSwapCtrlAndMeta,lyxrc.mac_dontswap_ctrl_meta);
#endif # if QT_VERSION < 0x060000
#if QT_VERSION >= 0x050000 && QT_VERSION < 0x060000
setAttribute(Qt::AA_UseHighDpiPixmaps,true); setAttribute(Qt::AA_UseHighDpiPixmaps,true);
#endif # endif
// Create the global default menubar which is shown for the dialogs // Create the global default menubar which is shown for the dialogs
// and if no GuiView is visible. // and if no GuiView is visible.
// This must be done after the session was recovered to know the "last files". // This must be done after the session was recovered to know the "last files".
@ -3033,15 +2987,6 @@ bool GuiApplication::event(QEvent * e)
e->accept(); e->accept();
return true; 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: { case QEvent::ApplicationPaletteChange: {
// runtime switch from/to dark mode // runtime switch from/to dark mode
onPaletteChanged(); onPaletteChanged();

View File

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

View File

@ -108,13 +108,8 @@ GuiBibtex::GuiBibtex(GuiView & lv)
this, SLOT(filterChanged(QString))); this, SLOT(filterChanged(QString)));
connect(filter_, SIGNAL(returnPressed()), connect(filter_, SIGNAL(returnPressed()),
this, SLOT(filterPressed())); this, SLOT(filterPressed()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
availableLV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed, connect(filter_, &FancyLineEdit::downPressed,
availableLV, [this](){ focusAndHighlight(availableLV); }); 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. " 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. " "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(bibtocCB);
bc().addReadOnly(bibEncodingCO); bc().addReadOnly(bibEncodingCO);
#if (QT_VERSION < 0x050000)
selectedLV->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
#else
selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
#endif
// Always put the default encoding in the first position. // Always put the default encoding in the first position.
bibEncodingCO->addItem(qt_("Document Encoding"), "default"); bibEncodingCO->addItem(qt_("Document Encoding"), "default");

View File

@ -153,13 +153,8 @@ GuiCitation::GuiCitation(GuiView & lv)
this, SLOT(filterChanged(QString))); this, SLOT(filterChanged(QString)));
connect(filter_, SIGNAL(returnPressed()), connect(filter_, SIGNAL(returnPressed()),
this, SLOT(filterPressed())); this, SLOT(filterPressed()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
availableLV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed, connect(filter_, &FancyLineEdit::downPressed,
availableLV, [this](){ focusAndHighlight(availableLV); }); availableLV, [this](){ focusAndHighlight(availableLV); });
#endif
connect(regexp_, SIGNAL(triggered()), connect(regexp_, SIGNAL(triggered()),
this, SLOT(regexChanged())); this, SLOT(regexChanged()));
connect(casesense_, SIGNAL(triggered()), connect(casesense_, SIGNAL(triggered()),
@ -167,11 +162,7 @@ GuiCitation::GuiCitation(GuiView & lv)
connect(instant_, SIGNAL(triggered(bool)), connect(instant_, SIGNAL(triggered(bool)),
this, SLOT(instantChanged(bool))); this, SLOT(instantChanged(bool)));
#if (QT_VERSION < 0x050000)
selectedLV->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
#else
selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
#endif
selectedLV->setToolTip(qt_("Ordered list of all cited references.\n" selectedLV->setToolTip(qt_("Ordered list of all cited references.\n"
"You can reorder, add and remove references with the buttons on the left.")); "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->setColumnCount(2);
masterChildModule->childrenTW->headerItem()->setText(0, qt_("Child Document")); masterChildModule->childrenTW->headerItem()->setText(0, qt_("Child Document"));
masterChildModule->childrenTW->headerItem()->setText(1, qt_("Include to Output")); masterChildModule->childrenTW->headerItem()->setText(1, qt_("Include to Output"));
#if (QT_VERSION > 0x050000) masterChildModule->childrenTW->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
masterChildModule->childrenTW->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); masterChildModule->childrenTW->header()->setSectionResizeMode(1, 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 // Formats
outputModule = new UiWidget<Ui::OutputUi>(this); outputModule = new UiWidget<Ui::OutputUi>(this);
@ -1679,13 +1674,8 @@ GuiDocument::GuiDocument(GuiView & lv)
this, SLOT(moduleFilterChanged(QString))); this, SLOT(moduleFilterChanged(QString)));
connect(filter_, SIGNAL(returnPressed()), connect(filter_, SIGNAL(returnPressed()),
this, SLOT(moduleFilterPressed())); this, SLOT(moduleFilterPressed()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
modulesModule->availableLV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed, connect(filter_, &FancyLineEdit::downPressed,
modulesModule->availableLV, [this](){ focusAndHighlight(modulesModule->availableLV); }); modulesModule->availableLV, [this](){ focusAndHighlight(modulesModule->availableLV); });
#endif
// PDF support // PDF support
@ -1793,11 +1783,10 @@ GuiDocument::GuiDocument(GuiView & lv)
docPS->addPanel(outputModule, N_("Formats[[output]]")); docPS->addPanel(outputModule, N_("Formats[[output]]"));
docPS->addPanel(preambleModule, N_("LaTeX Preamble")); docPS->addPanel(preambleModule, N_("LaTeX Preamble"));
docPS->setCurrentPanel("Document Class"); 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 // FIXME: hack to work around resizing bug in Qt >= 4.2
// bug verified with Qt 4.2.{0-3} (JSpitzm) // bug verified with Qt 4.2.{0-3} (JSpitzm)
#if QT_VERSION >= 0x040200
docPS->updateGeometry(); docPS->updateGeometry();
#endif
} }

View File

@ -66,27 +66,9 @@ namespace {
struct SymbolFont { struct SymbolFont {
FontFamily lyx_family; FontFamily lyx_family;
QString family; QString family;
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
QString xlfd;
#endif
}; };
SymbolFont symbol_fonts[] = { 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"}, { SYMBOL_FAMILY,"symbol"},
{ CMR_FAMILY, "cmr10"}, { CMR_FAMILY, "cmr10"},
{ CMSY_FAMILY, "cmsy10"}, { CMSY_FAMILY, "cmsy10"},
@ -100,7 +82,6 @@ SymbolFont symbol_fonts[] = {
{ STMARY_FAMILY,"stmary10"}, { STMARY_FAMILY,"stmary10"},
{ WASY_FAMILY, "wasy10"}, { WASY_FAMILY, "wasy10"},
{ ESINT_FAMILY, "esint10"} { ESINT_FAMILY, "esint10"}
#endif
}; };
size_t const nr_symbol_fonts = sizeof(symbol_fonts) / sizeof(symbol_fonts[0]); 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) QString symbolFamily(FontFamily family)
{ {
for (size_t i = 0; i < nr_symbol_fonts; ++i) { 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()); LYXERR_NOPOS(Debug::FONT, "got: " << fi.family());
if (fi.family().contains(family) if (fi.family().contains(family)
#if QT_VERSION >= 0x040800 && (style.isEmpty() || fi.styleName().contains(style))) {
&& (style.isEmpty() || fi.styleName().contains(style))
#endif
) {
LYXERR_NOENDL(Debug::FONT, " got it "); LYXERR_NOENDL(Debug::FONT, " got it ");
return true; return true;
} }
@ -209,8 +174,7 @@ QFont symbolFont(QString const & family, bool * ok)
upper[0] = family[0].toUpper(); upper[0] = family[0].toUpper();
QFont font; QFont font;
if (guiApp->platformName() == "qt4x11" if (guiApp->platformName() == "xcb"
|| guiApp->platformName() == "xcb"
|| guiApp->platformName().contains("wayland")) { || guiApp->platformName().contains("wayland")) {
// On *nix we have to also specify the foundry to be able to // On *nix we have to also specify the foundry to be able to
// discriminate our fonts when the texlive fonts are managed by // 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.setFamily(family);
} }
font.setStyleStrategy(QFont::NoFontMerging); font.setStyleStrategy(QFont::NoFontMerging);
#if QT_VERSION >= 0x040800
font.setStyleName("LyX"); font.setStyleName("LyX");
if (isChosenFont(font, family, "LyX")) { if (isChosenFont(font, family, "LyX")) {
@ -231,7 +194,6 @@ QFont symbolFont(QString const & family, bool * ok)
LYXERR_NOENDL(Debug::FONT, "Trying normal " << family << " ... "); LYXERR_NOENDL(Debug::FONT, "Trying normal " << family << " ... ");
font.setStyleName(QString()); font.setStyleName(QString());
#endif
if (isChosenFont(font, family, QString())) { if (isChosenFont(font, family, QString())) {
LYXERR_NOPOS(Debug::FONT, "normal!"); LYXERR_NOPOS(Debug::FONT, "normal!");
@ -248,20 +210,6 @@ QFont symbolFont(QString const & family, bool * ok)
return font; 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 :-("); LYXERR_NOPOS(Debug::FONT, " FAILED :-(");
*ok = false; *ok = false;
return font; return font;
@ -337,13 +285,12 @@ QFont makeQFont(FontInfo const & f)
toqstr(lyxrc.roman_font_foundry)); toqstr(lyxrc.roman_font_foundry));
font.setFamily(family); font.setFamily(family);
#ifdef Q_OS_MAC #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 // Workaround for a Qt bug, see http://www.lyx.org/trac/ticket/3684
// and http://bugreports.qt.nokia.com/browse/QTBUG-11145. // and http://bugreports.qt.nokia.com/browse/QTBUG-11145.
// FIXME: Check whether this is really fixed in Qt 4.8 // FIXME: Check whether this is really fixed in Qt 4.8
if (family == "Times" && !font.exactMatch()) if (family == "Times" && !font.exactMatch())
font.setFamily("Times New Roman"); font.setFamily("Times New Roman");
#endif
#endif #endif
break; break;
} }
@ -394,10 +341,6 @@ QFont makeQFont(FontInfo const & f)
else else
LYXERR(Debug::FONT, "This font is NOT an exact match"); 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); font.setPointSizeF(f.realSize() * lyxrc.currentZoom / 100.0);
LYXERR(Debug::FONT, "The font has size: " << font.pointSizeF()); LYXERR(Debug::FONT, "The font has size: " << font.pointSizeF());
@ -453,13 +396,9 @@ bool FontLoader::canBeDisplayed(char_type c)
{ {
// bug 8493 // bug 8493
if (c == 0x0009) if (c == 0x0009)
// FIXME KILLQT4: get rid of this function if not needed anymore
// FIXME check whether this is still needed for Qt5 // FIXME check whether this is still needed for Qt5
return false; 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; return true;
} }

View File

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

View File

@ -120,7 +120,7 @@ private:
double slope_; double slope_;
/// If true, avoid extra annotation in string for QTextLayout /// 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; bool needs_naked_ = false;
/// Cache of char widths /// Cache of char widths

View File

@ -64,25 +64,17 @@ QImage const & GuiImage::image() const
unsigned int GuiImage::width() const unsigned int GuiImage::width() const
{ {
#if QT_VERSION >= 0x050000
return static_cast<unsigned int>(ceil(is_transformed_ ? return static_cast<unsigned int>(ceil(is_transformed_ ?
(transformed_.width() / transformed_.devicePixelRatio()) : (transformed_.width() / transformed_.devicePixelRatio()) :
(original_.width() / original_.devicePixelRatio()))); (original_.width() / original_.devicePixelRatio())));
#else
return is_transformed_ ? transformed_.width() : original_.width();
#endif
} }
unsigned int GuiImage::height() const unsigned int GuiImage::height() const
{ {
#if QT_VERSION >= 0x050000
return static_cast<unsigned int>(ceil(is_transformed_ ? return static_cast<unsigned int>(ceil(is_transformed_ ?
(transformed_.height() / transformed_.devicePixelRatio()) : (transformed_.height() / transformed_.devicePixelRatio()) :
(original_.height() / original_.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; return false;
} }
#if QT_VERSION >= 0x050000
original_.setDevicePixelRatio(params.pixel_ratio); original_.setDevicePixelRatio(params.pixel_ratio);
#endif
is_transformed_ = clip(params); is_transformed_ = clip(params);
is_transformed_ |= rotate(params); is_transformed_ |= rotate(params);
@ -141,14 +131,9 @@ bool GuiImage::clip(Params const & params)
// No clipping is necessary. // No clipping is necessary.
return false; return false;
#if QT_VERSION >= 0x050000
double const pixelRatio = is_transformed_ ? transformed_.devicePixelRatio() : original_.devicePixelRatio(); 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_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); 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_; QImage const & image = is_transformed_ ? transformed_ : original_;
@ -191,19 +176,8 @@ bool GuiImage::scale(Params const & params)
if (params.scale == 100) if (params.scale == 100)
return false; return false;
#if QT_VERSION >= 0x050000
double const pixelRatio = is_transformed_ ? transformed_.devicePixelRatio() : original_.devicePixelRatio(); double const pixelRatio = is_transformed_ ? transformed_.devicePixelRatio() : original_.devicePixelRatio();
qreal scale = qreal(params.scale) / 100.0 * pixelRatio; qreal const 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
QTransform m; QTransform m;
m.scale(scale, scale); m.scale(scale, scale);

View File

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

View File

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

View File

@ -315,13 +315,6 @@ void GuiPainter::text(int x, int y, docstring const & s,
*/ */
QString str = toqstr(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); QFont ff = getFont(f);
ff.setWordSpacing(wordspacing); ff.setWordSpacing(wordspacing);
GuiFontMetrics const & fm = getFontMetrics(f); GuiFontMetrics const & fm = getFontMetrics(f);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -102,13 +102,8 @@ TocWidget::TocWidget(GuiView & gui_view, QWidget * parent)
this, SLOT(showContextMenu(const QPoint &))); this, SLOT(showContextMenu(const QPoint &)));
connect(filter_, SIGNAL(textEdited(QString)), connect(filter_, SIGNAL(textEdited(QString)),
this, SLOT(filterContents())); this, SLOT(filterContents()));
#if (QT_VERSION < 0x050000)
connect(filter_, SIGNAL(downPressed()),
tocTV, SLOT(setFocus()));
#else
connect(filter_, &FancyLineEdit::downPressed, connect(filter_, &FancyLineEdit::downPressed,
tocTV, [this](){ focusAndHighlight(tocTV); }); tocTV, [this](){ focusAndHighlight(tocTV); });
#endif
connect(activeFilterCO, SIGNAL(activated(int)), connect(activeFilterCO, SIGNAL(activated(int)),
this, SLOT(filterContents())); 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 /// wrapper to hide the change of method name to setSectionResizeMode
void setSectionResizeMode(QHeaderView * view, void setSectionResizeMode(QHeaderView * view,
int logicalIndex, QHeaderView::ResizeMode mode) { int logicalIndex, QHeaderView::ResizeMode mode) {
#if (QT_VERSION >= 0x050000)
view->setSectionResizeMode(logicalIndex, mode); view->setSectionResizeMode(logicalIndex, mode);
#else
view->setResizeMode(logicalIndex, mode);
#endif
} }
/// FIXME KILLQT4: kill this function
void setSectionResizeMode(QHeaderView * view, QHeaderView::ResizeMode mode) { void setSectionResizeMode(QHeaderView * view, QHeaderView::ResizeMode mode) {
#if (QT_VERSION >= 0x050000)
view->setSectionResizeMode(mode); view->setSectionResizeMode(mode);
#else
view->setResizeMode(mode);
#endif
} }
void showDirectory(FileName const & directory) void showDirectory(FileName const & directory)

View File

@ -57,13 +57,8 @@
//#define ResultsDebug //#define ResultsDebug
#define USE_QT_FOR_SEARCH #define USE_QT_FOR_SEARCH
#if defined(USE_QT_FOR_SEARCH) #if defined(USE_QT_FOR_SEARCH)
#include <QtCore> // sets QT_VERSION #include <QRegularExpression>
#if (QT_VERSION >= 0x050000) #define QTSEARCH 1
#include <QRegularExpression>
#define QTSEARCH 1
#else
#define QTSEARCH 0
#endif
#else #else
#define QTSEARCH 0 #define QTSEARCH 0
#endif #endif

View File

@ -126,15 +126,7 @@ void FileMonitorGuard::refresh(bool const emit)
if (!qwatcher_->files().contains(qfilename)) { if (!qwatcher_->files().contains(qfilename)) {
bool const existed = exists_; bool const existed = exists_;
exists_ = QFile(qfilename).exists(); exists_ = QFile(qfilename).exists();
#if (QT_VERSION >= 0x050000)
if (exists_ && !qwatcher_->addPath(qfilename)) 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, LYXERR(Debug::FILES,
"Could not add path to QFileSystemWatcher: " << filename_); "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") if (encoding.empty() || encoding == "UTF-8")
s = QString::fromUtf8(contents.data()); s = QString::fromUtf8(contents.data());
else if (encoding == "ascii") else if (encoding == "ascii")
#if (QT_VERSION < 0x050000)
s = QString::fromAscii(contents.data());
#else
s = QString::fromLatin1(contents.data()); s = QString::fromLatin1(contents.data());
#endif
else if (encoding == "local8bit") else if (encoding == "local8bit")
s = QString::fromLocal8Bit(contents.data()); s = QString::fromLocal8Bit(contents.data());
else if (encoding == "latin1") 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. (void)home_dir; // Silence warning about unused variable.
os::GetFolderPath win32_folder_path; os::GetFolderPath win32_folder_path;
return FileName(win32_folder_path(os::GetFolderPath::PERSONAL)); 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) #elif defined (USE_MACOSX_PACKAGING)
(void)home_dir; // Silence warning about unused variable. (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. #else // Posix-like.
return home_dir; return home_dir;
#endif #endif
@ -686,13 +683,9 @@ FileName const get_default_user_support_dir(FileName const & home_dir)
os::GetFolderPath win32_folder_path; os::GetFolderPath win32_folder_path;
return FileName(addPath(win32_folder_path(os::GetFolderPath::APPDATA), PACKAGE)); 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) #elif defined (USE_MACOSX_PACKAGING)
(void)home_dir; // Silence warning about unused variable. (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) #elif defined (USE_HAIKU_PACKAGING)
return FileName(addPath(home_dir.absFileName(), string("/config/settings/") + PACKAGE)); 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) 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. // Use the best available hashing algorithm.
#if QT_VERSION >= 0x050000
auto hashAlgo = QCryptographicHash::Sha256; auto hashAlgo = QCryptographicHash::Sha256;
#else
auto hashAlgo = QCryptographicHash::Sha1;
#endif
QByteArray hash = QCryptographicHash::hash(toqstr(str).toLocal8Bit(), hashAlgo); QByteArray hash = QCryptographicHash::hash(toqstr(str).toLocal8Bit(), hashAlgo);
return fromqstr(QString(hash.toHex())); return fromqstr(QString(hash.toHex()));