--- /dev/null
+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
+
#include "GuiApplication.h"
#endif
-#if QT_VERSION >= 0x040600
-
#include <QEvent>
#include <QDebug>
#include <QString>
#include <QPainter>
#include <QStyle>
#include <QPaintEvent>
-#if QT_VERSION >= 0x050000
#include <QWindow>
-#endif
enum { margin = 6 };
{
ensurePolished();
updateMargins();
-
+
connect(this, SIGNAL(textChanged(QString)),
this, SLOT(checkButtons(QString)));
connect(m_d->m_iconbutton[Left], SIGNAL(clicked()),
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
Side iconpos = (Side)i;
if (layoutDirection() == Qt::RightToLeft)
iconpos = (iconpos == Left ? Right : Left);
-
+
if (iconpos == FancyLineEdit::Right) {
const int iconoffset = textMargins().right() + 4;
m_d->m_iconbutton[i]->setGeometry(
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;
} // namespace lyx
-#endif // QT_VERSION >= 0x040600
-
#include "moc_FancyLineEdit.cpp"
#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>
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()));
return thmicn;
}
}
-#endif
IconInfo icondata = iconInfo(f, unknown, rtl);
if (icondata.filepath.isEmpty())
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
////////////////////////////////////////////////////////////////////////
// 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.
, 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;
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_;
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()),
}
-#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
}
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());
}
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
+# endif
// Create the global default menubar which is shown for the dialogs
// and if no GuiView is visible.
// This must be done after the session was recovered to know the "last files".
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();
///
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
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. "
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");
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()),
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."));
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
+ masterChildModule->childrenTW->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
+ masterChildModule->childrenTW->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
// Formats
outputModule = new UiWidget<Ui::OutputUi>(this);
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
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
}
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"},
{ STMARY_FAMILY,"stmary10"},
{ WASY_FAMILY, "wasy10"},
{ ESINT_FAMILY, "esint10"}
-#endif
};
size_t const nr_symbol_fonts = sizeof(symbol_fonts) / sizeof(symbol_fonts[0]);
}
-#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) {
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;
}
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
font.setFamily(family);
}
font.setStyleStrategy(QFont::NoFontMerging);
-#if QT_VERSION >= 0x040800
font.setStyleName("LyX");
if (isChosenFont(font, family, "LyX")) {
LYXERR_NOENDL(Debug::FONT, "Trying normal " << family << " ... ");
font.setStyleName(QString());
-#endif
if (isChosenFont(font, family, QString())) {
LYXERR_NOPOS(Debug::FONT, "normal!");
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;
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;
}
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());
{
// 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;
}
#endif
-#if QT_VERSION < 0x050000
-inline uint qHash(double key)
-{
- return qHash(QByteArray(reinterpret_cast<char const *>(&key), sizeof(key)));
-}
-#endif
-
-
namespace std {
/*
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;
*/
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();
/// \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
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
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
}
return false;
}
-#if QT_VERSION >= 0x050000
original_.setDevicePixelRatio(params.pixel_ratio);
-#endif
is_transformed_ = clip(params);
is_transformed_ |= rotate(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_;
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);
#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"
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.
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_);
*/
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);
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;
-#endif
+ dontswapCB->setVisible(true);
+#else
+ dontswapCB->setVisible(false);
#endif
- dontswapCB->setVisible(swapcb);
}
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();
}
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));
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_);
#include <QHideEvent>
#include <QShowEvent>
#include "QSizePolicy"
-#if QT_VERSION >= 0x050000
#include <QSvgRenderer>
-#endif
using namespace std;
using namespace lyx::support;
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;
pm.fill(Qt::transparent);
QPainter painter(&pm);
int x = 0;
-
+
tip = qt_("Active options:");
tip += "<ul>";
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()) {
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()) {
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()) {
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()) {
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()) {
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()) {
pm.setDevicePixelRatio(dpr);
}
}
-#endif
}
if (dark_mode) {
QImage img = pm.toImage();
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: {
/// 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()));
} else {
splash_ = getPixmap("images/", "banner", "png");
}
-#else
- splash_ = getPixmap("images/", "banner", "svgz,png");
-#endif
QPainter pain(&splash_);
pain.setPen(QColor(0, 0, 0));
/// 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 {
/// 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
}
};
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();
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
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);
double GuiView::pixelRatio() const
{
-#if QT_VERSION >= 0x050000
return qt_scale_factor * devicePixelRatio();
-#else
- return 1.0;
-#endif
}
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)
#include "frontends/WorkAreaManager.h"
#include <QContextMenuEvent>
-#if (QT_VERSION < 0x050000)
-#include <QInputContext>
-#endif
#include <QDrag>
#include <QHelpEvent>
#ifdef Q_OS_MAC
double GuiWorkArea::pixelRatio() const
{
-#if QT_VERSION >= 0x050000
return qt_scale_factor * devicePixelRatio();
-#else
- return 1.0;
-#endif
}
});
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());
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
// 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())) {
return;
}
double const delta = aDelta.y() / 120.0;
-#endif
bool zoom = false;
switch (lyxrc.scroll_wheel_zoom) {
screen_ = QImage(pr * p->viewport()->width(),
pr * p->viewport()->height(),
QImage::Format_ARGB32_Premultiplied);
-# if QT_VERSION >= 0x050000
screen_.setDevicePixelRatio(pr);
-# endif
}
}
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_,
// 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);
#include <QHash>
#include <QList>
#include <QMenuBar>
-#include <QString>
-#if QT_VERSION >= 0x040600
#include <QProxyStyle>
-#endif
+#include <QString>
#include <algorithm>
#include <memory>
}
}
-#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,
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
*/
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
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]);
} 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
}
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);
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()));
}
+/// 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)
//#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
+ #include <QRegularExpression>
+ #define QTSEARCH 1
#else
#define QTSEARCH 0
#endif
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_);
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")
(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
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));
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()));