mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-28 12:26:59 +00:00
Compare commits
No commits in common. "16be88ca18719a98a555ced268431ca1040658b7" and "18c310a8cf60ebc8cab27aeea6fc0a6e1fcc7fcc" have entirely different histories.
16be88ca18
...
18c310a8cf
@ -812,6 +812,7 @@ if(LYX_USE_QT MATCHES "QT6|QT5")
|
|||||||
Qt5_wrap_ui(${ARGN})
|
Qt5_wrap_ui(${ARGN})
|
||||||
endmacro()
|
endmacro()
|
||||||
endif()
|
endif()
|
||||||
|
# set QPA_XCB if QT uses X11
|
||||||
find_package(${QtVal}Core CONFIG REQUIRED)
|
find_package(${QtVal}Core CONFIG REQUIRED)
|
||||||
if (${QtVal}Core_FOUND)
|
if (${QtVal}Core_FOUND)
|
||||||
find_package(${QtVal}Widgets CONFIG REQUIRED)
|
find_package(${QtVal}Widgets CONFIG REQUIRED)
|
||||||
@ -1185,7 +1186,6 @@ get_data_destination(dest_data)
|
|||||||
list(APPEND tmp_vi " LyX files dir: ${CMAKE_INSTALL_PREFIX}/${dest_data}")
|
list(APPEND tmp_vi " LyX files dir: ${CMAKE_INSTALL_PREFIX}/${dest_data}")
|
||||||
string(REPLACE ";" "\\n" VERSION_INFO "${tmp_vi}")
|
string(REPLACE ";" "\\n" VERSION_INFO "${tmp_vi}")
|
||||||
|
|
||||||
# the result XCB_LIBRARY will be used in src/CMakeLists.txt and also in configuring config.h
|
|
||||||
find_library(XCB_LIBRARY NAMES xcb)
|
find_library(XCB_LIBRARY NAMES xcb)
|
||||||
if (XCB_LIBRARY)
|
if (XCB_LIBRARY)
|
||||||
set(HAVE_LIBXCB 1 CACHE BOOL "" FORCE)
|
set(HAVE_LIBXCB 1 CACHE BOOL "" FORCE)
|
||||||
|
@ -275,6 +275,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(QPA_XCB)
|
||||||
set(HAVE_QT5_X11_EXTRAS)
|
set(HAVE_QT5_X11_EXTRAS)
|
||||||
set(HAVE_QT6_X11_EXTRAS)
|
set(HAVE_QT6_X11_EXTRAS)
|
||||||
if (LYX_USE_QT MATCHES "QT5|QT6")
|
if (LYX_USE_QT MATCHES "QT5|QT6")
|
||||||
@ -311,6 +312,10 @@ if (LYX_USE_QT MATCHES "QT5|QT6")
|
|||||||
}
|
}
|
||||||
"
|
"
|
||||||
QT_USES_X11)
|
QT_USES_X11)
|
||||||
|
if(QT_USES_X11 AND NOT LYX_USE_QT MATCHES "QT6")
|
||||||
|
set(QPA_XCB ${QT_USES_X11})
|
||||||
|
message(STATUS "Found QPA_XCB = ${QPA_XCB}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (${QtVal}X11Extras_FOUND)
|
if (${QtVal}X11Extras_FOUND)
|
||||||
|
@ -64,6 +64,9 @@
|
|||||||
|
|
||||||
#cmakedefine Z_PREFIX 1
|
#cmakedefine Z_PREFIX 1
|
||||||
|
|
||||||
|
// Defined if QT=QT5 uses X11
|
||||||
|
#cmakedefine QPA_XCB 1
|
||||||
|
|
||||||
// Define if you have the Qt5X11Extras module
|
// Define if you have the Qt5X11Extras module
|
||||||
#cmakedefine HAVE_QT5_X11_EXTRAS 1
|
#cmakedefine HAVE_QT5_X11_EXTRAS 1
|
||||||
|
|
||||||
|
@ -15,10 +15,6 @@
|
|||||||
|
|
||||||
!!!The following LyX functions have been changed in 2.5:
|
!!!The following LyX functions have been changed in 2.5:
|
||||||
|
|
||||||
- The funcion window_new does not take an optional <GEOMETRY>
|
|
||||||
parameter anymore. This only worked in windows and existed for
|
|
||||||
internal reasons.
|
|
||||||
|
|
||||||
!!!The following LyX functions have been removed in 2.5:
|
!!!The following LyX functions have been removed in 2.5:
|
||||||
|
|
||||||
!!!The following LyX function has been added and then removed in 2.5 development cycle:
|
!!!The following LyX function has been added and then removed in 2.5 development cycle:
|
||||||
|
@ -803,6 +803,7 @@ int Buffer::id() const
|
|||||||
|
|
||||||
void Buffer::updateId()
|
void Buffer::updateId()
|
||||||
{
|
{
|
||||||
|
++d->id_;
|
||||||
for(Buffer * b : allRelatives())
|
for(Buffer * b : allRelatives())
|
||||||
++(b->d->id_);
|
++(b->d->id_);
|
||||||
}
|
}
|
||||||
|
@ -661,11 +661,10 @@ public:
|
|||||||
///
|
///
|
||||||
Undo const & undo() const;
|
Undo const & undo() const;
|
||||||
|
|
||||||
/// Poor man versioning of the buffer (and its relatives).
|
/// poor man versioning of the buffer (and its relatives).
|
||||||
/// This is currently used by updateMacros() and Statistics::update().
|
|
||||||
int id() const;
|
int id() const;
|
||||||
/// change the id of this buffer and its relatives (indicating
|
/// change the id of this buffer and its relatives (indicating
|
||||||
/// something has changed).
|
/// something has changed). This is currently used by updateMacros().
|
||||||
void updateId();
|
void updateId();
|
||||||
|
|
||||||
/// This function is called when the buffer is changed.
|
/// This function is called when the buffer is changed.
|
||||||
|
@ -4417,7 +4417,9 @@ void LyXAction::init()
|
|||||||
* \var lyx::FuncCode lyx::LFUN_WINDOW_NEW
|
* \var lyx::FuncCode lyx::LFUN_WINDOW_NEW
|
||||||
* \li Action: Creates new empty LyX window.
|
* \li Action: Creates new empty LyX window.
|
||||||
* \li Notion: Already opened documents from the previous window can be found under View menu.
|
* \li Notion: Already opened documents from the previous window can be found under View menu.
|
||||||
* \li Syntax: window-new
|
* \li Syntax: window-new [<GEOMETRY>]
|
||||||
|
* \li Params: <GEOMETRY>: pass the geometry of the window. This parameter is currently
|
||||||
|
accepted only on Windows platform.
|
||||||
* \li Origin: Abdel, 21 Oct 2006
|
* \li Origin: Abdel, 21 Oct 2006
|
||||||
* \endvar
|
* \endvar
|
||||||
*/
|
*/
|
||||||
|
@ -4629,9 +4629,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
|
|||||||
int const n = (c == ' ' ? 4 : 1);
|
int const n = (c == ' ' ? 4 : 1);
|
||||||
for (int i = 0; i < n
|
for (int i = 0; i < n
|
||||||
&& !par.empty() && par.getChar(0) == c; ++i) {
|
&& !par.empty() && par.getChar(0) == c; ++i) {
|
||||||
if (cur.pit() == pit && cur.pos() > 0)
|
if (cur.pit() == pit)
|
||||||
cur.posBackward();
|
cur.posBackward();
|
||||||
if (cur.realAnchor().pit() == pit && cur.realAnchor().pos() > 0)
|
if (cur.realAnchor().pit() == pit
|
||||||
|
&& cur.realAnchor().pos() > 0 )
|
||||||
cur.realAnchor().backwardPos();
|
cur.realAnchor().backwardPos();
|
||||||
par.eraseChar(0, tc);
|
par.eraseChar(0, tc);
|
||||||
}
|
}
|
||||||
|
@ -1771,7 +1771,7 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
|
|||||||
switch (cmd.action()) {
|
switch (cmd.action()) {
|
||||||
|
|
||||||
case LFUN_WINDOW_NEW:
|
case LFUN_WINDOW_NEW:
|
||||||
createAndShowView();
|
createView(toqstr(cmd.argument()));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LFUN_WINDOW_CLOSE:
|
case LFUN_WINDOW_CLOSE:
|
||||||
@ -1811,7 +1811,7 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
|
|||||||
validateCurrentView();
|
validateCurrentView();
|
||||||
if (!current_view_
|
if (!current_view_
|
||||||
|| (!lyxrc.open_buffers_in_tabs && current_view_->documentBufferView() != nullptr)) {
|
|| (!lyxrc.open_buffers_in_tabs && current_view_->documentBufferView() != nullptr)) {
|
||||||
createView(); // keep hidden
|
createView(QString(), false); // keep hidden
|
||||||
current_view_->newDocument(to_utf8(cmd.argument()));
|
current_view_->newDocument(to_utf8(cmd.argument()));
|
||||||
current_view_->show();
|
current_view_->show();
|
||||||
current_view_->activateWindow();
|
current_view_->activateWindow();
|
||||||
@ -1826,7 +1826,7 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
|
|||||||
validateCurrentView();
|
validateCurrentView();
|
||||||
if (!current_view_
|
if (!current_view_
|
||||||
|| (!lyxrc.open_buffers_in_tabs && current_view_->documentBufferView() != nullptr)) {
|
|| (!lyxrc.open_buffers_in_tabs && current_view_->documentBufferView() != nullptr)) {
|
||||||
createAndShowView();
|
createView();
|
||||||
current_view_->newDocument(file, temp, true);
|
current_view_->newDocument(file, temp, true);
|
||||||
if (!current_view_->documentBufferView())
|
if (!current_view_->documentBufferView())
|
||||||
current_view_->close();
|
current_view_->close();
|
||||||
@ -1850,7 +1850,7 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
|
|||||||
&& !is_open)) {
|
&& !is_open)) {
|
||||||
// We want the ui session to be saved per document and not per
|
// We want the ui session to be saved per document and not per
|
||||||
// window number. The filename crc is a good enough identifier.
|
// window number. The filename crc is a good enough identifier.
|
||||||
createAndShowView(support::checksum(fname));
|
createView(support::checksum(fname));
|
||||||
current_view_->openDocuments(fname, cmd.origin());
|
current_view_->openDocuments(fname, cmd.origin());
|
||||||
if (!current_view_->documentBufferView())
|
if (!current_view_->documentBufferView())
|
||||||
current_view_->close();
|
current_view_->close();
|
||||||
@ -1873,7 +1873,7 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
|
|||||||
case LFUN_HELP_OPEN: {
|
case LFUN_HELP_OPEN: {
|
||||||
// FIXME: create a new method shared with LFUN_FILE_OPEN.
|
// FIXME: create a new method shared with LFUN_FILE_OPEN.
|
||||||
if (current_view_ == nullptr)
|
if (current_view_ == nullptr)
|
||||||
createAndShowView();
|
createView();
|
||||||
string const arg = to_utf8(cmd.argument());
|
string const arg = to_utf8(cmd.argument());
|
||||||
if (arg.empty()) {
|
if (arg.empty()) {
|
||||||
current_view_->message(_("Missing argument"));
|
current_view_->message(_("Missing argument"));
|
||||||
@ -2263,7 +2263,7 @@ void GuiApplication::dispatch(FuncRequest const & cmd, DispatchResult & dr)
|
|||||||
|| name == "progress" || name == "texinfo")
|
|| name == "progress" || name == "texinfo")
|
||||||
{
|
{
|
||||||
if (current_view_ == nullptr)
|
if (current_view_ == nullptr)
|
||||||
createAndShowView();
|
createView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// fall through
|
// fall through
|
||||||
@ -2572,13 +2572,14 @@ bool GuiApplication::rtlContext() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GuiApplication::createAndShowView(int view_id)
|
void GuiApplication::createView(int view_id)
|
||||||
{
|
{
|
||||||
createView(true, view_id);
|
createView(QString(), true, view_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GuiApplication::createView(bool autoShow, int view_id)
|
void GuiApplication::createView(QString const & geometry_arg, bool autoShow,
|
||||||
|
int view_id)
|
||||||
{
|
{
|
||||||
// release the keyboard which might have been grabbed by the global
|
// release the keyboard which might have been grabbed by the global
|
||||||
// menubar on Mac to catch shortcuts even without any GuiView.
|
// menubar on Mac to catch shortcuts even without any GuiView.
|
||||||
@ -2602,6 +2603,44 @@ void GuiApplication::createView(bool autoShow, int view_id)
|
|||||||
view->activateWindow();
|
view->activateWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!geometry_arg.isEmpty()) {
|
||||||
|
#if defined(Q_OS_WIN) || defined(Q_CYGWIN_WIN)
|
||||||
|
int x, y;
|
||||||
|
int w, h;
|
||||||
|
QChar sx, sy;
|
||||||
|
QRegularExpression re( "[=]*(?:([0-9]+)[xX]([0-9]+)){0,1}[ ]*(?:([+-][0-9]*)){0,1}(?:([+-][0-9]*)){0,1}" );
|
||||||
|
QRegularExpressionMatch match = re.match(geometry_arg);
|
||||||
|
w = match.captured(1).toInt();
|
||||||
|
h = match.captured(2).toInt();
|
||||||
|
x = match.captured(3).toInt();
|
||||||
|
y = match.captured(4).toInt();
|
||||||
|
sx = match.captured(3).isEmpty() ? '+' : match.captured(3).at(0);
|
||||||
|
sy = match.captured(4).isEmpty() ? '+' : match.captured(4).at(0);
|
||||||
|
|
||||||
|
// Set initial geometry such that we can get the frame size.
|
||||||
|
view->setGeometry(x, y, w, h);
|
||||||
|
int framewidth = view->geometry().x() - view->x();
|
||||||
|
int titleheight = view->geometry().y() - view->y();
|
||||||
|
// Negative displacements must be interpreted as distances
|
||||||
|
// from the right or bottom screen borders.
|
||||||
|
if (sx == '-' || sy == '-') {
|
||||||
|
QRect rec = QGuiApplication::primaryScreen()->geometry();
|
||||||
|
if (sx == '-')
|
||||||
|
x += rec.width() - w - framewidth;
|
||||||
|
if (sy == '-')
|
||||||
|
y += rec.height() - h - titleheight;
|
||||||
|
view->setGeometry(x, y, w, h);
|
||||||
|
}
|
||||||
|
// Make sure that the left and top frame borders are visible.
|
||||||
|
if (view->x() < 0 || view->y() < 0) {
|
||||||
|
if (view->x() < 0)
|
||||||
|
x = framewidth;
|
||||||
|
if (view->y() < 0)
|
||||||
|
y = titleheight;
|
||||||
|
view->setGeometry(x, y, w, h);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
view->setFocus();
|
view->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2861,7 +2900,7 @@ void GuiApplication::restoreGuiSession()
|
|||||||
if (!current_view_ || (!lyxrc.open_buffers_in_tabs
|
if (!current_view_ || (!lyxrc.open_buffers_in_tabs
|
||||||
&& current_view_->documentBufferView() != nullptr)) {
|
&& current_view_->documentBufferView() != nullptr)) {
|
||||||
string const & fname = file_name.absFileName();
|
string const & fname = file_name.absFileName();
|
||||||
createAndShowView(support::checksum(fname));
|
createView(support::checksum(fname));
|
||||||
}
|
}
|
||||||
current_view_->loadDocument(file_name, false);
|
current_view_->loadDocument(file_name, false);
|
||||||
|
|
||||||
@ -3430,7 +3469,7 @@ void GuiApplication::onApplicationStateChanged(Qt::ApplicationState state)
|
|||||||
/// cmd+tab only one QEvent::ApplicationStateChangeEvent event
|
/// cmd+tab only one QEvent::ApplicationStateChangeEvent event
|
||||||
if (d->views_.empty() && d->last_state_ == state) {
|
if (d->views_.empty() && d->last_state_ == state) {
|
||||||
LYXERR(Debug::GUI, "Open new window...");
|
LYXERR(Debug::GUI, "Open new window...");
|
||||||
createAndShowView();
|
createView();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -132,12 +132,13 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/// Create the main window
|
/// Create the main window with given geometry settings.
|
||||||
/// \param autoShow: show the created window
|
/// \param geometry_arg: only for Windows platform.
|
||||||
/// \param id: optional identifier.
|
/// \param optional id identifier.
|
||||||
void createView(bool autoShow = false, int id = 0);
|
void createView(QString const & geometry_arg = QString(),
|
||||||
/// Same as createView, but with \c autoShow = true
|
bool autoShow = true, int id = 0);
|
||||||
void createAndShowView(int id = 0);
|
/// FIXME: this method and the one above are quite ugly.
|
||||||
|
void createView(int id);
|
||||||
///
|
///
|
||||||
GuiView const * currentView() const { return current_view_; }
|
GuiView const * currentView() const { return current_view_; }
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user