mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
Merge branch 'killqt4'
Remove all trace of Qt4 support. The different elements have been considered carefully before removal. The only changes that need to be done concern Windows and macOS compilation instruction and will need to be taken care of by the respective maintainers before prerelease. The file TODO.killqt4 lists what remains to be done.
This commit is contained in:
commit
9376f0203d
@ -219,7 +219,7 @@ else()
|
||||
endif()
|
||||
LYX_COMBO(DEBUG_SANITIZE "Use sanitize check" NONE ADDRESS UNSPECIFIED)
|
||||
#LYX_COMBO(USE_FILEDIALOG "Use native or QT file dialog" QT NATIVE)
|
||||
LYX_COMBO(USE_QT "Use Qt version as frontend" AUTO QT4 QT5 QT6)
|
||||
LYX_COMBO(USE_QT "Use Qt version as frontend" AUTO QT5 QT6)
|
||||
LYX_COMBO(USE_IPO "Interprocedural optimization" OFF AUTO ON)
|
||||
#LYX_OPTION(3RDPARTY_BUILD "Build 3rdparty libs" OFF ALL)
|
||||
LYX_OPTION(DISABLE_CALLSTACK_PRINTING "do not print a callstack when crashing" OFF ALL)
|
||||
@ -764,13 +764,10 @@ if(LYX_USE_QT MATCHES "AUTO")
|
||||
set(LYX_USE_QT "QT5" CACHE STRING "Valid qt version" FORCE)
|
||||
message(STATUS "Qt5Core_VERSION = ${Qt5Core_VERSION}")
|
||||
if(Qt5Core_VERSION VERSION_LESS ${min_qt5_version})
|
||||
find_package(Qt4 "4.5.0" QUIET)
|
||||
if(QT4_FOUND)
|
||||
set(LYX_USE_QT "QT4" CACHE STRING "Valid qt version" FORCE)
|
||||
endif()
|
||||
message(FATAL_ERROR "No appropriate QT-version found")
|
||||
endif()
|
||||
else()
|
||||
set(LYX_USE_QT "QT4" CACHE STRING "Valid qt version" FORCE)
|
||||
message(FATAL_ERROR "No appropriate QT-version found")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@ -811,8 +808,8 @@ if(LYX_USE_QT MATCHES "QT6|QT5")
|
||||
set(QTVERSION ${${QtVal}Core_VERSION})
|
||||
if (QTVERSION VERSION_LESS ${min_qt5_version})
|
||||
message(STATUS "QTVERSION = \"${QTVERSION}\"")
|
||||
message(STATUS "This version is not recommended, try either option -DLYX_USE_QT=QT4 or")
|
||||
message(STATUS "install QT-Version >= \"${min_qt5_version}\"")
|
||||
message(STATUS "This version is not recommended,")
|
||||
message(STATUS "please install QT-Version >= \"${min_qt5_version}\"")
|
||||
# see thread in lyx-devel list
|
||||
# From: Jean-Pierre Chrétien <jeanpierre.chretien@free.fr>
|
||||
# Date 11.03.2017
|
||||
@ -837,24 +834,6 @@ if(LYX_USE_QT MATCHES "QT6|QT5")
|
||||
set(QtCore5CompatModule Core5Compat)
|
||||
endif()
|
||||
endif()
|
||||
elseif(LYX_USE_QT MATCHES "QT4")
|
||||
if(LYX_XMINGW)
|
||||
set(QT_MINGW_DIR ${LYX_QT4} CACHE PATH "Qt for Mingw" FORCE)
|
||||
list(APPEND CMAKE_FIND_ROOT_PATH ${QT_MINGW_DIR} ${GNUWIN32_DIR})
|
||||
endif()
|
||||
find_package(Qt4 "4.5.0" REQUIRED)
|
||||
macro (qt_use_modules)
|
||||
endmacro()
|
||||
macro (qt_add_resources)
|
||||
qt4_add_resources(${ARGN})
|
||||
endmacro()
|
||||
macro (qt_wrap_uifiles)
|
||||
qt4_wrap_ui(${ARGN})
|
||||
endmacro()
|
||||
set(LYX_QTMAIN_LIBRARY ${QT_QTSVG_LIBRARY})
|
||||
if(WIN32)
|
||||
list(APPEND LYX_QTMAIN_LIBRARY ${QT_QTMAIN_LIBRARIES})
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Unhandled value for LYX_USE_QT (${LYX_USE_QT})")
|
||||
endif()
|
||||
@ -1194,7 +1173,7 @@ unset(opts)
|
||||
unset(tmp_vi)
|
||||
|
||||
if(QTVERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+).*")
|
||||
MATH(EXPR QT4_VERSION "(${CMAKE_MATCH_1}<<16)|(${CMAKE_MATCH_2}<<8)|${CMAKE_MATCH_3}")
|
||||
MATH(EXPR QTx_VERSION "(${CMAKE_MATCH_1}<<16)|(${CMAKE_MATCH_2}<<8)|${CMAKE_MATCH_3}")
|
||||
endif()
|
||||
|
||||
|
||||
|
15
INSTALL
15
INSTALL
@ -52,18 +52,17 @@ You will also probably need GNU m4 (perhaps installed as gm4).
|
||||
Requirements
|
||||
------------
|
||||
|
||||
First of all, you will need a C++11 standard conforming compiler, like gcc (at
|
||||
least 4.9) or clang.
|
||||
First of all, you will need a C++11 standard conforming compiler, like g++ (at
|
||||
least 4.9, to have proper srd::regex) or clang++.
|
||||
|
||||
LyX makes great use of the C++ Standard Template Library (STL).
|
||||
This means that gcc users will have to install the relevant libstdc++
|
||||
library to be able to compile this version of LyX.
|
||||
|
||||
For full LyX usability we suggest to use Qt 5.6 and higher, or at the
|
||||
very least Qt 5.4. For compilation you need to compile against at least
|
||||
Qt 4.8 which has been widely tested, and for Windows we advise at least
|
||||
Qt 4.8.4. The only special point to make is that you must ensure that
|
||||
both LyX and the Qt libraries are compiled with the same C++ compiler.
|
||||
very least Qt 5.4. It is also possible to compile against Qt 6.The
|
||||
only special point to make is that you must ensure that both LyX and
|
||||
the Qt libraries are compiled with the same C++ compiler.
|
||||
|
||||
To build LyX with spell checking capabilities included you have to
|
||||
install at least one of the development packages of the spell checker
|
||||
@ -124,8 +123,8 @@ flags:
|
||||
|
||||
The `gprof' build type compiles and links with -pg option with gcc.
|
||||
|
||||
o --disable-qt5 that forces configuration with Qt 4.x when Qt 5.x is
|
||||
also available. By default Qt5 is tried first, and then Qt4.
|
||||
o --enable-qt6 that checks configuration with Qt 6.x, and then Qt
|
||||
5.x. By default, only Qt5 is tried.
|
||||
|
||||
o --with-extra-lib=DIRECTORY that specifies the path where LyX will
|
||||
find extra libraries (like Qt) it needs. Defaults to NONE
|
||||
|
@ -162,7 +162,7 @@ Build options
|
||||
-- LYX_ENABLE_KEYTESTS = ON : Enable for keytests
|
||||
-- LYX_ASAN = OFF : Use address sanitizer
|
||||
-- LYX_USE_FILEDIALOG = NATI : Use native or QT file dialog (QT NATIVE)
|
||||
-- LYX_USE_QT = QT5 : Use Qt version as frontend (AUTO QT4 QT5)
|
||||
-- LYX_USE_QT = QT6 : Use Qt version as frontend (AUTO QT5 QT6)
|
||||
-- LYX_DISABLE_CALLSTACK_PRI= OFF : do not print a callstack when crashing
|
||||
-- LYX_EXTERNAL_Z = ON : OFF := Build 3rdparty lib zlib
|
||||
-- LYX_EXTERNAL_ICONV = ON : OFF := Build 3rdparty lib iconvlib
|
||||
@ -262,7 +262,7 @@ Ubuntu/Kubuntu
|
||||
You need additionally these packages:
|
||||
* g++
|
||||
* cmake
|
||||
* qt4-dev-tools + qt4-qmake or qttools5-dev-tools + qt5-qmake
|
||||
* qttools5-dev-tools + qt5-qmake or qt6-base-dev-tools + qt6-tools-dev
|
||||
|
||||
|
||||
|
||||
|
3
README
3
README
@ -91,8 +91,7 @@ What do I need to compile LyX from the source distribution?
|
||||
need at least gcc 4.9.
|
||||
|
||||
* The Qt library, at least version 5.2 (5.6 recommended). It is
|
||||
still possible to compile with Qt 4.8, but this is not
|
||||
recommended.
|
||||
also possible to compile with Qt 6.x.
|
||||
|
||||
Read the file "INSTALL" for more information on compiling.
|
||||
|
||||
|
12
TODO.killqt4
Normal file
12
TODO.killqt4
Normal file
@ -0,0 +1,12 @@
|
||||
Killing Qt4
|
||||
===========
|
||||
|
||||
Things left to do before release, obtained using:
|
||||
git grep -il 'qt *4'
|
||||
|
||||
* macOS (Stephan):
|
||||
- update INSTALL.cmake
|
||||
- update INSTALL.MacOSX
|
||||
|
||||
* Windows (Eugene?)
|
||||
- update development/cmake/modules/LyXPaths.cmake
|
@ -63,7 +63,7 @@ AC_MSG_RESULT([$withval])
|
||||
])
|
||||
|
||||
|
||||
dnl Check whether to configure for Qt4, Qt5, or Qt6. Default is Qt5.
|
||||
dnl Check whether to configure for Qt5, or Qt6. Default is Qt5.
|
||||
dnl
|
||||
AC_DEFUN([LYX_CHECK_QT6],[
|
||||
AC_MSG_CHECKING([whether Qt6 is requested])
|
||||
@ -74,18 +74,6 @@ AC_MSG_RESULT([$USE_QT6])
|
||||
AC_SUBST([USE_QT6])
|
||||
])
|
||||
dnl
|
||||
AC_DEFUN([LYX_CHECK_QT5],[
|
||||
AC_MSG_CHECKING([whether Qt5 is disabled])
|
||||
AC_ARG_ENABLE([qt5],
|
||||
[AS_HELP_STRING([--disable-qt5],[do not use Qt5 for building])],
|
||||
USE_QT5=$enableval, USE_QT5=yes)
|
||||
if test x$USE_QT5 != xno ; then
|
||||
AC_MSG_RESULT([no])
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
AC_SUBST([USE_QT5])
|
||||
])
|
||||
|
||||
|
||||
dnl Usage: LYX_WARNING(message) Displays the warning "message" and sets the
|
||||
@ -381,9 +369,8 @@ if test x$GXX = xyes; then
|
||||
AM_CXXFLAGS="$AM_CXXFLAGS -fno-omit-frame-pointer"
|
||||
fi
|
||||
|
||||
if test x$USE_QT5 = xyes -o x$USE_QT6 = xyes; then
|
||||
AS_CASE([$host], [*mingw*|*cygwin*], [], [AM_CXXFLAGS="-fPIC $AM_CXXFLAGS"])
|
||||
fi
|
||||
AS_CASE([$host], [*mingw*|*cygwin*], [], [AM_CXXFLAGS="-fPIC $AM_CXXFLAGS"])
|
||||
|
||||
dnl Warnings are for preprocessor too
|
||||
if test x$enable_warnings = xyes ; then
|
||||
AM_CPPFLAGS="$AM_CPPFLAGS -Wall -Wextra"
|
||||
@ -417,10 +404,6 @@ if test x$GXX = xyes; then
|
||||
clang-3.0*|clang-3.1*|clang-3.2*|clang-3.3*)
|
||||
dnl boost contains pragmas that are annoying on older clang versions
|
||||
AM_CPPFLAGS="-Wno-unknown-pragmas $AM_CPPFLAGS";;
|
||||
clang*)
|
||||
dnl the more recent versions support the deprecated-register warning,
|
||||
dnl which is very annoying with Qt4.x right now.
|
||||
AM_CXXFLAGS="$AM_CXXFLAGS -Wno-deprecated-register";;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
|
82
config/qt.m4
82
config/qt.m4
@ -29,7 +29,7 @@ AC_DEFUN([QT_CHECK_COMPILE],
|
||||
if test $USE_QT6 = "yes" ; then
|
||||
qt_corelibs="-lQt6Core -lQt6Core5Compat"
|
||||
qt_guilibs="-lQt6Core -lQt6Core5Compat -lQt6Concurrent -lQt6Gui -lQt6Svg -lQt6Widgets"
|
||||
elif test $USE_QT5 = "yes" ; then
|
||||
else
|
||||
qt_corelibs="-lQt5Core"
|
||||
qt_guilibs="-lQt5Core -lQt5Concurrent -lQt5Gui -lQt5Svg -lQt5Widgets"
|
||||
fi
|
||||
@ -58,8 +58,6 @@ AC_DEFUN([QT_CHECK_COMPILE],
|
||||
if test -z "$qt_cv_libname"; then
|
||||
if test x$USE_QT6 = xyes ; then
|
||||
AC_MSG_RESULT([failed, retrying with Qt5])
|
||||
elif test x$USE_QT5 = xyes ; then
|
||||
AC_MSG_RESULT([failed, retrying with Qt4])
|
||||
else
|
||||
AC_MSG_RESULT([failed])
|
||||
AC_MSG_ERROR([cannot compile a simple Qt executable. Check you have the right \$QTDIR.])
|
||||
@ -73,11 +71,9 @@ AC_DEFUN([QT_CHECK_COMPILE],
|
||||
AC_DEFUN([QT_FIND_TOOL],
|
||||
[
|
||||
$1=
|
||||
qt_major=4
|
||||
qt_major=5
|
||||
if test "x$USE_QT6" != "xno" ; then
|
||||
qt_major=6
|
||||
elif test "x$USE_QT5" != "xno" ; then
|
||||
qt_major=5
|
||||
fi
|
||||
qt_ext="qt$qt_major"
|
||||
|
||||
@ -132,7 +128,7 @@ dnl start here
|
||||
AC_DEFUN([QT_DO_IT_ALL],
|
||||
[
|
||||
dnl this variable is precious
|
||||
AC_ARG_VAR(QTDIR, [the place where the Qt files are, e.g. /usr/lib/qt4])
|
||||
AC_ARG_VAR(QTDIR, [the place where the Qt files are, e.g. /usr/lib/qt5])
|
||||
|
||||
AC_ARG_WITH(qt-dir, [AS_HELP_STRING([--with-qt-dir], [where the root of Qt is installed])],
|
||||
[ qt_cv_dir=`eval echo "$withval"/` ])
|
||||
@ -188,26 +184,10 @@ AC_DEFUN([QT_DO_IT_ALL],
|
||||
fi
|
||||
|
||||
if test -z "$QT_LIB"; then
|
||||
dnl Try again with Qt5 and then Qt4 if configuring for Qt6/5 fails
|
||||
dnl Try again with Qt5 and if configuring for Qt6/5 fails
|
||||
if test x$USE_QT6 = xyes ; then
|
||||
USE_QT6=no
|
||||
USE_QT5=yes
|
||||
AC_SUBST([USE_QT6])
|
||||
AC_SUBST([USE_QT5])
|
||||
if test -n "$PKG_CONFIG" ; then
|
||||
QT_DO_PKG_CONFIG
|
||||
fi
|
||||
if test "$pkg_failed" != "no" ; then
|
||||
QT_DO_MANUAL_CONFIG
|
||||
fi
|
||||
if test -z "$QT_LIB"; then
|
||||
AC_MSG_ERROR([cannot find qt libraries.])
|
||||
fi
|
||||
elif test x$USE_QT5 = xyes ; then
|
||||
USE_QT6=no
|
||||
USE_QT5=no
|
||||
AC_SUBST([USE_QT6])
|
||||
AC_SUBST([USE_QT5])
|
||||
if test -n "$PKG_CONFIG" ; then
|
||||
QT_DO_PKG_CONFIG
|
||||
fi
|
||||
@ -246,25 +226,13 @@ AC_DEFUN([QT_DO_IT_ALL],
|
||||
[AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(QPA_XCB, 1, [Define if Qt uses the X Window System])],
|
||||
[AC_MSG_RESULT(no)])
|
||||
elif test x$USE_QT5 = xyes ; then
|
||||
else
|
||||
AC_EGREP_CPP(xcb,
|
||||
[#include <$lyx_qt5_config>
|
||||
QT_QPA_DEFAULT_PLATFORM_NAME],
|
||||
[AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(QPA_XCB, 1, [Define if Qt uses the X Window System])],
|
||||
[AC_MSG_RESULT(no)])
|
||||
else
|
||||
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
|
||||
[#include <qglobal.h>],
|
||||
[#ifndef Q_WS_X11],
|
||||
[#error Fail],
|
||||
[#endif]])],
|
||||
qt_use_x11=yes,
|
||||
qt_use_x11=no)
|
||||
AC_MSG_RESULT($qt_use_x11)
|
||||
if test "x$qt_use_x11" = "xyes"; then
|
||||
QT_LIB="$QT_LIB -lX11"
|
||||
fi
|
||||
fi
|
||||
CPPFLAGS=$save_CPPFLAGS
|
||||
|
||||
@ -287,28 +255,24 @@ AC_DEFUN([QT_DO_PKG_CONFIG],
|
||||
PKG_CONFIG_PATH=$qt_cv_dir/lib:$qt_cv_dir/lib/pkgconfig:$PKG_CONFIG_PATH
|
||||
export PKG_CONFIG_PATH
|
||||
fi
|
||||
qt_corelibs="QtCore"
|
||||
qt_guilibs="QtCore QtGui QtSvg"
|
||||
if test "x$USE_QT5" != "xno" ; then
|
||||
qt_corelibs="Qt5Core"
|
||||
qt_guilibs="Qt5Core Qt5Concurrent Qt5Gui Qt5Svg Qt5Widgets"
|
||||
lyx_use_x11extras=false
|
||||
PKG_CHECK_EXISTS(Qt5X11Extras, [lyx_use_x11extras=true], [])
|
||||
if $lyx_use_x11extras; then
|
||||
qt_guilibs="$qt_guilibs Qt5X11Extras xcb"
|
||||
AC_DEFINE(HAVE_QT5_X11_EXTRAS, 1,
|
||||
[Define if you have the Qt5X11Extras module])
|
||||
fi
|
||||
lyx_use_winextras=false
|
||||
PKG_CHECK_EXISTS(Qt5WinExtras, [lyx_use_winextras=true], [])
|
||||
if $lyx_use_winextras; then
|
||||
qt_guilibs="$qt_guilibs Qt5WinExtras"
|
||||
fi
|
||||
lyx_use_macextras=false
|
||||
PKG_CHECK_EXISTS(Qt5MacExtras, [lyx_use_macextras=true], [])
|
||||
if $lyx_use_macextras; then
|
||||
qt_guilibs="$qt_guilibs Qt5MacExtras"
|
||||
fi
|
||||
qt_corelibs="Qt5Core"
|
||||
qt_guilibs="Qt5Core Qt5Concurrent Qt5Gui Qt5Svg Qt5Widgets"
|
||||
lyx_use_x11extras=false
|
||||
PKG_CHECK_EXISTS(Qt5X11Extras, [lyx_use_x11extras=true], [])
|
||||
if $lyx_use_x11extras; then
|
||||
qt_guilibs="$qt_guilibs Qt5X11Extras xcb"
|
||||
AC_DEFINE(HAVE_QT5_X11_EXTRAS, 1,
|
||||
[Define if you have the Qt5X11Extras module])
|
||||
fi
|
||||
lyx_use_winextras=false
|
||||
PKG_CHECK_EXISTS(Qt5WinExtras, [lyx_use_winextras=true], [])
|
||||
if $lyx_use_winextras; then
|
||||
qt_guilibs="$qt_guilibs Qt5WinExtras"
|
||||
fi
|
||||
lyx_use_macextras=false
|
||||
PKG_CHECK_EXISTS(Qt5MacExtras, [lyx_use_macextras=true], [])
|
||||
if $lyx_use_macextras; then
|
||||
qt_guilibs="$qt_guilibs Qt5MacExtras"
|
||||
fi
|
||||
PKG_CHECK_MODULES(QT_CORE, $qt_corelibs,,[:])
|
||||
if test "$pkg_failed" = "no" ; then
|
||||
|
@ -14,9 +14,6 @@ AC_CONFIG_AUX_DIR(config)
|
||||
LYX_CHECK_VERSION
|
||||
LYX_VERSION_SUFFIX
|
||||
LYX_CHECK_QT6
|
||||
if test x$USE_QT6 = xno ; then
|
||||
LYX_CHECK_QT5
|
||||
fi
|
||||
# Check how the files should be packaged
|
||||
AC_CANONICAL_TARGET
|
||||
LYX_USE_PACKAGING
|
||||
|
@ -299,7 +299,7 @@ while [ $# -gt 0 ]; do
|
||||
done
|
||||
|
||||
if [ "${configure_qt_frameworks}" != "yes" ]; then
|
||||
QtInstallDir=${QTDIR:-"/opt/qt4"}
|
||||
QtInstallDir=${QTDIR}
|
||||
fi
|
||||
|
||||
ARCH_LIST=${ARCH_LIST:-"ppc i386"}
|
||||
|
@ -176,7 +176,6 @@ cmake/modules/FindLyXGettext.cmake \
|
||||
cmake/modules/FindMagic.cmake \
|
||||
cmake/modules/FindMYTHESLIB.cmake \
|
||||
cmake/modules/FindOpenSSL.cmake \
|
||||
cmake/modules/FindQt4.cmake \
|
||||
cmake/modules/FindZLIB.cmake \
|
||||
cmake/modules/LyXDestinations.cmake \
|
||||
cmake/modules/LyXMacros.cmake \
|
||||
|
@ -611,7 +611,7 @@ if xvkbd_exe is None:
|
||||
|
||||
qt_frontend = os.environ.get('QT_FRONTEND')
|
||||
if qt_frontend is None:
|
||||
qt_frontend = 'QT4'
|
||||
qt_frontend = 'QT5'
|
||||
if qt_frontend == 'QT5':
|
||||
# Some tests sometimes failed with value 0.01 on Qt5.8
|
||||
controlkey_delay = 0.4
|
||||
|
@ -348,19 +348,6 @@ if (LYX_USE_QT MATCHES "QT5|QT6")
|
||||
set(CMAKE_REQUIRED_INCLUDES ${${QtVal}WinExtras_INCLUDE_DIRS})
|
||||
set(CMAKE_REQUIRED_FLAGS ${${QtVal}WinExtras_EXECUTABLE_COMPILE_FLAGS})
|
||||
endif()
|
||||
elseif(LYX_USE_QT MATCHES "QT4")
|
||||
set(CMAKE_REQUIRED_LIBRARIES ${QT_QTGUI_LIBRARY})
|
||||
set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES})
|
||||
check_cxx_source_compiles(
|
||||
"
|
||||
#include <QtGui/QX11Info>
|
||||
int main()
|
||||
{
|
||||
QX11Info *qxi = new QX11Info;
|
||||
qxi->~QX11Info();
|
||||
}
|
||||
"
|
||||
QT_USES_X11)
|
||||
else()
|
||||
message(FATAL_ERROR "Check for QT_USES_X11: Not handled LYX_USE_QT (= ${LYX_USE_QT})")
|
||||
endif()
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -62,10 +62,6 @@ endmacro(LYX_ADD_UI_FILES)
|
||||
|
||||
|
||||
macro(LYX_AUTOMOC)
|
||||
if (QT4_GET_MOC_INC_DIRS)
|
||||
QT4_GET_MOC_INC_DIRS(_moc_INCS)
|
||||
endif()
|
||||
|
||||
set(_matching_FILES)
|
||||
foreach (_current_FILE ${ARGN})
|
||||
|
||||
@ -111,7 +107,7 @@ macro(LYX_AUTOMOC)
|
||||
#set(_moc ${_abs_PATH}/${_current_MOC})
|
||||
add_custom_command(OUTPUT ${_moc}
|
||||
COMMAND ${QT_MOC_EXECUTABLE}
|
||||
ARGS "-DQT_VERSION=${QT4_VERSION}" ${_def} ${_moc_INCS} ${_header} -o ${_moc}
|
||||
ARGS "-DQT_VERSION=${QTx_VERSION}" ${_def} ${_moc_INCS} ${_header} -o ${_moc}
|
||||
MAIN_DEPENDENCY ${_header})
|
||||
macro_add_file_dependencies(${_abs_FILE} ${_moc})
|
||||
SET_SOURCE_FILES_PROPERTIES(${_moc} GENERATED)
|
||||
|
@ -26,63 +26,59 @@
|
||||
#
|
||||
|
||||
if(NOT WIN32)
|
||||
set(_prog_path ~/bin)
|
||||
set(_prog_path ~/bin)
|
||||
else()
|
||||
if(WINDEPS)
|
||||
FIND_PROGRAM(LYX_QMAKE NAMES qmake)
|
||||
if(NOT LYX_QMAKE)
|
||||
message("------ qmake not found. Add YOUR_PATH\\lyx-windows-deps-msvc-qt4\\qt-4\\bin")
|
||||
message("------ to PATH: set PATH=%PATH%;YOUR_PATH\\lyx-windows-deps-msvc-qt4\\qt-4\\bin")
|
||||
message(FATAL_ERROR "Exit.")
|
||||
else()
|
||||
GET_FILENAME_COMPONENT(LYX_QMAKE_PATH ${LYX_QMAKE} PATH)
|
||||
set(WINDEPSDIR "${LYX_QMAKE_PATH}/../..")
|
||||
endif()
|
||||
|
||||
if(WINDEPS)
|
||||
FIND_PROGRAM(LYX_QMAKE NAMES qmake)
|
||||
if(NOT LYX_QMAKE)
|
||||
message("------ qmake not found. Add YOUR_PATH\\lyx-windows-deps-msvc-qt4\\qt-4\\bin")
|
||||
message("------ to PATH: set PATH=%PATH%;YOUR_PATH\\lyx-windows-deps-msvc-qt4\\qt-4\\bin")
|
||||
message(FATAL_ERROR "Exit.")
|
||||
else()
|
||||
GET_FILENAME_COMPONENT(LYX_QMAKE_PATH ${LYX_QMAKE} PATH)
|
||||
set(WINDEPSDIR "${LYX_QMAKE_PATH}/../..")
|
||||
set(GNUWIN32_DIR ${WINDEPSDIR})
|
||||
|
||||
# don't stop in FindQt4.cmake because qmake will
|
||||
# report wrong paths
|
||||
set(QT_HEADERS_DIR "${WINDEPSDIR}/qt-4/include" CACHE STRING "Qt4 headers directory" FORCE)
|
||||
set(QT_LIBRARY_DIR "${WINDEPSDIR}/qt-4/lib" CACHE STRING "Qt4 libraries directory" FORCE)
|
||||
set(QT_BINARY_DIR "${WINDEPSDIR}/qt-4/bin" CACHE STRING "Qt4 binaries directory" FORCE)
|
||||
set(QT_MKSPECS_DIR "${WINDEPSDIR}/qt-4/mkspecs" CACHE STRING "Qt4 mkspecs directory" FORCE)
|
||||
set(QT_PLUGINS_DIR "${WINDEPSDIR}/qt-4/plugins" CACHE STRING "Qt4 plugins directory" FORCE)
|
||||
set(QT_MOC_EXECUTABLE "${WINDEPSDIR}/qt-4/bin/moc.exe" CACHE STRING "Qt4 moc executable" FORCE)
|
||||
set(QT_UIC_EXECUTABLE "${WINDEPSDIR}/qt-4/bin/uic.exe" CACHE STRING "Qt4 uic executable" FORCE)
|
||||
set(QT_RCC_EXECUTABLE "${WINDEPSDIR}/qt-4/bin/rcc.exe" CACHE STRING "Qt4 rcc executable" FORCE)
|
||||
endif()
|
||||
|
||||
find_package(GNUWIN32 REQUIRED)
|
||||
if(LYX_3RDPARTY_BUILD)
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _prog_path)
|
||||
else()
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _prog_path)
|
||||
|
||||
set(_zlib_path ${_prog_path}/zlib)
|
||||
set(_iconv_path ${_prog_path}/iconv)
|
||||
|
||||
set(_gnuwin32_dir ${GNUWIN32_DIR})
|
||||
|
||||
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH}
|
||||
${_gnuwin32_dir}/include
|
||||
${_zlib_path}/include
|
||||
${_iconv_path}/include)
|
||||
|
||||
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
|
||||
${_gnuwin32_dir}/lib
|
||||
${_zlib_path}/lib
|
||||
${_iconv_path}/lib)
|
||||
|
||||
#chek_include_files path
|
||||
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${_gnuwin32_dir}/include)
|
||||
endif()
|
||||
|
||||
set(GNUWIN32_DIR ${WINDEPSDIR})
|
||||
|
||||
# don't stop in FindQt4.cmake because qmake will
|
||||
# report wrong paths
|
||||
set(QT_HEADERS_DIR "${WINDEPSDIR}/qt-4/include" CACHE STRING "Qt4 headers directory" FORCE)
|
||||
set(QT_LIBRARY_DIR "${WINDEPSDIR}/qt-4/lib" CACHE STRING "Qt4 libraries directory" FORCE)
|
||||
set(QT_BINARY_DIR "${WINDEPSDIR}/qt-4/bin" CACHE STRING "Qt4 binaries directory" FORCE)
|
||||
set(QT_MKSPECS_DIR "${WINDEPSDIR}/qt-4/mkspecs" CACHE STRING "Qt4 mkspecs directory" FORCE)
|
||||
set(QT_PLUGINS_DIR "${WINDEPSDIR}/qt-4/plugins" CACHE STRING "Qt4 plugins directory" FORCE)
|
||||
set(QT_MOC_EXECUTABLE "${WINDEPSDIR}/qt-4/bin/moc.exe" CACHE STRING "Qt4 moc executable" FORCE)
|
||||
set(QT_UIC_EXECUTABLE "${WINDEPSDIR}/qt-4/bin/uic.exe" CACHE STRING "Qt4 uic executable" FORCE)
|
||||
set(QT_RCC_EXECUTABLE "${WINDEPSDIR}/qt-4/bin/rcc.exe" CACHE STRING "Qt4 rcc executable" FORCE)
|
||||
endif()
|
||||
|
||||
find_package(GNUWIN32 REQUIRED)
|
||||
if(LYX_3RDPARTY_BUILD)
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _prog_path)
|
||||
else()
|
||||
|
||||
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _prog_path)
|
||||
|
||||
set(_zlib_path ${_prog_path}/zlib)
|
||||
set(_iconv_path ${_prog_path}/iconv)
|
||||
|
||||
set(_gnuwin32_dir ${GNUWIN32_DIR})
|
||||
|
||||
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH}
|
||||
${_gnuwin32_dir}/include
|
||||
${_zlib_path}/include
|
||||
${_iconv_path}/include)
|
||||
|
||||
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH}
|
||||
${_gnuwin32_dir}/lib
|
||||
${_zlib_path}/lib
|
||||
${_iconv_path}/lib)
|
||||
|
||||
#chek_include_files path
|
||||
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${_gnuwin32_dir}/include)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
if(WIN32)
|
||||
set(locale_dir Resources/locale)
|
||||
else()
|
||||
|
@ -36,10 +36,6 @@ if(LYX_BUNDLE)
|
||||
endif()
|
||||
install_qt_plugin("Qt5::QCocoaIntegrationPlugin")
|
||||
endif()
|
||||
else()
|
||||
# With QT4, just copy all the plugins
|
||||
file(GLOB QT_PLUGIN_DIRECTORIES "${QT_PLUGINS_DIR}/*")
|
||||
install(DIRECTORY ${QT_PLUGIN_DIRECTORIES} DESTINATION "${qtplugin_dest_dir}/plugins/" COMPONENT Runtime)
|
||||
endif()
|
||||
|
||||
# Install code does the following:
|
||||
|
@ -11,8 +11,8 @@
|
||||
* receives information back from LyX.
|
||||
*
|
||||
* Build instructions:
|
||||
* 1) Run moc or moc-qt4 on server_monitor.h to produce moc_server_monitor.cpp:
|
||||
* moc-qt4 server_monitor.h -o moc_server_monitor.cpp
|
||||
* 1) Run moc or moc-qt5 on server_monitor.h to produce moc_server_monitor.cpp:
|
||||
* moc server_monitor.h -o moc_server_monitor.cpp
|
||||
* 2) If the QtGui.pc file is not in the pkg-config search path, find the
|
||||
* directory where it is located (e.g., use the command `locate QtGui.pc')
|
||||
* and set the environment variable PKG_CONFIG_PATH to this directory.
|
||||
@ -22,7 +22,7 @@
|
||||
* If the command `pkg-config --modversion QtGui' does not complain and
|
||||
* prints the Qt version, you don't need to set PKG_CONFIG_PATH.
|
||||
* 3) Compile using the following command:
|
||||
* g++ server_monitor.cpp -o monitor -I. `pkg-config --cflags --libs QtGui`
|
||||
* g++ -fPIC server_monitor.cpp -o monitor -I. `pkg-config --cflags --libs Qt5Gui Qt5Widgets`
|
||||
*
|
||||
* Alternatively, you can create a Makefile with qmake and then build
|
||||
* the executable by running make (or nmake, if you use msvc):
|
||||
@ -41,9 +41,7 @@
|
||||
#include <QApplication>
|
||||
#include <QtGui>
|
||||
#include <QtDebug>
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QtWidgets>
|
||||
#endif
|
||||
|
||||
#include "server_monitor.h"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
CONFIG += console
|
||||
HEADERS += server_monitor.h
|
||||
SOURCES += server_monitor.cpp
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
QT += widgets
|
||||
|
@ -222,7 +222,8 @@
|
||||
!!Changes with respect to external programs and libraries in 2.4:
|
||||
|
||||
* The Qt5 libraries are now used by default. In order to link against
|
||||
Qt4 the configure option --disable-qt5 has to be used.
|
||||
Qt6 the configure option --enable-qt6 has to be used. Qt4 is not
|
||||
supported anymore.
|
||||
|
||||
* The dependency on pplatex/dvipost was dropped.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#LyX 2.4 created this file. For more info see https://www.lyx.org/
|
||||
\lyxformat 598
|
||||
\lyxformat 610
|
||||
\begin_document
|
||||
\begin_header
|
||||
\save_transient_properties true
|
||||
@ -83,6 +83,7 @@
|
||||
\html_css_as_file 0
|
||||
\html_be_strict false
|
||||
\docbook_table_output 0
|
||||
\docbook_mathml_prefix 1
|
||||
\end_header
|
||||
|
||||
\begin_body
|
||||
@ -562,8 +563,9 @@ This file contains each symbol of the font stmary10.ttf that is made accessible
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
The critical codepoints (9,10,12,13) for qt4/qt5 transition (compare mathed
|
||||
and instant preview result):
|
||||
The codepoints (9,10,12,13) are not displayed correctly by Qt.
|
||||
We work around this by duplicating the glyphs on our TeX fonts.
|
||||
(compare mathed and instant preview result):
|
||||
\end_layout
|
||||
|
||||
\begin_layout Standard
|
||||
|
@ -871,15 +871,13 @@ Ydown stmry 5 0 mathbin x x stmaryrd
|
||||
Yleft stmry 6 0 mathbin x x stmaryrd
|
||||
Yright stmry 7 0 mathbin x x stmaryrd
|
||||
varcurlyvee stmry 8 0 mathbin x x stmaryrd
|
||||
# qt4 does not display characters at the \t position (0x09)
|
||||
# therefore our .ttf font contains a copy at 170 (0xaa)
|
||||
#varcurlywedge stmry 9 0 mathbin x x stmaryrd
|
||||
#10,12,13 codepoints broken in qt5
|
||||
# qt does not display characters at codepoints 9, 10,12,13
|
||||
# therefore our copies of the TeX fonts have duplicate glyphs after 170
|
||||
varcurlywedge stmry 170 0 mathbin x x stmaryrd
|
||||
minuso stmry 171 0 mathbin x x stmaryrd
|
||||
baro stmry 11 0 mathbin x x stmaryrd
|
||||
sslash stmry 172 0 mathbin x x stmaryrd
|
||||
#for whatever reason qt5 refuses to display anything at position 173
|
||||
#for whatever reason qt refuses to display anything at position 173
|
||||
bbslash stmry 174 0 mathbin x x stmaryrd
|
||||
moo stmry 14 0 mathbin x x stmaryrd
|
||||
varotimes stmry 15 0 mathbin x x stmaryrd
|
||||
|
@ -13,7 +13,6 @@ endif()
|
||||
file(GLOB moc_files ${TOP_SRC_DIR}/src/frontends/qt/${LYX_MOC_FILES})
|
||||
|
||||
list(REMOVE_ITEM frontends_qt_sources ${moc_files} .)
|
||||
list(REMOVE_ITEM frontends_qt_sources ${TOP_SRC_DIR}/src/frontends/qt/liblyxqt4.cpp)
|
||||
|
||||
file(GLOB frontends_qt_headers ${TOP_SRC_DIR}/src/frontends/qt/${LYX_HPP_FILES})
|
||||
file(GLOB frontend_qt_UI ${TOP_SRC_DIR}/src/frontends/qt/ui/*.ui)
|
||||
|
@ -19,8 +19,6 @@
|
||||
#include "GuiApplication.h"
|
||||
#endif
|
||||
|
||||
#if QT_VERSION >= 0x040600
|
||||
|
||||
#include <QEvent>
|
||||
#include <QDebug>
|
||||
#include <QString>
|
||||
@ -33,9 +31,7 @@
|
||||
#include <QPainter>
|
||||
#include <QStyle>
|
||||
#include <QPaintEvent>
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QWindow>
|
||||
#endif
|
||||
|
||||
enum { margin = 6 };
|
||||
|
||||
@ -120,7 +116,7 @@ FancyLineEdit::FancyLineEdit(QWidget *parent) :
|
||||
{
|
||||
ensurePolished();
|
||||
updateMargins();
|
||||
|
||||
|
||||
connect(this, SIGNAL(textChanged(QString)),
|
||||
this, SLOT(checkButtons(QString)));
|
||||
connect(m_d->m_iconbutton[Left], SIGNAL(clicked()),
|
||||
@ -198,10 +194,8 @@ void FancyLineEdit::updateMargins()
|
||||
Side realRight = (leftToRight ? Right : Left);
|
||||
|
||||
qreal dpr = 1.0;
|
||||
#if QT_VERSION >= 0x050000
|
||||
// Consider device/pixel ratio (HiDPI)
|
||||
dpr = devicePixelRatio();
|
||||
#endif
|
||||
int leftMargin = (m_d->m_iconbutton[realLeft]->pixmap().width() / dpr ) + 8;
|
||||
int rightMargin = (m_d->m_iconbutton[realRight]->pixmap().width() / dpr) + 8;
|
||||
// Note KDE does not reserve space for the highlight color
|
||||
@ -224,7 +218,7 @@ void FancyLineEdit::updateButtonPositions()
|
||||
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(
|
||||
@ -342,12 +336,9 @@ IconButton::IconButton(QWidget *parent)
|
||||
|
||||
void IconButton::paintEvent(QPaintEvent *)
|
||||
{
|
||||
qreal dpr = 1.0;
|
||||
#if QT_VERSION >= 0x050000
|
||||
// Consider device/pixel ratio (HiDPI)
|
||||
QWindow * window = this->window()->windowHandle();
|
||||
dpr = window->devicePixelRatio();
|
||||
#endif
|
||||
qreal const dpr = window->devicePixelRatio();
|
||||
QRect pixmapRect(QPoint(), m_pixmap.size() / dpr);
|
||||
pixmapRect.moveCenter(rect().center());
|
||||
QPixmap pm = m_pixmap;
|
||||
@ -381,6 +372,4 @@ void IconButton::animateShow(bool visible)
|
||||
|
||||
} // namespace lyx
|
||||
|
||||
#endif // QT_VERSION >= 0x040600
|
||||
|
||||
#include "moc_FancyLineEdit.cpp"
|
||||
|
@ -122,26 +122,16 @@
|
||||
#include <QThreadPool>
|
||||
#include <QWidget>
|
||||
|
||||
#ifdef Q_WS_X11
|
||||
#include <X11/Xatom.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <QX11Info>
|
||||
#undef CursorShape
|
||||
#undef None
|
||||
#elif defined(QPA_XCB)
|
||||
#if defined(QPA_XCB)
|
||||
#include <xcb/xcb.h>
|
||||
#ifdef HAVE_QT5_X11_EXTRAS
|
||||
#include <QtX11Extras/QX11Info>
|
||||
#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>
|
||||
@ -177,7 +167,7 @@ namespace lyx {
|
||||
|
||||
frontend::Application * createApplication(int & argc, char * argv[])
|
||||
{
|
||||
#if !defined(Q_WS_X11) && !defined(QPA_XCB)
|
||||
#if !defined(QPA_XCB)
|
||||
// prune -geometry argument(s) by shifting
|
||||
// the following ones 2 places down.
|
||||
for (int i = 0 ; i < argc ; ++i) {
|
||||
@ -719,7 +709,6 @@ QPixmap getPixmap(QString const & path, QString const & name, QString const & ex
|
||||
|
||||
QIcon getIcon(FuncRequest const & f, bool unknown, bool rtl)
|
||||
{
|
||||
#if (QT_VERSION >= 0x040600)
|
||||
if (lyxrc.use_system_theme_icons) {
|
||||
// use the icons from system theme that are available
|
||||
QString action = toqstr(lyxaction.getActionName(f.action()));
|
||||
@ -732,7 +721,6 @@ QIcon getIcon(FuncRequest const & f, bool unknown, bool rtl)
|
||||
return thmicn;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
IconInfo icondata = iconInfo(f, unknown, rtl);
|
||||
if (icondata.filepath.isEmpty())
|
||||
@ -784,11 +772,7 @@ public:
|
||||
|
||||
QString translate(const char * /* context */,
|
||||
const char *sourceText,
|
||||
#if QT_VERSION >= 0x050000
|
||||
const char * /* disambiguation */ = nullptr, int /* n */ = -1) const override
|
||||
#else
|
||||
const char * /*comment*/ = 0) const override
|
||||
#endif
|
||||
{
|
||||
// Here we declare the strings that need to be translated from Qt own GUI
|
||||
// This is needed to include these strings to po files
|
||||
@ -879,7 +863,7 @@ public:
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Windows specific stuff goes here...
|
||||
|
||||
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400)
|
||||
#if (QT_VERSION >= 0x050400)
|
||||
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
|
||||
// QWindowsMimeMetafile can only be compiled on Windows.
|
||||
|
||||
@ -1045,7 +1029,7 @@ struct GuiApplication::Private
|
||||
, last_state_(Qt::ApplicationInactive)
|
||||
#endif
|
||||
{
|
||||
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400)
|
||||
#if (QT_VERSION >= 0x050400)
|
||||
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
|
||||
/// WMF Mime handler for Windows clipboard.
|
||||
wmf_mime_ = new QWindowsMimeMetafile;
|
||||
@ -1134,7 +1118,7 @@ struct GuiApplication::Private
|
||||
QMacPasteboardMimeGraphics mac_pasteboard_mime_;
|
||||
#endif
|
||||
|
||||
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400)
|
||||
#if (QT_VERSION >= 0x050400)
|
||||
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
|
||||
/// WMF Mime handler for Windows clipboard.
|
||||
QWindowsMimeMetafile * wmf_mime_;
|
||||
@ -1213,7 +1197,7 @@ GuiApplication::GuiApplication(int & argc, char ** argv)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(Q_WS_X11) || defined(QPA_XCB)
|
||||
#if defined(QPA_XCB)
|
||||
// doubleClickInterval() is 400 ms on X11 which is just too long.
|
||||
// On Windows and Mac OS X, the operating system's value is used.
|
||||
// On Microsoft Windows, calling this function sets the double
|
||||
@ -1239,11 +1223,8 @@ GuiApplication::GuiApplication(int & argc, char ** argv)
|
||||
if (lyxrc.typewriter_font_name.empty())
|
||||
lyxrc.typewriter_font_name = fromqstr(typewriterFontName());
|
||||
|
||||
#if (QT_VERSION >= 0x050000)
|
||||
// Qt4 does this in event(), see below.
|
||||
// Track change of keyboard
|
||||
connect(inputMethod(), SIGNAL(localeChanged()), this, SLOT(onLocaleChanged()));
|
||||
#endif
|
||||
|
||||
d->general_timer_.setInterval(500);
|
||||
connect(&d->general_timer_, SIGNAL(timeout()),
|
||||
@ -1266,36 +1247,9 @@ GuiApplication * theGuiApp()
|
||||
}
|
||||
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
// Emulate platformName() for Qt4
|
||||
|
||||
// FIXME: when ditching this method, remove all tests
|
||||
// platformName() == "qt4x11"
|
||||
// in the code
|
||||
QString GuiApplication::platformName() const
|
||||
{
|
||||
# if defined(Q_WS_X11)
|
||||
// Note that this one does not really exist
|
||||
return "qt4x11";
|
||||
# elif defined(Q_OS_MAC)
|
||||
return "cocoa";
|
||||
# elif defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
|
||||
return "windows";
|
||||
# else
|
||||
LYXERR0("Unknown platform!");
|
||||
return "unknown";
|
||||
# endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
double GuiApplication::pixelRatio() const
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
return qt_scale_factor * devicePixelRatio();
|
||||
#else
|
||||
return 1.0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -2363,11 +2317,7 @@ docstring GuiApplication::viewStatusMessage()
|
||||
|
||||
string GuiApplication::inputLanguageCode() const
|
||||
{
|
||||
#if (QT_VERSION < 0x050000)
|
||||
QLocale loc = keyboardInputLocale();
|
||||
#else
|
||||
QLocale loc = inputMethod()->locale();
|
||||
#endif
|
||||
//LYXERR0("input lang = " << fromqstr(loc.name()));
|
||||
return loc.name() == "C" ? "en_US" : fromqstr(loc.name());
|
||||
}
|
||||
@ -2862,12 +2812,10 @@ void GuiApplication::execBatchCommands()
|
||||
return;
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#if QT_VERSION > 0x040600
|
||||
setAttribute(Qt::AA_MacDontSwapCtrlAndMeta,lyxrc.mac_dontswap_ctrl_meta);
|
||||
#endif
|
||||
#if QT_VERSION >= 0x050000 && QT_VERSION < 0x060000
|
||||
# if QT_VERSION < 0x060000
|
||||
setAttribute(Qt::AA_UseHighDpiPixmaps,true);
|
||||
#endif
|
||||
# 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".
|
||||
@ -3033,15 +2981,6 @@ bool GuiApplication::event(QEvent * e)
|
||||
e->accept();
|
||||
return true;
|
||||
}
|
||||
#if (QT_VERSION < 0x050000)
|
||||
// Qt5 uses a signal for that, see above.
|
||||
case QEvent::KeyboardLayoutChange:
|
||||
//LYXERR0("keyboard change");
|
||||
if (currentView() && currentView()->currentBufferView())
|
||||
currentView()->currentBufferView()->cursor().setLanguageFromInput();
|
||||
e->accept();
|
||||
return true;
|
||||
#endif
|
||||
case QEvent::ApplicationPaletteChange: {
|
||||
// runtime switch from/to dark mode
|
||||
onPaletteChanged();
|
||||
@ -3551,56 +3490,7 @@ bool GuiApplication::longOperationStarted() {
|
||||
//
|
||||
// X11 specific stuff goes here...
|
||||
|
||||
#ifdef Q_WS_X11
|
||||
bool GuiApplication::x11EventFilter(XEvent * xev)
|
||||
{
|
||||
if (!current_view_)
|
||||
return false;
|
||||
|
||||
switch (xev->type) {
|
||||
case SelectionRequest: {
|
||||
if (xev->xselectionrequest.selection != XA_PRIMARY)
|
||||
break;
|
||||
LYXERR(Debug::SELECTION, "X requested selection.");
|
||||
BufferView * bv = current_view_->currentBufferView();
|
||||
if (bv) {
|
||||
docstring const sel = bv->requestSelection();
|
||||
if (!sel.empty()) {
|
||||
d->selection_.put(sel);
|
||||
// Refresh the selection request timestamp.
|
||||
// We have to do this by ourselves as Qt seems
|
||||
// not doing that, maybe because of our
|
||||
// "persistent selection" implementation
|
||||
// (see comments in GuiSelection.cpp).
|
||||
XSelectionEvent nev;
|
||||
nev.type = SelectionNotify;
|
||||
nev.display = xev->xselectionrequest.display;
|
||||
nev.requestor = xev->xselectionrequest.requestor;
|
||||
nev.selection = xev->xselectionrequest.selection;
|
||||
nev.target = xev->xselectionrequest.target;
|
||||
nev.property = 0L; // None
|
||||
nev.time = CurrentTime;
|
||||
XSendEvent(QX11Info::display(),
|
||||
nev.requestor, False, 0,
|
||||
reinterpret_cast<XEvent *>(&nev));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SelectionClear: {
|
||||
if (xev->xselectionclear.selection != XA_PRIMARY)
|
||||
break;
|
||||
LYXERR(Debug::SELECTION, "Lost selection.");
|
||||
BufferView * bv = current_view_->currentBufferView();
|
||||
if (bv)
|
||||
bv->clearSelection();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#elif defined(QPA_XCB)
|
||||
#if defined(QPA_XCB)
|
||||
bool GuiApplication::nativeEventFilter(const QByteArray & eventType,
|
||||
void * message, long *)
|
||||
{
|
||||
|
@ -117,9 +117,7 @@ public:
|
||||
//@{
|
||||
bool notify(QObject * receiver, QEvent * event) override;
|
||||
void commitData(QSessionManager & sm);
|
||||
#ifdef Q_WS_X11
|
||||
bool x11EventFilter(XEvent * ev) override;
|
||||
#elif defined(QPA_XCB)
|
||||
#if defined(QPA_XCB)
|
||||
virtual bool nativeEventFilter(const QByteArray & eventType, void * message,
|
||||
long * result) override;
|
||||
#endif
|
||||
@ -164,21 +162,12 @@ public:
|
||||
///
|
||||
GuiView & view(int id) const;
|
||||
|
||||
#if (QT_VERSION < 0x050000)
|
||||
/// Emulate platformName() for Qt4
|
||||
QString platformName() const;
|
||||
#endif
|
||||
|
||||
/// Current ratio between physical pixels and device-independent pixels
|
||||
double pixelRatio() const;
|
||||
|
||||
/// How to load image files
|
||||
support::search_mode imageSearchMode() const {
|
||||
#if QT_VERSION >= 0x050000
|
||||
return pixelRatio() > 1 ? support::check_hidpi : support::must_exist;
|
||||
#else
|
||||
return support::must_exist;
|
||||
#endif
|
||||
}
|
||||
|
||||
/// return true if the key is part of a shortcut
|
||||
|
@ -108,13 +108,8 @@ GuiBibtex::GuiBibtex(GuiView & lv)
|
||||
this, SLOT(filterChanged(QString)));
|
||||
connect(filter_, SIGNAL(returnPressed()),
|
||||
this, SLOT(filterPressed()));
|
||||
#if (QT_VERSION < 0x050000)
|
||||
connect(filter_, SIGNAL(downPressed()),
|
||||
availableLV, SLOT(setFocus()));
|
||||
#else
|
||||
connect(filter_, &FancyLineEdit::downPressed,
|
||||
availableLV, [this](){ focusAndHighlight(availableLV); });
|
||||
#endif
|
||||
|
||||
availableLV->setToolTip(formatToolTip(qt_("This list consists of all databases that are indexed by LaTeX and thus are found without a file path. "
|
||||
"This is usually everything in the bib/ subdirectory of LaTeX's texmf tree. "
|
||||
@ -129,11 +124,7 @@ GuiBibtex::GuiBibtex(GuiView & lv)
|
||||
bc().addReadOnly(bibtocCB);
|
||||
bc().addReadOnly(bibEncodingCO);
|
||||
|
||||
#if (QT_VERSION < 0x050000)
|
||||
selectedLV->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
|
||||
#else
|
||||
selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
#endif
|
||||
|
||||
// Always put the default encoding in the first position.
|
||||
bibEncodingCO->addItem(qt_("Document Encoding"), "default");
|
||||
|
@ -153,13 +153,8 @@ GuiCitation::GuiCitation(GuiView & lv)
|
||||
this, SLOT(filterChanged(QString)));
|
||||
connect(filter_, SIGNAL(returnPressed()),
|
||||
this, SLOT(filterPressed()));
|
||||
#if (QT_VERSION < 0x050000)
|
||||
connect(filter_, SIGNAL(downPressed()),
|
||||
availableLV, SLOT(setFocus()));
|
||||
#else
|
||||
connect(filter_, &FancyLineEdit::downPressed,
|
||||
availableLV, [this](){ focusAndHighlight(availableLV); });
|
||||
#endif
|
||||
connect(regexp_, SIGNAL(triggered()),
|
||||
this, SLOT(regexChanged()));
|
||||
connect(casesense_, SIGNAL(triggered()),
|
||||
@ -167,11 +162,7 @@ GuiCitation::GuiCitation(GuiView & lv)
|
||||
connect(instant_, SIGNAL(triggered(bool)),
|
||||
this, SLOT(instantChanged(bool)));
|
||||
|
||||
#if (QT_VERSION < 0x050000)
|
||||
selectedLV->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
|
||||
#else
|
||||
selectedLV->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
#endif
|
||||
|
||||
selectedLV->setToolTip(qt_("Ordered list of all cited references.\n"
|
||||
"You can reorder, add and remove references with the buttons on the left."));
|
||||
|
@ -455,8 +455,8 @@ void GuiCompleter::asyncUpdatePopup()
|
||||
// has a bad memory about it and we have to tell him again and again.
|
||||
QTreeView * listView = static_cast<QTreeView *>(popup());
|
||||
listView->header()->setStretchLastSection(false);
|
||||
setSectionResizeMode(listView->header(), 0, QHeaderView::Stretch);
|
||||
setSectionResizeMode(listView->header(), 1, QHeaderView::Fixed);
|
||||
listView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||
listView->header()->setSectionResizeMode(1, QHeaderView::Fixed);
|
||||
listView->header()->resizeSection(1, 22);
|
||||
|
||||
// show/update popup
|
||||
|
@ -909,13 +909,8 @@ GuiDocument::GuiDocument(GuiView & lv)
|
||||
masterChildModule->childrenTW->setColumnCount(2);
|
||||
masterChildModule->childrenTW->headerItem()->setText(0, qt_("Child Document"));
|
||||
masterChildModule->childrenTW->headerItem()->setText(1, qt_("Include to Output"));
|
||||
#if (QT_VERSION > 0x050000)
|
||||
masterChildModule->childrenTW->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
||||
masterChildModule->childrenTW->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
|
||||
#else
|
||||
masterChildModule->childrenTW->header()->setResizeMode(0, QHeaderView::ResizeToContents);
|
||||
masterChildModule->childrenTW->header()->setResizeMode(1, QHeaderView::ResizeToContents);
|
||||
#endif
|
||||
masterChildModule->childrenTW->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
||||
masterChildModule->childrenTW->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
|
||||
|
||||
// Formats
|
||||
outputModule = new UiWidget<Ui::OutputUi>(this);
|
||||
@ -1356,7 +1351,7 @@ GuiDocument::GuiDocument(GuiView & lv)
|
||||
numberingModule->tocTW->headerItem()->setText(0, qt_("Example"));
|
||||
numberingModule->tocTW->headerItem()->setText(1, qt_("Numbered"));
|
||||
numberingModule->tocTW->headerItem()->setText(2, qt_("Appears in TOC"));
|
||||
setSectionResizeMode(numberingModule->tocTW->header(), QHeaderView::ResizeToContents);
|
||||
numberingModule->tocTW->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
connect(numberingModule->linenoCB, SIGNAL(toggled(bool)),
|
||||
this, SLOT(linenoToggled(bool)));
|
||||
connect(numberingModule->linenoCB, SIGNAL(clicked()),
|
||||
@ -1446,7 +1441,7 @@ GuiDocument::GuiDocument(GuiView & lv)
|
||||
headers << qt_("Package") << qt_("Load automatically")
|
||||
<< qt_("Load always") << qt_("Do not load");
|
||||
mathsModule->packagesTW->setHorizontalHeaderLabels(headers);
|
||||
setSectionResizeMode(mathsModule->packagesTW->horizontalHeader(), QHeaderView::Stretch);
|
||||
mathsModule->packagesTW->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
map<string, string> const & packages = BufferParams::auto_packages();
|
||||
mathsModule->packagesTW->setRowCount(packages.size());
|
||||
int packnum = 0;
|
||||
@ -1649,10 +1644,10 @@ GuiDocument::GuiDocument(GuiView & lv)
|
||||
// Modules
|
||||
modulesModule = new UiWidget<Ui::ModulesUi>(this);
|
||||
modulesModule->availableLV->header()->setVisible(false);
|
||||
setSectionResizeMode(modulesModule->availableLV->header(), QHeaderView::ResizeToContents);
|
||||
modulesModule->availableLV->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
modulesModule->availableLV->header()->setStretchLastSection(false);
|
||||
modulesModule->selectedLV->header()->setVisible(false);
|
||||
setSectionResizeMode(modulesModule->selectedLV->header(), QHeaderView::ResizeToContents);
|
||||
modulesModule->selectedLV->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
modulesModule->selectedLV->header()->setStretchLastSection(false);
|
||||
selectionManager =
|
||||
new ModuleSelectionManager(this, modulesModule->availableLV,
|
||||
@ -1679,13 +1674,8 @@ GuiDocument::GuiDocument(GuiView & lv)
|
||||
this, SLOT(moduleFilterChanged(QString)));
|
||||
connect(filter_, SIGNAL(returnPressed()),
|
||||
this, SLOT(moduleFilterPressed()));
|
||||
#if (QT_VERSION < 0x050000)
|
||||
connect(filter_, SIGNAL(downPressed()),
|
||||
modulesModule->availableLV, SLOT(setFocus()));
|
||||
#else
|
||||
connect(filter_, &FancyLineEdit::downPressed,
|
||||
modulesModule->availableLV, [this](){ focusAndHighlight(modulesModule->availableLV); });
|
||||
#endif
|
||||
|
||||
|
||||
// PDF support
|
||||
@ -1793,11 +1783,6 @@ GuiDocument::GuiDocument(GuiView & lv)
|
||||
docPS->addPanel(outputModule, N_("Formats[[output]]"));
|
||||
docPS->addPanel(preambleModule, N_("LaTeX Preamble"));
|
||||
docPS->setCurrentPanel("Document Class");
|
||||
// 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
|
||||
}
|
||||
|
||||
|
||||
|
@ -66,27 +66,9 @@ namespace {
|
||||
struct SymbolFont {
|
||||
FontFamily lyx_family;
|
||||
QString family;
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
|
||||
QString xlfd;
|
||||
#endif
|
||||
};
|
||||
|
||||
SymbolFont symbol_fonts[] = {
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
|
||||
{ SYMBOL_FAMILY,"symbol", "-*-symbol-*-*-*-*-*-*-*-*-*-*-adobe-fontspecific"},
|
||||
{ CMR_FAMILY, "cmr10", "-*-cmr10-medium-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ CMSY_FAMILY, "cmsy10", "-*-cmsy10-*-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ CMM_FAMILY, "cmmi10", "-*-cmmi10-medium-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ CMEX_FAMILY, "cmex10", "-*-cmex10-*-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ MSA_FAMILY, "msam10", "-*-msam10-*-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ MSB_FAMILY, "msbm10", "-*-msbm10-*-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ DS_FAMILY, "dsrom10", "-*-dsrom10-*-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ EUFRAK_FAMILY,"eufm10", "-*-eufm10-medium-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ RSFS_FAMILY, "rsfs10", "-*-rsfs10-medium-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ STMARY_FAMILY,"stmary10","-*-stmary10-medium-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ WASY_FAMILY, "wasy10", "-*-wasy10-medium-*-*-*-*-*-*-*-*-*-*-*" },
|
||||
{ ESINT_FAMILY, "esint10","-*-esint10-medium-*-*-*-*-*-*-*-*-*-*-*" }
|
||||
#else
|
||||
{ SYMBOL_FAMILY,"symbol"},
|
||||
{ CMR_FAMILY, "cmr10"},
|
||||
{ CMSY_FAMILY, "cmsy10"},
|
||||
@ -100,7 +82,6 @@ SymbolFont symbol_fonts[] = {
|
||||
{ STMARY_FAMILY,"stmary10"},
|
||||
{ WASY_FAMILY, "wasy10"},
|
||||
{ ESINT_FAMILY, "esint10"}
|
||||
#endif
|
||||
};
|
||||
|
||||
size_t const nr_symbol_fonts = sizeof(symbol_fonts) / sizeof(symbol_fonts[0]);
|
||||
@ -147,19 +128,6 @@ GuiFontInfo & fontinfo(FontInfo const & f)
|
||||
}
|
||||
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
|
||||
QString rawName(QString const & family)
|
||||
{
|
||||
for (size_t i = 0; i < nr_symbol_fonts; ++i)
|
||||
if (family == symbol_fonts[i].family)
|
||||
return symbol_fonts[i].xlfd;
|
||||
|
||||
LYXERR(Debug::FONT, "BUG: family not found !");
|
||||
return QString();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
QString symbolFamily(FontFamily family)
|
||||
{
|
||||
for (size_t i = 0; i < nr_symbol_fonts; ++i) {
|
||||
@ -190,10 +158,7 @@ static bool isChosenFont(QFont & font, QString const & family,
|
||||
LYXERR_NOPOS(Debug::FONT, "got: " << fi.family());
|
||||
|
||||
if (fi.family().contains(family)
|
||||
#if QT_VERSION >= 0x040800
|
||||
&& (style.isEmpty() || fi.styleName().contains(style))
|
||||
#endif
|
||||
) {
|
||||
&& (style.isEmpty() || fi.styleName().contains(style))) {
|
||||
LYXERR_NOENDL(Debug::FONT, " got it ");
|
||||
return true;
|
||||
}
|
||||
@ -209,8 +174,7 @@ QFont symbolFont(QString const & family, bool * ok)
|
||||
upper[0] = family[0].toUpper();
|
||||
|
||||
QFont font;
|
||||
if (guiApp->platformName() == "qt4x11"
|
||||
|| guiApp->platformName() == "xcb"
|
||||
if (guiApp->platformName() == "xcb"
|
||||
|| guiApp->platformName().contains("wayland")) {
|
||||
// On *nix we have to also specify the foundry to be able to
|
||||
// discriminate our fonts when the texlive fonts are managed by
|
||||
@ -220,7 +184,6 @@ QFont symbolFont(QString const & family, bool * ok)
|
||||
font.setFamily(family);
|
||||
}
|
||||
font.setStyleStrategy(QFont::NoFontMerging);
|
||||
#if QT_VERSION >= 0x040800
|
||||
font.setStyleName("LyX");
|
||||
|
||||
if (isChosenFont(font, family, "LyX")) {
|
||||
@ -231,7 +194,6 @@ QFont symbolFont(QString const & family, bool * ok)
|
||||
|
||||
LYXERR_NOENDL(Debug::FONT, "Trying normal " << family << " ... ");
|
||||
font.setStyleName(QString());
|
||||
#endif
|
||||
|
||||
if (isChosenFont(font, family, QString())) {
|
||||
LYXERR_NOPOS(Debug::FONT, "normal!");
|
||||
@ -248,20 +210,6 @@ QFont symbolFont(QString const & family, bool * ok)
|
||||
return font;
|
||||
}
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
|
||||
// A simple setFamily() fails on Qt 2
|
||||
|
||||
QString const raw = rawName(family);
|
||||
LYXERR_NOENDL(Debug::FONT, "Trying " << raw << " ... ");
|
||||
font.setRawName(raw);
|
||||
|
||||
if (isChosenFont(font, family, QString())) {
|
||||
LYXERR_NOPOS(Debug::FONT, "raw version!");
|
||||
*ok = true;
|
||||
return font;
|
||||
}
|
||||
#endif
|
||||
|
||||
LYXERR_NOPOS(Debug::FONT, " FAILED :-(");
|
||||
*ok = false;
|
||||
return font;
|
||||
@ -336,15 +284,6 @@ QFont makeQFont(FontInfo const & f)
|
||||
QString family = makeFontName(toqstr(lyxrc.roman_font_name),
|
||||
toqstr(lyxrc.roman_font_foundry));
|
||||
font.setFamily(family);
|
||||
#ifdef Q_OS_MAC
|
||||
#if QT_VERSION >= 0x040300 //&& QT_VERSION < 0x040800
|
||||
// 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;
|
||||
}
|
||||
case SANS_FAMILY:
|
||||
@ -394,10 +333,6 @@ QFont makeQFont(FontInfo const & f)
|
||||
else
|
||||
LYXERR(Debug::FONT, "This font is NOT an exact match");
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
|
||||
LYXERR(Debug::FONT, "XFLD: " << font.rawName());
|
||||
#endif
|
||||
|
||||
font.setPointSizeF(f.realSize() * lyxrc.currentZoom / 100.0);
|
||||
|
||||
LYXERR(Debug::FONT, "The font has size: " << font.pointSizeF());
|
||||
@ -451,15 +386,12 @@ bool FontLoader::available(FontInfo const & f)
|
||||
|
||||
bool FontLoader::canBeDisplayed(char_type c)
|
||||
{
|
||||
// bug 8493
|
||||
if (c == 0x0009)
|
||||
// FIXME check whether this is still needed for Qt5
|
||||
// bug 8493: with Qt5, characters with codepoints 9, 10, 12 and 13
|
||||
// are rendered as spaces. We handle that in our TeX fonts by making
|
||||
// copies of the glyphs elsewhere, but this may trigger if we are
|
||||
// unlucky.
|
||||
if (c == 0x0009 || c == 0x000a || c == 0x000c || c == 0x000d)
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -53,14 +53,6 @@ using namespace lyx::support;
|
||||
#endif
|
||||
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
inline uint qHash(double key)
|
||||
{
|
||||
return qHash(QByteArray(reinterpret_cast<char const *>(&key), sizeof(key)));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
namespace std {
|
||||
|
||||
/*
|
||||
@ -91,7 +83,9 @@ int const strwidth_cache_max_cost = 1024 * 1024;
|
||||
int const breakstr_cache_max_cost = 10 * 1024 * 1024;
|
||||
// Qt 5.x already has its own caching of QTextLayout objects
|
||||
// but it does not seem to work well on MacOS X.
|
||||
#if (QT_VERSION < 0x050000) || defined(Q_OS_MAC)
|
||||
#if defined(Q_OS_MAC)
|
||||
// For some reason, the built-in cache of QTextLayout does not work or
|
||||
// exist 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;
|
||||
@ -146,11 +140,6 @@ GuiFontMetrics::GuiFontMetrics(QFont const & font)
|
||||
slope_ = defaultSlope;
|
||||
LYXERR(Debug::FONT, "Italic slope: " << slope_);
|
||||
}
|
||||
// If those characters have a non-zero width, we need to avoid them.
|
||||
// This happens with Qt4 with monospace fonts
|
||||
needs_naked_ = width(QString() + QChar(0x2060) + QChar(0x202d) + QChar(0x202e)) > 0;
|
||||
// if (needs_naked_)
|
||||
// LYXERR0("Font " << font.family() << " needs naked text layouts!");
|
||||
}
|
||||
|
||||
|
||||
@ -291,11 +280,7 @@ int GuiFontMetrics::width(docstring const & s) const
|
||||
*/
|
||||
int w = 0;
|
||||
// is the string a single character from a math font ?
|
||||
#if QT_VERSION >= 0x040800
|
||||
bool const math_char = s.length() == 1 && font_.styleName() == "LyX";
|
||||
#else
|
||||
bool const math_char = s.length() == 1;
|
||||
#endif
|
||||
if (math_char) {
|
||||
QString const qs = toqstr(s);
|
||||
int br_width = metrics_.boundingRect(qs).width();
|
||||
@ -353,9 +338,7 @@ struct TextLayoutHelper
|
||||
/// Create the helper
|
||||
/// \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.
|
||||
TextLayoutHelper(docstring const & s, bool isrtl, bool naked = false);
|
||||
TextLayoutHelper(docstring const & s, bool isrtl);
|
||||
|
||||
/// translate QString index to docstring index
|
||||
docstring::size_type qpos2pos(int qpos) const
|
||||
@ -379,7 +362,7 @@ private:
|
||||
};
|
||||
|
||||
|
||||
TextLayoutHelper::TextLayoutHelper(docstring const & s, bool isrtl, bool naked)
|
||||
TextLayoutHelper::TextLayoutHelper(docstring const & s, bool isrtl)
|
||||
: docstr(s), rtl(isrtl)
|
||||
{
|
||||
// Reserve memory for performance purpose
|
||||
@ -395,16 +378,14 @@ TextLayoutHelper::TextLayoutHelper(docstring const & s, bool isrtl, bool naked)
|
||||
*/
|
||||
// Unicode character WORD JOINER
|
||||
QChar const word_joiner(0x2060);
|
||||
if (!naked)
|
||||
qstr += word_joiner;
|
||||
qstr += word_joiner;
|
||||
|
||||
#ifdef BIDI_USE_OVERRIDE
|
||||
/* Unicode override characters enforce drawing direction
|
||||
* Source: http://www.iamcal.com/understanding-bidirectional-text/
|
||||
* Left-to-right override is 0x202d and right-to-left override is 0x202e.
|
||||
*/
|
||||
if (!naked)
|
||||
qstr += QChar(rtl ? 0x202e : 0x202d);
|
||||
qstr += QChar(rtl ? 0x202e : 0x202d);
|
||||
#endif
|
||||
|
||||
// Now translate the string character-by-character.
|
||||
@ -412,7 +393,7 @@ TextLayoutHelper::TextLayoutHelper(docstring const & s, bool isrtl, bool naked)
|
||||
for (char_type const c : s) {
|
||||
// insert a word joiner character between consecutive spaces
|
||||
bool const is_space = isSpace(c);
|
||||
if (!naked && is_space && was_space)
|
||||
if (is_space && was_space)
|
||||
qstr += word_joiner;
|
||||
was_space = is_space;
|
||||
// Remember the QString index at this point
|
||||
@ -425,8 +406,7 @@ TextLayoutHelper::TextLayoutHelper(docstring const & s, bool isrtl, bool naked)
|
||||
}
|
||||
|
||||
// Final word joiner (see above)
|
||||
if (!naked)
|
||||
qstr += word_joiner;
|
||||
qstr += word_joiner;
|
||||
|
||||
// Add virtual position at the end of the string
|
||||
pos2qpos_.push_back(qstr.size());
|
||||
@ -487,7 +467,7 @@ GuiFontMetrics::getTextLayout(docstring const & s, bool const rtl,
|
||||
if (auto ptl = qtextlayout_cache_[key])
|
||||
return ptl;
|
||||
PROFILE_CACHE_MISS(getTextLayout);
|
||||
TextLayoutHelper tlh(s, rtl, needs_naked_);
|
||||
TextLayoutHelper tlh(s, rtl);
|
||||
auto const ptl = getTextLayout_helper(tlh, wordspacing, font_);
|
||||
qtextlayout_cache_.insert(key, ptl);
|
||||
return ptl;
|
||||
@ -497,7 +477,7 @@ GuiFontMetrics::getTextLayout(docstring const & s, bool const rtl,
|
||||
int GuiFontMetrics::pos2x(docstring const & s, int pos, bool const rtl,
|
||||
double const wordspacing) const
|
||||
{
|
||||
TextLayoutHelper tlh(s, rtl, needs_naked_);
|
||||
TextLayoutHelper tlh(s, rtl);
|
||||
auto ptl = getTextLayout(tlh, wordspacing);
|
||||
// pos can be negative, see #10506.
|
||||
int const qpos = tlh.pos2qpos(max(pos, 0));
|
||||
@ -508,7 +488,7 @@ int GuiFontMetrics::pos2x(docstring const & s, int pos, bool const rtl,
|
||||
int GuiFontMetrics::x2pos(docstring const & s, int & x, bool const rtl,
|
||||
double const wordspacing) const
|
||||
{
|
||||
TextLayoutHelper tlh(s, rtl, needs_naked_);
|
||||
TextLayoutHelper tlh(s, rtl);
|
||||
auto ptl = getTextLayout(tlh, wordspacing);
|
||||
QTextLine const & tline = ptl->lineForTextPosition(0);
|
||||
int qpos = tline.xToCursor(x);
|
||||
@ -546,7 +526,7 @@ FontMetrics::Breaks
|
||||
GuiFontMetrics::breakString_helper(docstring const & s, int first_wid, int wid,
|
||||
bool rtl, bool force) const
|
||||
{
|
||||
TextLayoutHelper const tlh(s, rtl, needs_naked_);
|
||||
TextLayoutHelper const tlh(s, rtl);
|
||||
|
||||
QTextLayout tl;
|
||||
#ifdef BIDI_USE_FLAG
|
||||
|
@ -119,10 +119,6 @@ private:
|
||||
/// Slope of italic font
|
||||
double slope_;
|
||||
|
||||
/// If true, avoid extra annotation in string for QTextLayout
|
||||
// FIXME: remove wen Qt4 suport goes away
|
||||
bool needs_naked_ = false;
|
||||
|
||||
/// Cache of char widths
|
||||
mutable QHash<char_type, int> width_cache_;
|
||||
/// Cache of string widths
|
||||
|
@ -64,25 +64,17 @@ QImage const & GuiImage::image() const
|
||||
|
||||
unsigned int GuiImage::width() const
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
return static_cast<unsigned int>(ceil(is_transformed_ ?
|
||||
(transformed_.width() / transformed_.devicePixelRatio()) :
|
||||
(original_.width() / original_.devicePixelRatio())));
|
||||
#else
|
||||
return is_transformed_ ? transformed_.width() : original_.width();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
unsigned int GuiImage::height() const
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
return static_cast<unsigned int>(ceil(is_transformed_ ?
|
||||
(transformed_.height() / transformed_.devicePixelRatio()) :
|
||||
(original_.height() / original_.devicePixelRatio())));
|
||||
#else
|
||||
return is_transformed_ ? transformed_.height() : original_.height();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -117,9 +109,7 @@ bool GuiImage::setPixmap(Params const & params)
|
||||
return false;
|
||||
}
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
original_.setDevicePixelRatio(params.pixel_ratio);
|
||||
#endif
|
||||
|
||||
is_transformed_ = clip(params);
|
||||
is_transformed_ |= rotate(params);
|
||||
@ -141,14 +131,9 @@ bool GuiImage::clip(Params const & params)
|
||||
// No clipping is necessary.
|
||||
return false;
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
double const pixelRatio = is_transformed_ ? transformed_.devicePixelRatio() : original_.devicePixelRatio();
|
||||
int const new_width = static_cast<int>((params.bb.xr.inBP() - params.bb.xl.inBP()) * pixelRatio);
|
||||
int const new_height = static_cast<int>((params.bb.yt.inBP() - params.bb.yb.inBP()) * pixelRatio);
|
||||
#else
|
||||
int const new_width = static_cast<int>((params.bb.xr.inBP() - params.bb.xl.inBP()));
|
||||
int const new_height = static_cast<int>((params.bb.yt.inBP() - params.bb.yb.inBP()));
|
||||
#endif
|
||||
|
||||
QImage const & image = is_transformed_ ? transformed_ : original_;
|
||||
|
||||
@ -191,19 +176,8 @@ bool GuiImage::scale(Params const & params)
|
||||
if (params.scale == 100)
|
||||
return false;
|
||||
|
||||
#if QT_VERSION >= 0x050000
|
||||
double const pixelRatio = is_transformed_ ? transformed_.devicePixelRatio() : original_.devicePixelRatio();
|
||||
qreal scale = qreal(params.scale) / 100.0 * pixelRatio;
|
||||
#else
|
||||
qreal scale = qreal(params.scale) / 100.0;
|
||||
#endif
|
||||
|
||||
#if (QT_VERSION >= 0x040500) && (QT_VERSION <= 0x040502)
|
||||
// Due to a bug in Qt, LyX will crash for certain
|
||||
// scaling factors and sizes of the image.
|
||||
// see bug #5957: http://www.lyx.org/trac/ticket/5957
|
||||
scale += 0.0001;
|
||||
#endif
|
||||
qreal const scale = qreal(params.scale) / 100.0 * pixelRatio;
|
||||
|
||||
QTransform m;
|
||||
m.scale(scale, scale);
|
||||
|
@ -11,7 +11,7 @@
|
||||
#include <config.h>
|
||||
|
||||
#include "GuiKeySymbol.h"
|
||||
#if defined(Q_OS_MAC) && QT_VERSION > 0x050000
|
||||
#if defined(Q_OS_MAC)
|
||||
#include "GuiApplication.h"
|
||||
#endif
|
||||
#include "qt_helpers.h"
|
||||
@ -867,7 +867,7 @@ bool KeySymbol::operator==(KeySymbol const & ks) const
|
||||
KeyModifier q_key_state(Qt::KeyboardModifiers state)
|
||||
{
|
||||
KeyModifier k = NoModifier;
|
||||
#if defined(Q_OS_MAC) && (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) && (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
|
||||
#if defined(Q_OS_MAC) && (QT_VERSION < QT_VERSION_CHECK(5, 12, 0))
|
||||
/// Additional check for Control and Meta modifier swap state.
|
||||
/// Starting with Qt 5 the modifiers aren't reported correctly.
|
||||
/// Until this is fixed a correction is required.
|
||||
|
@ -189,13 +189,8 @@ GuiLyXFiles::GuiLyXFiles(GuiView & lv)
|
||||
filter_->setClearButton(true);
|
||||
filter_->setPlaceholderText(qt_("All available files"));
|
||||
filter_->setToolTip(qt_("Enter string to filter the list of available files"));
|
||||
#if (QT_VERSION < 0x050000)
|
||||
connect(filter_, SIGNAL(downPressed()),
|
||||
filesLW, SLOT(setFocus()));
|
||||
#else
|
||||
connect(filter_, &FancyLineEdit::downPressed,
|
||||
filesLW, [this](){ focusAndHighlight(filesLW); });
|
||||
#endif
|
||||
|
||||
filterBarL->addWidget(filter_, 0);
|
||||
findKeysLA->setBuddy(filter_);
|
||||
|
@ -315,13 +315,6 @@ void GuiPainter::text(int x, int y, docstring const & s,
|
||||
*/
|
||||
QString str = toqstr(s);
|
||||
|
||||
#if 0
|
||||
// HACK: QT3 refuses to show single compose characters
|
||||
// Still needed with Qt4?
|
||||
if (ls == 1 && str[0].unicode() >= 0x05b0 && str[0].unicode() <= 0x05c2)
|
||||
str = ' ' + str;
|
||||
#endif
|
||||
|
||||
QFont ff = getFont(f);
|
||||
ff.setWordSpacing(wordspacing);
|
||||
GuiFontMetrics const & fm = getFontMetrics(f);
|
||||
|
@ -438,13 +438,11 @@ PrefInput::PrefInput(GuiPreferences * form)
|
||||
this, SIGNAL(changed()));
|
||||
|
||||
// reveal checkbox for switching Ctrl and Meta on Mac:
|
||||
bool swapcb = false;
|
||||
#ifdef Q_OS_MAC
|
||||
#if QT_VERSION > 0x040600
|
||||
swapcb = true;
|
||||
dontswapCB->setVisible(true);
|
||||
#else
|
||||
dontswapCB->setVisible(false);
|
||||
#endif
|
||||
#endif
|
||||
dontswapCB->setVisible(swapcb);
|
||||
}
|
||||
|
||||
|
||||
@ -2635,11 +2633,8 @@ PrefUserInterface::PrefUserInterface(GuiPreferences * form)
|
||||
iconSetCO->addItem(qt_("Classic"), "classic");
|
||||
iconSetCO->addItem(qt_("Oxygen"), "oxygen");
|
||||
|
||||
#if QT_VERSION >= 0x040600
|
||||
if (guiApp->platformName() != "qt4x11"
|
||||
&& guiApp->platformName() != "xcb"
|
||||
if (guiApp->platformName() != "xcb"
|
||||
&& !guiApp->platformName().contains("wayland"))
|
||||
#endif
|
||||
useSystemThemeIconsCB->hide();
|
||||
}
|
||||
|
||||
@ -3573,11 +3568,6 @@ GuiPreferences::GuiPreferences(GuiView & lv)
|
||||
addModule(formats);
|
||||
|
||||
prefsPS->setCurrentPanel("User Interface");
|
||||
// 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));
|
||||
|
@ -59,13 +59,8 @@ GuiRef::GuiRef(GuiView & lv)
|
||||
filter_->setClearButton(true);
|
||||
filter_->setPlaceholderText(qt_("All available labels"));
|
||||
filter_->setToolTip(qt_("Enter string to filter the list of available labels"));
|
||||
#if (QT_VERSION < 0x050000)
|
||||
connect(filter_, SIGNAL(downPressed()),
|
||||
refsTW, SLOT(setFocus()));
|
||||
#else
|
||||
connect(filter_, &FancyLineEdit::downPressed,
|
||||
refsTW, [this](){ focusAndHighlight(refsTW); });
|
||||
#endif
|
||||
|
||||
filterBarL->addWidget(filter_, 0);
|
||||
findKeysLA->setBuddy(filter_);
|
||||
|
@ -42,9 +42,7 @@
|
||||
#include <QHideEvent>
|
||||
#include <QShowEvent>
|
||||
#include "QSizePolicy"
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QSvgRenderer>
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
using namespace lyx::support;
|
||||
@ -233,11 +231,9 @@ void GuiSearchWidget::handleIndicators()
|
||||
|
||||
bool const dark_mode = guiApp && guiApp->isInDarkMode();
|
||||
qreal dpr = 1.0;
|
||||
#if QT_VERSION >= 0x050000
|
||||
// Consider device/pixel ratio (HiDPI)
|
||||
if (guiApp && guiApp->currentView())
|
||||
dpr = guiApp->currentView()->devicePixelRatio();
|
||||
#endif
|
||||
QString imagedir = "images/";
|
||||
QPixmap bpixmap = getPixmap("images/", "search-options", "svgz,png");
|
||||
QPixmap pm = bpixmap;
|
||||
@ -250,16 +246,13 @@ void GuiSearchWidget::handleIndicators()
|
||||
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()) {
|
||||
@ -268,15 +261,11 @@ void GuiSearchWidget::handleIndicators()
|
||||
svgRenderer.render(&painter, QRectF(0, 0, spixmap.width() * dpr,
|
||||
spixmap.height() * dpr));
|
||||
}
|
||||
#endif
|
||||
x += (spixmap.width() * dpr) + gap;
|
||||
}
|
||||
if (wordsCB->isChecked()) {
|
||||
tip += "<li>" + qt_("Whole words only");
|
||||
QPixmap spixmap = getPixmap("images/", "search-whole-words", "svgz,png");
|
||||
#if QT_VERSION < 0x050000
|
||||
painter.drawPixmap(x, 0, spixmap);
|
||||
#else
|
||||
FileName fname = imageLibFileSearch(imagedir, "search-whole-words", "svgz,png");
|
||||
QString fpath = toqstr(fname.absFileName());
|
||||
if (!fpath.isEmpty()) {
|
||||
@ -285,15 +274,11 @@ void GuiSearchWidget::handleIndicators()
|
||||
svgRenderer.render(&painter, QRectF(x, 0, spixmap.width() * dpr,
|
||||
spixmap.height() * dpr));
|
||||
}
|
||||
#endif
|
||||
x += (spixmap.width() * dpr) + gap;
|
||||
}
|
||||
if (selectionCB->isChecked()) {
|
||||
tip += "<li>" + qt_("Search only in selection");
|
||||
QPixmap spixmap = getPixmap("images/", "search-selection", "svgz,png");
|
||||
#if QT_VERSION < 0x050000
|
||||
painter.drawPixmap(x, 0, spixmap);
|
||||
#else
|
||||
FileName fname = imageLibFileSearch(imagedir, "search-selection", "svgz,png");
|
||||
QString fpath = toqstr(fname.absFileName());
|
||||
if (!fpath.isEmpty()) {
|
||||
@ -302,15 +287,11 @@ void GuiSearchWidget::handleIndicators()
|
||||
svgRenderer.render(&painter, QRectF(x, 0, spixmap.width() * dpr,
|
||||
spixmap.height() * dpr));
|
||||
}
|
||||
#endif
|
||||
x += (spixmap.width() * dpr) + gap;
|
||||
}
|
||||
if (instantSearchCB->isChecked()) {
|
||||
tip += "<li>" + qt_("Search as you type");
|
||||
QPixmap spixmap = getPixmap("images/", "search-instant", "svgz,png");
|
||||
#if QT_VERSION < 0x050000
|
||||
painter.drawPixmap(x, 0, spixmap);
|
||||
#else
|
||||
FileName fname = imageLibFileSearch(imagedir, "search-instant", "svgz,png");
|
||||
QString fpath = toqstr(fname.absFileName());
|
||||
if (!fpath.isEmpty()) {
|
||||
@ -319,15 +300,11 @@ void GuiSearchWidget::handleIndicators()
|
||||
svgRenderer.render(&painter, QRectF(x, 0, spixmap.width() * dpr,
|
||||
spixmap.height() * dpr));
|
||||
}
|
||||
#endif
|
||||
x += (spixmap.width() * dpr) + gap;
|
||||
}
|
||||
if (wrapCB->isChecked()) {
|
||||
tip += "<li>" + qt_("Wrap search");
|
||||
QPixmap spixmap = getPixmap("images/", "search-wrap", "svgz,png");
|
||||
#if QT_VERSION < 0x050000
|
||||
painter.drawPixmap(x, 0, spixmap);
|
||||
#else
|
||||
FileName fname = imageLibFileSearch(imagedir, "search-wrap", "svgz,png");
|
||||
QString fpath = toqstr(fname.absFileName());
|
||||
if (!fpath.isEmpty()) {
|
||||
@ -336,18 +313,14 @@ void GuiSearchWidget::handleIndicators()
|
||||
svgRenderer.render(&painter, QRectF(x, 0, spixmap.width() * dpr,
|
||||
spixmap.height() * dpr));
|
||||
}
|
||||
#endif
|
||||
x += (spixmap.width() * dpr) + gap;
|
||||
}
|
||||
tip += "</ul>";
|
||||
#if QT_VERSION >= 0x050000
|
||||
pm.setDevicePixelRatio(dpr);
|
||||
#endif
|
||||
painter.end();
|
||||
} else {
|
||||
tip = qt_("Click here to change search options");
|
||||
#if QT_VERSION >= 0x050000
|
||||
// With Qt5, we render SVG directly for HiDPI scalability
|
||||
// We render SVG directly for HiDPI scalability
|
||||
FileName fname = imageLibFileSearch(imagedir, "search-options", "svgz,png");
|
||||
QString fpath = toqstr(fname.absFileName());
|
||||
if (!fpath.isEmpty()) {
|
||||
@ -360,7 +333,6 @@ void GuiSearchWidget::handleIndicators()
|
||||
pm.setDevicePixelRatio(dpr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (dark_mode) {
|
||||
QImage img = pm.toImage();
|
||||
|
@ -521,7 +521,7 @@ void GuiToolbar::add(ToolbarItem const & item)
|
||||
case ToolbarItem::MINIBUFFER:
|
||||
command_buffer_ = new GuiCommandBuffer(&owner_);
|
||||
addWidget(command_buffer_);
|
||||
/// \todo find a Qt4 equivalent to setHorizontalStretchable(true);
|
||||
/// \todo find a Qt5 equivalent to setHorizontalStretchable(true);
|
||||
//setHorizontalStretchable(true);
|
||||
break;
|
||||
case ToolbarItem::TABLEINSERT: {
|
||||
|
@ -161,7 +161,6 @@ public:
|
||||
/// The text to be written on top of the pixmap
|
||||
QString const text = lyx_version ?
|
||||
qt_("version ") + lyx_version : qt_("unknown version");
|
||||
#if QT_VERSION >= 0x050000
|
||||
QString imagedir = "images/";
|
||||
FileName fname = imageLibFileSearch(imagedir, "banner", "svgz");
|
||||
QSvgRenderer svgRenderer(toqstr(fname.absFileName()));
|
||||
@ -173,9 +172,6 @@ public:
|
||||
} else {
|
||||
splash_ = getPixmap("images/", "banner", "png");
|
||||
}
|
||||
#else
|
||||
splash_ = getPixmap("images/", "banner", "svgz,png");
|
||||
#endif
|
||||
|
||||
QPainter pain(&splash_);
|
||||
pain.setPen(QColor(0, 0, 0));
|
||||
@ -264,11 +260,7 @@ private:
|
||||
|
||||
/// Current ratio between physical pixels and device-independent pixels
|
||||
double pixelRatio() const {
|
||||
#if QT_VERSION >= 0x050000
|
||||
return qt_scale_factor * devicePixelRatio();
|
||||
#else
|
||||
return 1.0;
|
||||
#endif
|
||||
}
|
||||
|
||||
qreal fontSize() const {
|
||||
@ -288,11 +280,7 @@ private:
|
||||
|
||||
/// Ratio between physical pixels and device-independent pixels of splash image
|
||||
double splashPixelRatio() const {
|
||||
#if QT_VERSION >= 0x050000
|
||||
return splash_.devicePixelRatio();
|
||||
#else
|
||||
return 1.0;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
@ -608,15 +596,10 @@ GuiView::GuiView(int id)
|
||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||
|
||||
#if !(defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)) && !defined(Q_OS_MAC)
|
||||
// QIcon::fromTheme was introduced in Qt 4.6
|
||||
#if (QT_VERSION >= 0x040600)
|
||||
// assign an icon to main form. We do not do it under Qt/Win or Qt/Mac,
|
||||
// since the icon is provided in the application bundle. We use a themed
|
||||
// version when available and use the bundled one as fallback.
|
||||
setWindowIcon(QIcon::fromTheme("lyx", getPixmap("images/", "lyx", "svg,png")));
|
||||
#else
|
||||
setWindowIcon(getPixmap("images/", "lyx", "svg,png"));
|
||||
#endif
|
||||
|
||||
#endif
|
||||
resetWindowTitle();
|
||||
@ -1001,7 +984,7 @@ void GuiView::saveLayout() const
|
||||
settings.setValue("devel_mode", devel_mode_);
|
||||
settings.beginGroup("views");
|
||||
settings.beginGroup(QString::number(id_));
|
||||
if (guiApp->platformName() == "qt4x11" || guiApp->platformName() == "xcb") {
|
||||
if (guiApp->platformName() == "xcb") {
|
||||
settings.setValue("pos", pos());
|
||||
settings.setValue("size", size());
|
||||
} else
|
||||
@ -1067,7 +1050,7 @@ bool GuiView::restoreLayout()
|
||||
char_nb_count_enabled_ = settings.value("char_nb_count_enabled", true).toBool();
|
||||
stat_counts_->setVisible(word_count_enabled_ || char_count_enabled_ || char_nb_count_enabled_);
|
||||
|
||||
if (guiApp->platformName() == "qt4x11" || guiApp->platformName() == "xcb") {
|
||||
if (guiApp->platformName() == "xcb") {
|
||||
QPoint pos = settings.value("pos", QPoint(50, 50)).toPoint();
|
||||
QSize size = settings.value("size", QSize(690, 510)).toSize();
|
||||
resize(size);
|
||||
@ -1525,9 +1508,7 @@ void GuiView::updateWindowTitle(GuiWorkArea * wa)
|
||||
// buffer-save has changed too.
|
||||
updateToolbars();
|
||||
}
|
||||
#ifndef Q_WS_MAC
|
||||
title += from_ascii(" - LyX");
|
||||
#endif
|
||||
setWindowTitle(toqstr(title));
|
||||
// Sets the path for the window: this is used by OSX to
|
||||
// allow a context click on the title bar showing a menu
|
||||
@ -1835,11 +1816,7 @@ void GuiView::resetCommandExecute()
|
||||
|
||||
double GuiView::pixelRatio() const
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
return qt_scale_factor * devicePixelRatio();
|
||||
#else
|
||||
return 1.0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -5276,11 +5253,9 @@ Dialog * GuiView::findOrBuild(string const & name, bool hide_it)
|
||||
|
||||
dialog = build(name);
|
||||
d.dialogs_[name].reset(dialog);
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
|
||||
// Force a uniform style for group boxes
|
||||
// On Mac non-flat works better, on Linux flat is standard
|
||||
flatGroupBoxes(dialog->asQWidget(), guiApp->platformName() != "cocoa");
|
||||
#endif
|
||||
if (lyxrc.allow_geometry_session)
|
||||
dialog->restoreSession();
|
||||
if (hide_it)
|
||||
|
@ -53,9 +53,6 @@
|
||||
#include "frontends/WorkAreaManager.h"
|
||||
|
||||
#include <QContextMenuEvent>
|
||||
#if (QT_VERSION < 0x050000)
|
||||
#include <QInputContext>
|
||||
#endif
|
||||
#include <QDrag>
|
||||
#include <QHelpEvent>
|
||||
#ifdef Q_OS_MAC
|
||||
@ -182,11 +179,7 @@ GuiWorkArea::GuiWorkArea(Buffer & buffer, GuiView & gv)
|
||||
|
||||
double GuiWorkArea::pixelRatio() const
|
||||
{
|
||||
#if QT_VERSION >= 0x050000
|
||||
return qt_scale_factor * devicePixelRatio();
|
||||
#else
|
||||
return 1.0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -202,7 +195,7 @@ void GuiWorkArea::init()
|
||||
});
|
||||
|
||||
d->resetScreen();
|
||||
// With Qt4.5 a mouse event will happen before the first paint event
|
||||
// A mouse event will happen before the first paint event,
|
||||
// so make sure that the buffer view has an up to date metrics.
|
||||
d->buffer_view_->resize(viewport()->width(), viewport()->height());
|
||||
|
||||
@ -591,10 +584,6 @@ void GuiWorkArea::scrollTo(int value)
|
||||
}
|
||||
// Show the caret immediately after any operation.
|
||||
startBlinkingCaret();
|
||||
// FIXME QT5
|
||||
#ifdef Q_WS_X11
|
||||
QApplication::syncX();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -724,10 +713,6 @@ void GuiWorkArea::mousePressEvent(QMouseEvent * e)
|
||||
return;
|
||||
}
|
||||
|
||||
#if (QT_VERSION < 0x050000) && !defined(__HAIKU__)
|
||||
inputContext()->reset();
|
||||
#endif
|
||||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
|
||||
FuncRequest const cmd(LFUN_MOUSE_PRESS, e->position().x(), e->position().y(),
|
||||
#else
|
||||
@ -860,13 +845,6 @@ void GuiWorkArea::wheelEvent(QWheelEvent * ev)
|
||||
// Wheel rotation by one notch results in a delta() of 120 (see
|
||||
// documentation of QWheelEvent)
|
||||
// But first we have to ignore horizontal scroll events.
|
||||
#if QT_VERSION < 0x050000
|
||||
if (ev->orientation() == Qt::Horizontal) {
|
||||
ev->accept();
|
||||
return;
|
||||
}
|
||||
double const delta = ev->delta() / 120.0;
|
||||
#else
|
||||
QPoint const aDelta = ev->angleDelta();
|
||||
// skip horizontal wheel event
|
||||
if (abs(aDelta.x()) > abs(aDelta.y())) {
|
||||
@ -874,7 +852,6 @@ void GuiWorkArea::wheelEvent(QWheelEvent * ev)
|
||||
return;
|
||||
}
|
||||
double const delta = aDelta.y() / 120.0;
|
||||
#endif
|
||||
|
||||
bool zoom = false;
|
||||
switch (lyxrc.scroll_wheel_zoom) {
|
||||
@ -1232,9 +1209,7 @@ void GuiWorkArea::Private::resetScreen()
|
||||
screen_ = QImage(pr * p->viewport()->width(),
|
||||
pr * p->viewport()->height(),
|
||||
QImage::Format_ARGB32_Premultiplied);
|
||||
# if QT_VERSION >= 0x050000
|
||||
screen_.setDevicePixelRatio(pr);
|
||||
# endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -1378,11 +1353,7 @@ QVariant GuiWorkArea::inputMethodQuery(Qt::InputMethodQuery query) const
|
||||
switch (query) {
|
||||
// this is the CJK-specific composition window position and
|
||||
// the context menu position when the menu key is pressed.
|
||||
#if (QT_VERSION < 0x050000)
|
||||
case Qt::ImMicroFocus: {
|
||||
#else
|
||||
case Qt::ImCursorRectangle: {
|
||||
#endif
|
||||
CaretGeometry const & cg = bufferView().caretGeometry();
|
||||
return QRect(cg.left - 10 * (d->preedit_lines_ != 1),
|
||||
cg.top + cg.height() * d->preedit_lines_,
|
||||
@ -1595,11 +1566,7 @@ void TabWorkArea::paintEvent(QPaintEvent * event)
|
||||
// painting of the frame of the tab widget.
|
||||
// This is needed for gtk style in Qt.
|
||||
QStylePainter p(this);
|
||||
#if QT_VERSION < 0x050000
|
||||
QStyleOptionTabWidgetFrameV2 opt;
|
||||
#else
|
||||
QStyleOptionTabWidgetFrame opt;
|
||||
#endif
|
||||
initStyleOption(&opt);
|
||||
opt.rect = style()->subElementRect(QStyle::SE_TabWidgetTabPane,
|
||||
&opt, this);
|
||||
|
@ -76,10 +76,8 @@
|
||||
#include <QHash>
|
||||
#include <QList>
|
||||
#include <QMenuBar>
|
||||
#include <QString>
|
||||
#if QT_VERSION >= 0x040600
|
||||
#include <QProxyStyle>
|
||||
#endif
|
||||
#include <QString>
|
||||
|
||||
#include <algorithm>
|
||||
#include <memory>
|
||||
@ -2146,7 +2144,7 @@ void Menu::Impl::populate(QMenu * qMenu, MenuDefinition const & menu)
|
||||
}
|
||||
}
|
||||
|
||||
#if (defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)) && (QT_VERSION >= 0x040600)
|
||||
#if (defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN))
|
||||
class AlwaysMnemonicStyle : public QProxyStyle {
|
||||
public:
|
||||
int styleHint(StyleHint hint, const QStyleOption *opt = 0, const QWidget *widget = 0,
|
||||
@ -2166,7 +2164,7 @@ public:
|
||||
Menu::Menu(GuiView * gv, QString const & name, bool top_level, bool keyboard)
|
||||
: QMenu(gv), d(new Menu::Impl)
|
||||
{
|
||||
#if (defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)) && (QT_VERSION >= 0x040600)
|
||||
#if (defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN))
|
||||
if (keyboard)
|
||||
setStyle(new AlwaysMnemonicStyle);
|
||||
#else
|
||||
@ -2280,11 +2278,10 @@ MenuDefinition Menus::Impl::mac_special_menu_;
|
||||
*/
|
||||
void Menus::Impl::macxMenuBarInit(QMenuBar * qmb)
|
||||
{
|
||||
/* Since Qt 4.2, the qt/mac menu code has special code for
|
||||
specifying the role of a menu entry. However, it does not
|
||||
work very well with our scheme of creating menus on demand,
|
||||
and therefore we need to put these entries in a special
|
||||
invisible menu. (JMarc)
|
||||
/* The qt/mac menu code has special code for specifying the role
|
||||
of a menu entry. However, it does not work very well with our
|
||||
scheme of creating menus on demand, and therefore we need to
|
||||
put these entries in a special invisible menu. (JMarc)
|
||||
*/
|
||||
|
||||
/* The entries of our special mac menu. If we add support for
|
||||
@ -2306,11 +2303,6 @@ void Menus::Impl::macxMenuBarInit(QMenuBar * qmb)
|
||||
QAction::AboutRole},
|
||||
{LFUN_DIALOG_SHOW, "prefs", "Preferences",
|
||||
QAction::PreferencesRole},
|
||||
#if !(defined(QT_MAC_USE_COCOA) || (QT_VERSION >= 0x050000))
|
||||
/* This doesn't work with Cocoa. */
|
||||
{LFUN_RECONFIGURE, "", "Reconfigure",
|
||||
QAction::ApplicationSpecificRole},
|
||||
#endif
|
||||
{LFUN_LYX_QUIT, "", "Quit LyX", QAction::QuitRole}
|
||||
};
|
||||
const size_t num_entries = sizeof(entries) / sizeof(entries[0]);
|
||||
@ -2641,7 +2633,7 @@ void Menus::fillMenuBar(QMenuBar * qmb, GuiView * view, bool initial)
|
||||
} else {
|
||||
// Clear all menubar contents before filling it.
|
||||
qmb->clear();
|
||||
#if (QT_VERSION >= 0x050000 && defined(Q_OS_MAC))
|
||||
#if (defined(Q_OS_MAC))
|
||||
d->macxMenuBarInit(qmb);
|
||||
#endif
|
||||
}
|
||||
@ -2684,8 +2676,8 @@ void Menus::fillMenuBar(QMenuBar * qmb, GuiView * view, bool initial)
|
||||
Menu * menuptr = new Menu(view, m->submenuname(), true);
|
||||
menuptr->setTitle(label(*m));
|
||||
|
||||
#if defined(Q_OS_MAC) && (defined(QT_MAC_USE_COCOA) || (QT_VERSION >= 0x050000))
|
||||
// On Mac OS with QT/cocoa, the menu is not displayed if there is no action
|
||||
#if defined(Q_OS_MAC)
|
||||
// On Mac OS with Qt/Cocoa, the menu is not displayed if there is no action
|
||||
// so we create a temporary one here
|
||||
QAction * action = new QAction(menuptr);
|
||||
menuptr->addAction(action);
|
||||
|
@ -61,7 +61,7 @@ PanelStack::PanelStack(QWidget * parent)
|
||||
list_->setRootIsDecorated(false);
|
||||
list_->setColumnCount(1);
|
||||
list_->header()->hide();
|
||||
setSectionResizeMode(list_->header(), QHeaderView::ResizeToContents);
|
||||
list_->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
list_->header()->setStretchLastSection(false);
|
||||
list_->setMinimumSize(list_->viewport()->size());
|
||||
|
||||
|
@ -102,13 +102,8 @@ TocWidget::TocWidget(GuiView & gui_view, QWidget * parent)
|
||||
this, SLOT(showContextMenu(const QPoint &)));
|
||||
connect(filter_, SIGNAL(textEdited(QString)),
|
||||
this, SLOT(filterContents()));
|
||||
#if (QT_VERSION < 0x050000)
|
||||
connect(filter_, SIGNAL(downPressed()),
|
||||
tocTV, SLOT(setFocus()));
|
||||
#else
|
||||
connect(filter_, &FancyLineEdit::downPressed,
|
||||
tocTV, [this](){ focusAndHighlight(tocTV); });
|
||||
#endif
|
||||
connect(activeFilterCO, SIGNAL(activated(int)),
|
||||
this, SLOT(filterContents()));
|
||||
|
||||
|
@ -269,24 +269,6 @@ void setMessageColour(list<QWidget *> highlighted, list<QWidget *> plain)
|
||||
}
|
||||
|
||||
|
||||
/// 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
|
||||
}
|
||||
|
||||
void setSectionResizeMode(QHeaderView * view, QHeaderView::ResizeMode mode) {
|
||||
#if (QT_VERSION >= 0x050000)
|
||||
view->setSectionResizeMode(mode);
|
||||
#else
|
||||
view->setResizeMode(mode);
|
||||
#endif
|
||||
}
|
||||
|
||||
void showDirectory(FileName const & directory)
|
||||
{
|
||||
if (!directory.exists())
|
||||
|
@ -89,12 +89,6 @@ void focusAndHighlight(QAbstractItemView * w);
|
||||
void setMessageColour(std::list<QWidget *> highlighted,
|
||||
std::list<QWidget *> plain);
|
||||
|
||||
/// Qt5 changed setSectionMode to setSectionResizeMode
|
||||
/// These wrappers work for Qt4 and Qt5
|
||||
void setSectionResizeMode(QHeaderView * view,
|
||||
int logicalIndex, QHeaderView::ResizeMode mode);
|
||||
void setSectionResizeMode(QHeaderView * view,
|
||||
QHeaderView::ResizeMode mode);
|
||||
/// Shows a directory in OSs file browser
|
||||
void showDirectory(support::FileName const & directory);
|
||||
/// handle request for showing citation content - shows pdf/ps or
|
||||
|
@ -57,13 +57,8 @@
|
||||
//#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
|
||||
|
@ -126,15 +126,7 @@ void FileMonitorGuard::refresh(bool const emit)
|
||||
if (!qwatcher_->files().contains(qfilename)) {
|
||||
bool const existed = exists_;
|
||||
exists_ = QFile(qfilename).exists();
|
||||
#if (QT_VERSION >= 0x050000)
|
||||
if (exists_ && !qwatcher_->addPath(qfilename))
|
||||
#else
|
||||
auto add_path = [&]() {
|
||||
qwatcher_->addPath(qfilename);
|
||||
return qwatcher_->files().contains(qfilename);
|
||||
};
|
||||
if (exists_ && !add_path())
|
||||
#endif
|
||||
{
|
||||
LYXERR(Debug::FILES,
|
||||
"Could not add path to QFileSystemWatcher: " << filename_);
|
||||
|
@ -778,11 +778,7 @@ docstring FileName::fileContents(string const & encoding) const
|
||||
if (encoding.empty() || encoding == "UTF-8")
|
||||
s = QString::fromUtf8(contents.data());
|
||||
else if (encoding == "ascii")
|
||||
#if (QT_VERSION < 0x050000)
|
||||
s = QString::fromAscii(contents.data());
|
||||
#else
|
||||
s = QString::fromLatin1(contents.data());
|
||||
#endif
|
||||
else if (encoding == "local8bit")
|
||||
s = QString::fromLocal8Bit(contents.data());
|
||||
else if (encoding == "latin1")
|
||||
|
@ -420,12 +420,9 @@ FileName const get_document_dir(FileName const & home_dir)
|
||||
(void)home_dir; // Silence warning about unused variable.
|
||||
os::GetFolderPath win32_folder_path;
|
||||
return FileName(win32_folder_path(os::GetFolderPath::PERSONAL));
|
||||
#elif defined (USE_MACOSX_PACKAGING) && (QT_VERSION >= 0x050000)
|
||||
(void)home_dir; // Silence warning about unused variable.
|
||||
return FileName(fromqstr(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)));
|
||||
#elif defined (USE_MACOSX_PACKAGING)
|
||||
(void)home_dir; // Silence warning about unused variable.
|
||||
return FileName(fromqstr(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation)));
|
||||
return FileName(fromqstr(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)));
|
||||
#else // Posix-like.
|
||||
return home_dir;
|
||||
#endif
|
||||
@ -686,13 +683,9 @@ FileName const get_default_user_support_dir(FileName const & home_dir)
|
||||
os::GetFolderPath win32_folder_path;
|
||||
return FileName(addPath(win32_folder_path(os::GetFolderPath::APPDATA), PACKAGE));
|
||||
|
||||
#elif defined (USE_MACOSX_PACKAGING) && (QT_VERSION >= 0x050000)
|
||||
(void)home_dir; // Silence warning about unused variable.
|
||||
return FileName(addPath(fromqstr(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)), PACKAGE));
|
||||
|
||||
#elif defined (USE_MACOSX_PACKAGING)
|
||||
(void)home_dir; // Silence warning about unused variable.
|
||||
return FileName(addPath(fromqstr(QDesktopServices::storageLocation(QDesktopServices::DataLocation)), PACKAGE));
|
||||
return FileName(addPath(fromqstr(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)), PACKAGE));
|
||||
|
||||
#elif defined (USE_HAIKU_PACKAGING)
|
||||
return FileName(addPath(home_dir.absFileName(), string("/config/settings/") + PACKAGE));
|
||||
|
@ -1314,12 +1314,8 @@ void fileUnlock(int fd, const char * /* lock_file*/)
|
||||
|
||||
std::string toHexHash(const std::string & str)
|
||||
{
|
||||
// Use the best available hashing algorithm. Qt 5 proposes SHA-2, but Qt 4 is limited to SHA-1.
|
||||
#if QT_VERSION >= 0x050000
|
||||
// Use the best available hashing algorithm.
|
||||
auto hashAlgo = QCryptographicHash::Sha256;
|
||||
#else
|
||||
auto hashAlgo = QCryptographicHash::Sha1;
|
||||
#endif
|
||||
|
||||
QByteArray hash = QCryptographicHash::hash(toqstr(str).toLocal8Bit(), hashAlgo);
|
||||
return fromqstr(QString(hash.toHex()));
|
||||
|
Loading…
Reference in New Issue
Block a user