mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-24 18:43:37 +00:00
Compare commits
No commits in common. "18c310a8cf60ebc8cab27aeea6fc0a6e1fcc7fcc" and "3bc4554e5762c3484477e1c590632756e3f310ad" have entirely different histories.
18c310a8cf
...
3bc4554e57
22
config/qt.m4
22
config/qt.m4
@ -217,15 +217,31 @@ 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])
|
||||
|
23
src/LyX.cpp
23
src/LyX.cpp
@ -127,6 +127,8 @@ namespace {
|
||||
string cl_system_support;
|
||||
string cl_user_support;
|
||||
|
||||
string geometryArg;
|
||||
|
||||
LyX * singleton_ = nullptr;
|
||||
|
||||
void showFileError(string const & error)
|
||||
@ -609,7 +611,7 @@ void LyX::execCommands()
|
||||
}
|
||||
|
||||
// create the first main window
|
||||
lyx::dispatch(FuncRequest(LFUN_WINDOW_NEW));
|
||||
lyx::dispatch(FuncRequest(LFUN_WINDOW_NEW, geometryArg));
|
||||
|
||||
if (!pimpl_->files_to_load_.empty()) {
|
||||
// if some files were specified at command-line we assume that the
|
||||
@ -1340,6 +1342,20 @@ int parse_import(string const & type, string const & file, string & batch)
|
||||
}
|
||||
|
||||
|
||||
int parse_geometry(string const & arg1, string const &, string &)
|
||||
{
|
||||
geometryArg = arg1;
|
||||
#if !defined(QPA_XCB)
|
||||
// don't remove "-geometry", it will be pruned out later in the
|
||||
// frontend if need be.
|
||||
return -1;
|
||||
#else
|
||||
// but that is only done if QPA_XCB is not defined.
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int parse_batch(string const &, string const &, string &)
|
||||
{
|
||||
use_gui = false;
|
||||
@ -1417,6 +1433,7 @@ void LyX::easyParse(int & argc, char * argv[])
|
||||
cmdmap["--export-to"] = parse_export_to;
|
||||
cmdmap["-i"] = parse_import;
|
||||
cmdmap["--import"] = parse_import;
|
||||
cmdmap["-geometry"] = parse_geometry;
|
||||
cmdmap["-batch"] = parse_batch;
|
||||
cmdmap["-f"] = parse_force;
|
||||
cmdmap["--force-overwrite"] = parse_force;
|
||||
@ -1429,10 +1446,6 @@ void LyX::easyParse(int & argc, char * argv[])
|
||||
cmdmap["--ignore-error-message"] = parse_ignore_error_message;
|
||||
|
||||
for (int i = 1; i < argc; ++i) {
|
||||
// Let Qt handle -geometry even when not on X11.
|
||||
if (from_utf8(argv[i]) == "-geometry")
|
||||
argv[i] = const_cast<char *>("-qwindowgeometry");
|
||||
|
||||
map<string, cmd_helper>::const_iterator it
|
||||
= cmdmap.find(argv[i]);
|
||||
|
||||
|
@ -121,7 +121,7 @@
|
||||
#include <QThreadPool>
|
||||
#include <QWidget>
|
||||
|
||||
#ifdef HAVE_XCB_XCB_H
|
||||
#if defined(QPA_XCB)
|
||||
#include <xcb/xcb.h>
|
||||
#ifdef HAVE_QT5_X11_EXTRAS
|
||||
#include <QtX11Extras/QX11Info>
|
||||
@ -172,6 +172,20 @@ namespace lyx {
|
||||
|
||||
frontend::Application * createApplication(int & argc, char * argv[])
|
||||
{
|
||||
#if !defined(QPA_XCB)
|
||||
// prune -geometry argument(s) by shifting
|
||||
// the following ones 2 places down.
|
||||
for (int i = 0 ; i < argc ; ++i) {
|
||||
if (strcmp(argv[i], "-geometry") == 0) {
|
||||
int const remove = (i+1) < argc ? 2 : 1;
|
||||
argc -= remove;
|
||||
for (int j = i; j < argc; ++j)
|
||||
argv[j] = argv[j + remove];
|
||||
--i;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
|
||||
// On Windows, allow bringing the LyX window to top
|
||||
AllowSetForegroundWindow(ASFW_ANY);
|
||||
@ -1157,14 +1171,10 @@ GuiApplication::GuiApplication(int & argc, char ** argv)
|
||||
// Install Qt native translator for GUI elements.
|
||||
installTranslator(&d->qt_trans_);
|
||||
|
||||
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.");
|
||||
#ifdef QPA_XCB
|
||||
// Enable reception of XCB events.
|
||||
installNativeEventFilter(this);
|
||||
#endif
|
||||
}
|
||||
|
||||
// FIXME: quitOnLastWindowClosed is true by default. We should have a
|
||||
// lyxrc setting for this in order to let the application stay resident.
|
||||
@ -1185,13 +1195,13 @@ GuiApplication::GuiApplication(int & argc, char ** argv)
|
||||
this, SLOT(onApplicationStateChanged(Qt::ApplicationState)));
|
||||
#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);
|
||||
}
|
||||
#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
|
||||
|
||||
connect(this, SIGNAL(lastWindowClosed()), this, SLOT(onLastWindowClosed()));
|
||||
|
||||
@ -3502,7 +3512,7 @@ bool GuiApplication::longOperationStarted() {
|
||||
//
|
||||
// X11 specific stuff goes here...
|
||||
|
||||
#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB)
|
||||
#if defined(QPA_XCB)
|
||||
bool GuiApplication::nativeEventFilter(const QByteArray & eventType,
|
||||
void * message, QINTPTR *)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
#include <QApplication>
|
||||
#include <QList>
|
||||
#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB)
|
||||
#ifdef QPA_XCB
|
||||
#include <QAbstractNativeEventFilter>
|
||||
#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
|
||||
#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB)
|
||||
#ifdef QPA_XCB
|
||||
, public QAbstractNativeEventFilter
|
||||
#endif
|
||||
{
|
||||
@ -121,7 +121,7 @@ public:
|
||||
//@{
|
||||
bool notify(QObject * receiver, QEvent * event) override;
|
||||
void commitData(QSessionManager & sm);
|
||||
#if defined(HAVE_XCB_XCB_H) && defined(HAVE_LIBXCB)
|
||||
#if defined(QPA_XCB)
|
||||
#if (QT_VERSION < 0x060000)
|
||||
#define QINTPTR long
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user