diff --git a/config/qt.m4 b/config/qt.m4 index 6a455f9134..93b8575ad3 100644 --- a/config/qt.m4 +++ b/config/qt.m4 @@ -217,31 +217,15 @@ AC_DEFUN([QT_DO_IT_ALL], fi;; esac + dnl Specific support for X11 will be built if these are available + AC_CHECK_HEADERS([xcb/xcb.h]) + AC_CHECK_LIB([xcb], [xcb_send_event]) save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$save_CPPFLAGS $QT_CORE_INCLUDES" AC_CHECK_HEADER(QtGui/qtgui-config.h, [lyx_qt_config=QtGui/qtgui-config.h], [lyx_qt_config=qconfig.h]) - AC_MSG_CHECKING([whether Qt uses the X Window system]) - if test x$USE_QT6 = xyes ; then - dnl FIXME: Check whether defining QPA_XCB makes sense with Qt6 - AC_PREPROC_IFELSE([AC_LANG_SOURCE([ - [#include <$lyx_qt_config>] - [#if !defined(QT_FEATURE_xcb) || QT_FEATURE_xcb < 0] - [#error Fail] - [#endif]])], - [AC_MSG_RESULT(yes) - AC_DEFINE(QPA_XCB, 1, [Define if Qt uses the X Window System])], - [AC_MSG_RESULT(no)]) - else - AC_EGREP_CPP(xcb, - [#include <$lyx_qt_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)]) - fi CPPFLAGS=$save_CPPFLAGS QT_FIND_TOOL([QT_MOC], [moc]) diff --git a/src/frontends/qt/GuiApplication.cpp b/src/frontends/qt/GuiApplication.cpp index f7eabe276c..00648c1561 100644 --- a/src/frontends/qt/GuiApplication.cpp +++ b/src/frontends/qt/GuiApplication.cpp @@ -121,7 +121,7 @@ #include #include -#if defined(QPA_XCB) +#ifdef HAVE_XCB_XCB_H #include #ifdef HAVE_QT5_X11_EXTRAS #include @@ -1157,10 +1157,14 @@ GuiApplication::GuiApplication(int & argc, char ** argv) // Install Qt native translator for GUI elements. installTranslator(&d->qt_trans_); -#ifdef QPA_XCB - // Enable reception of XCB events. - installNativeEventFilter(this); + if (platformName() == "xcb") { +#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB) + // Enable reception of XCB events. + installNativeEventFilter(this); +#else + LYXERR0("Warning: X11 support is incomplete in this LyX binary."); #endif + } // FIXME: quitOnLastWindowClosed is true by default. We should have a // lyxrc setting for this in order to let the application stay resident. @@ -1181,13 +1185,13 @@ GuiApplication::GuiApplication(int & argc, char ** argv) this, SLOT(onApplicationStateChanged(Qt::ApplicationState))); #endif -#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 - // click interval for all applications. So we don't! - QApplication::setDoubleClickInterval(300); -#endif + if (platformName() == "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 + // click interval for all applications. So we don't! + QApplication::setDoubleClickInterval(300); + } connect(this, SIGNAL(lastWindowClosed()), this, SLOT(onLastWindowClosed())); @@ -3498,7 +3502,7 @@ bool GuiApplication::longOperationStarted() { // // X11 specific stuff goes here... -#if defined(QPA_XCB) +#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB) bool GuiApplication::nativeEventFilter(const QByteArray & eventType, void * message, QINTPTR *) { diff --git a/src/frontends/qt/GuiApplication.h b/src/frontends/qt/GuiApplication.h index 38c3c0a6e0..a2fce4d6fe 100644 --- a/src/frontends/qt/GuiApplication.h +++ b/src/frontends/qt/GuiApplication.h @@ -20,7 +20,7 @@ #include #include -#ifdef QPA_XCB +#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB) #include #endif @@ -53,7 +53,7 @@ There should be only one instance of this class. No Qt object initialisation should be done before the instantiation of this class. */ class GuiApplication : public QApplication, public Application -#ifdef QPA_XCB +#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB) , public QAbstractNativeEventFilter #endif { @@ -121,7 +121,7 @@ public: //@{ bool notify(QObject * receiver, QEvent * event) override; void commitData(QSessionManager & sm); -#if defined(QPA_XCB) +#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB) #if (QT_VERSION < 0x060000) #define QINTPTR long #else