Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts: examples/opengl/qopenglwidget/main.cpp src/3rdparty/pcre2/src/pcre2_printint.c src/plugins/platforms/cocoa/qnsview.mm src/widgets/widgets/qcombobox.cpp Change-Id: I37ced9da1e8056f95851568bcc52cd5dc34f56af
This commit is contained in:
commit
19dd2ca93b
@ -144,6 +144,7 @@ Build options:
|
||||
-ltcg ................ Use Link Time Code Generation [no]
|
||||
-use-gold-linker ..... Use the GNU gold linker [auto]
|
||||
-incredibuild-xge .... Use the IncrediBuild XGE [no] (Windows only)
|
||||
-ccache .............. Use the ccache compiler cache [no] (Unix only)
|
||||
-make-tool <tool> .... Use <tool> to build qmake [nmake] (Windows only)
|
||||
-mp .................. Use multiple processors for compilation (MSVC only)
|
||||
|
||||
|
@ -61,6 +61,7 @@
|
||||
"avx2": "boolean",
|
||||
"avx512": { "type": "boolean", "name": "avx512f" },
|
||||
"c++std": "cxxstd",
|
||||
"ccache": { "type": "boolean", "name": "ccache" },
|
||||
"commercial": "void",
|
||||
"compile-examples": { "type": "boolean", "name": "compile_examples" },
|
||||
"confirm-license": "void",
|
||||
@ -635,6 +636,11 @@
|
||||
"label": "IncrediBuild",
|
||||
"type": "files",
|
||||
"files": [ "BuildConsole.exe", "xgConsole.exe" ]
|
||||
},
|
||||
"ccache": {
|
||||
"label": "ccache",
|
||||
"type": "files",
|
||||
"files": [ "ccache" ]
|
||||
}
|
||||
},
|
||||
|
||||
@ -1246,6 +1252,12 @@
|
||||
"condition": "tests.incredibuild_xge",
|
||||
"output": [ "publicConfig" ]
|
||||
},
|
||||
"ccache": {
|
||||
"label": "Using ccache",
|
||||
"autoDetect": false,
|
||||
"condition": "config.unix && tests.ccache",
|
||||
"output": [ "privateConfig" ]
|
||||
},
|
||||
"msvc_mp": {
|
||||
"label": "Use multiple processors when compiling with MSVC",
|
||||
"emitIf": "config.msvc",
|
||||
@ -1353,6 +1365,11 @@ Configure with '-qreal float' to create a build that is binary-compatible with 5
|
||||
"type": "firstAvailableFeature",
|
||||
"args": "c++1z c++14 c++11"
|
||||
},
|
||||
{
|
||||
"type": "feature",
|
||||
"args": "ccache",
|
||||
"condition": "config.unix"
|
||||
},
|
||||
"use_gold_linker",
|
||||
{
|
||||
"type": "feature",
|
||||
|
288
dist/changes-5.6.3
vendored
Normal file
288
dist/changes-5.6.3
vendored
Normal file
@ -0,0 +1,288 @@
|
||||
Qt 5.6.3 is a bug-fix release. It maintains both forward and backward
|
||||
compatibility (source and binary) with previous Qt 5.6.x releases.
|
||||
|
||||
For more details, refer to the online documentation included in this
|
||||
distribution. The documentation is also available online:
|
||||
|
||||
http://doc.qt.io/qt-5/index.html
|
||||
|
||||
The Qt version 5.6 series is binary compatible with the 5.5.x series.
|
||||
Applications compiled for 5.5 will continue to run with 5.6.
|
||||
|
||||
Some of the changes listed in this file include issue tracking numbers
|
||||
corresponding to tasks in the Qt Bug Tracker:
|
||||
|
||||
https://bugreports.qt.io/
|
||||
|
||||
Each of these identifiers can be entered in the bug tracker to obtain more
|
||||
information about a particular change.
|
||||
|
||||
*****************************************************************************
|
||||
* License Changes *
|
||||
*****************************************************************************
|
||||
|
||||
- Static libraries that are linked into executables (winmain and
|
||||
qopenglextensions) are now licensed under BSD _and_ commercial licenses.
|
||||
|
||||
******************************************************************************
|
||||
* Important Behavior Changes *
|
||||
******************************************************************************
|
||||
|
||||
- QPluginLoader:
|
||||
* [QTBUG-49061] QPluginLoader no longer performs the actual unloading of
|
||||
the plugin either on destruction or when unload() is called. This does
|
||||
not affect QLibrary and QLibrary::unload().
|
||||
|
||||
******************************************************************************
|
||||
* Library *
|
||||
******************************************************************************
|
||||
|
||||
QtCore
|
||||
------
|
||||
|
||||
- QDir:
|
||||
* [QTBUG-58390] Fixed the implementation of mkpath() to not attempt to
|
||||
mkdir directories that already exist, especially those in automount
|
||||
filesystems (like /home).
|
||||
|
||||
- QHash / QMultiHash:
|
||||
* [QTBUG-60395] Fixed a bug that caused operator== not to return true if
|
||||
two containers had the elements with duplicate keys but in different
|
||||
order.
|
||||
|
||||
- QLocale:
|
||||
* [QTBUG-59159] Fixed the parsing of day-of-week names that start with the
|
||||
name of another day.
|
||||
|
||||
- QObject:
|
||||
* [QTBUG-59500] disconnectNotify() is now called when a connection is
|
||||
disconnected using its QMetaObject::Connection handle.
|
||||
* [QTBUG-52439] Fixed a bug that would cause applications compiled with the
|
||||
Intel compiler to fail to connect signals and slots.
|
||||
|
||||
- QUrl:
|
||||
* [QTBUG-60364] Fixed a bug that caused certain domain names that look
|
||||
like Internationalized Domain Names to become corrupt in decoded forms
|
||||
of QUrl, notably toString() and toDisplayString().
|
||||
* Updated the table of valid top level domains
|
||||
|
||||
- QVarLengthArray:
|
||||
* Fixed a bug involving appending an item already in the container to
|
||||
the container again.
|
||||
* [QTBUG-57277] Fixed a crash when initializing the array with an empty
|
||||
std::initializer_list.
|
||||
|
||||
QtSql
|
||||
-----
|
||||
|
||||
- MySql
|
||||
* Fixed the build of MySql plugin with MySql 5.0
|
||||
* [QTBUG-53397] Fixed the parsing of tinyint(1) when used via prepared
|
||||
statements.
|
||||
|
||||
- PostgreSQL:
|
||||
* [QTBUG-59524] Fixed datetime formats when the system locale doesn't use
|
||||
arabic numerals
|
||||
|
||||
QtDBus
|
||||
------
|
||||
|
||||
- QDBusServer
|
||||
* [QTBUG-55087] Fixed a bug causing certain messages that arrive soon after
|
||||
the client connects not to be processed.
|
||||
|
||||
QtNetwork
|
||||
---------
|
||||
|
||||
- QNetworkInterface
|
||||
* Fixed the reporting of virtual interfaces on Linux.
|
||||
|
||||
- QSslSocket
|
||||
* [QTBUG-43388][QTBUG-55170] Fixed a bug that caused the read buffer's max
|
||||
size not to be respected when using SecureTransport
|
||||
* [QTBUG-49554] Made sure that the QSslConfiguration is up-to-date when the
|
||||
QNetworkReply::encrypted() signal is emitted.
|
||||
|
||||
QtGui
|
||||
-----
|
||||
|
||||
- Various fixes to our high DPI support.
|
||||
|
||||
- CSS parser:
|
||||
* [QTBUG-53919] Fixed a crash while parsing malformed CSS.
|
||||
|
||||
- PDF writer:
|
||||
* [QTBUG-56489] Monochrome images are now handled correctly.
|
||||
|
||||
- QImage:
|
||||
* Fixed a crash when rendering to GrayScale8 images.
|
||||
* [QTBUG-56252] Fixed an illegal memory access when rotating images.
|
||||
* [QTBUG-59211] Improved rejection of corrupt images with invalid header
|
||||
info.
|
||||
|
||||
- QMatrix4x4:
|
||||
* operator*=() now calculates the correct result even if the RHS and LHS
|
||||
are the same object.
|
||||
|
||||
- QPainter
|
||||
* [QTBUG-14614] Fixed a read-after-free when using gradients.
|
||||
* [QTBUG-56969] Fixed painting artifacts for certain dashed lines.
|
||||
|
||||
- Text:
|
||||
* [QTBUG-55222] Always return a correct list of fallback fonts
|
||||
* [QTBUG-55255][QTBUG-56714] Trailing whitespace are now properly taken
|
||||
into account when shaping lines
|
||||
* [QTBUG-53911] Fixed a crash that could happen if you were doing many
|
||||
different text layouts with different fonts and superscript or
|
||||
subscript alignment.
|
||||
* [QTBUG-56659] Fixed a regression where raster fonts on Windows were
|
||||
detected as smoothly scalable and thus rendering with said fonts in Qt
|
||||
Quick would break.
|
||||
* [QTBUG-51223] Fixed synthesized oblique for non-latin text on
|
||||
platforms using the basic font database, such as Android.
|
||||
* [QTBUG-56714] Fixed a bug where a no-break space would sometimes cause
|
||||
the first character of the containing line to not be displayed.
|
||||
* [QTBUG-48005] Fixed clipping errors and too small bounding rects for
|
||||
some right-to-left text.
|
||||
* [QTBUG-57241] Fixed a crash for very tall glyphs.
|
||||
* [QTBUG-55569] Fixed Myanmar rendering with some fonts.
|
||||
* [QTBUG-56659] Fixed the reporting of whether fonts are smoothly scalable
|
||||
on Windows.
|
||||
* [QTBUG-58364][QTBUG-42074][QTBUG-57003] Formatting characters are now
|
||||
accepted as valid input.
|
||||
|
||||
QtWidgets
|
||||
---------
|
||||
|
||||
- Input:
|
||||
* [QTBUG-42074][QTBUG-57003] Characters in Private Use Area, as well as
|
||||
zero-width joiners and zero-width non-joiners are now accepted as input
|
||||
in QLineEdit and QTextEdit.
|
||||
|
||||
- QDockWidget:
|
||||
* [QTBUG-7460][QTBUG-52354] Size of widgets no longer changed just because
|
||||
they are in a floating dock.
|
||||
* [QTBUG-58036] Dock widgets now have the correct parent after a drag.
|
||||
* [QTBUG-58049] Fixed clearing the dock indicator when not over a floating
|
||||
dock group window.
|
||||
|
||||
- QMainWindow:
|
||||
* [QTBUG-56628] Fixed crash using takeCentralWidget when the central
|
||||
widget was not set.
|
||||
|
||||
- QPixmapStyle:
|
||||
* Now handles progress bars with minimum != 0 correctly.
|
||||
|
||||
- QPopup
|
||||
* [QTBUG-57292] Popups blocked by modal dialogs are now properly closed.
|
||||
|
||||
- QTextEdit
|
||||
* [QTBUG-55758] Placeholder text is no longer shown while composing text.
|
||||
|
||||
- QTooltip:
|
||||
* [QTBUG-55523] QTooltip is now properly hidden when a close event is
|
||||
received.
|
||||
* [QTBUG-55523] Tooltips no longer prevent closing of the app on
|
||||
lastWindowClosed()
|
||||
|
||||
- QWidget:
|
||||
* [QTBUG-50589] Show and hide events are now properly sent to children on
|
||||
minimize/restore.
|
||||
* [QTBUG-53068] Fixed enter/leave events on popup menus.
|
||||
|
||||
- Style sheets:
|
||||
* [QTBUG-55597] Now honors the font set on HeaderView section.
|
||||
|
||||
******************************************************************************
|
||||
* Platform-specific Changes *
|
||||
******************************************************************************
|
||||
|
||||
Android
|
||||
-------
|
||||
|
||||
- [QTBUG-44697] Removed old work-around which was causing OpenGL shader
|
||||
compilation to fail on updated Android emulators.
|
||||
|
||||
Darwin
|
||||
------
|
||||
|
||||
- [QTBUG-61034] QT_NO_EXCEPTIONS is now correctly set for Objective C++
|
||||
source files.
|
||||
- [QTBUG-57165] Made QDir::tempPath() return the same directory as
|
||||
NSTemporaryDirectory, instead of a hardcoded "/tmp".
|
||||
- [QTBUG-55896] Fixed a bug that would cause QFileSystemWatcher to fail to
|
||||
watch certain paths containing non-ASCII characters.
|
||||
- [QTBUG-56124] Fixed a bug that would cause data corruption in QSettings
|
||||
when storing QStrings containing NULs, when storing to native format.
|
||||
|
||||
- iOS specific:
|
||||
* Starting from iOS 10, Apple requires all apps that need access to photos
|
||||
to have the key 'NSPhotoLibraryUsageDescription' in the Info.plist.
|
||||
Therefore, to get the same support in Qt (when, e.g., using a file
|
||||
dialog), the Info.plist assigned to QMAKE_INFO_PLIST will need this key
|
||||
as well.
|
||||
* [QTBUG-49893] The shortcuts bar on iPad is now hidden when showing menus.
|
||||
|
||||
- macOS specific:
|
||||
* Speech to text dictation now works for Qt text input.
|
||||
* Various bug fixes to menu bar handling.
|
||||
|
||||
QNX
|
||||
---
|
||||
|
||||
- Qt can now handle more than 256 file descriptors open in the same process,
|
||||
up to a limit of 1000.
|
||||
|
||||
WinRT
|
||||
-----
|
||||
|
||||
- Various fixes in our event and timer handling.
|
||||
|
||||
X11
|
||||
---
|
||||
|
||||
- [QTBUG-55942] Qt::WindowNoState event is no longer sent when hiding
|
||||
minimized windows.
|
||||
- [QTBUG-49645] Fixed keyboard modifier state for drops from external apps.
|
||||
- [QTBUG-48795] Fixed the keyboard state when processing key events.
|
||||
|
||||
******************************************************************************
|
||||
* Compiler Specific Changes *
|
||||
******************************************************************************
|
||||
|
||||
Visual Studio
|
||||
-------------
|
||||
|
||||
- Visual Studio 2017 is now supported.
|
||||
- [QTBUG-56594] PDB files are now properly generated even for static builds.
|
||||
|
||||
******************************************************************************
|
||||
* Tools *
|
||||
******************************************************************************
|
||||
|
||||
configure
|
||||
---------
|
||||
|
||||
- Fixed builds that explicitly asked for -sdk iphoneos.
|
||||
- [QTBUG-56388] Fixed the detection of the Microsoft compiler version when
|
||||
the CL environment variable was set or when the compiler was configured to
|
||||
another language (other than English).
|
||||
|
||||
qmake
|
||||
-----
|
||||
|
||||
- [QTBUG-55505] Fixed an issue with iOS when the project path had a
|
||||
whitespace.
|
||||
- [QTBUG-56289] When cross-compiling on Windows to Unix targets, qmake no
|
||||
longer generates chmod calls.
|
||||
- [QTBUG-53905] Fixed qmake not to run moc twice on Objective C++ sources
|
||||
listed in the OBJECTIVE_SOURCES variable.
|
||||
- [QTBUG-56507] Fixed builds where a lex source refers to a file generated
|
||||
by yacc.
|
||||
- [QTBUG-57090][Darwin] Fixed the installation of asset catalog files.
|
||||
|
||||
qdbusxml2cpp
|
||||
------------
|
||||
|
||||
- [QTBUG-21577] Fixed the generation of signals when the direction argument
|
||||
was inverted from expected.
|
@ -54,6 +54,8 @@
|
||||
#include <QCoreApplication>
|
||||
#include <math.h>
|
||||
|
||||
bool GLWidget::m_transparent = false;
|
||||
|
||||
GLWidget::GLWidget(QWidget *parent)
|
||||
: QOpenGLWidget(parent),
|
||||
m_xRot(0),
|
||||
@ -61,10 +63,9 @@ GLWidget::GLWidget(QWidget *parent)
|
||||
m_zRot(0),
|
||||
m_program(0)
|
||||
{
|
||||
m_core = QCoreApplication::arguments().contains(QStringLiteral("--coreprofile"));
|
||||
m_core = QSurfaceFormat::defaultFormat().profile() == QSurfaceFormat::CoreProfile;
|
||||
// --transparent causes the clear color to be transparent. Therefore, on systems that
|
||||
// support it, the widget will become transparent apart from the logo.
|
||||
m_transparent = QCoreApplication::arguments().contains(QStringLiteral("--transparent"));
|
||||
if (m_transparent) {
|
||||
QSurfaceFormat fmt = format();
|
||||
fmt.setAlphaBufferSize(8);
|
||||
@ -127,6 +128,8 @@ void GLWidget::setZRotation(int angle)
|
||||
|
||||
void GLWidget::cleanup()
|
||||
{
|
||||
if (m_program == nullptr)
|
||||
return;
|
||||
makeCurrent();
|
||||
m_logoVbo.destroy();
|
||||
delete m_program;
|
||||
|
@ -68,6 +68,9 @@ public:
|
||||
GLWidget(QWidget *parent = 0);
|
||||
~GLWidget();
|
||||
|
||||
static bool isTransparent() { return m_transparent; }
|
||||
static void setTransparent(bool t) { m_transparent = t; }
|
||||
|
||||
QSize minimumSizeHint() const override;
|
||||
QSize sizeHint() const override;
|
||||
|
||||
@ -108,7 +111,7 @@ private:
|
||||
QMatrix4x4 m_proj;
|
||||
QMatrix4x4 m_camera;
|
||||
QMatrix4x4 m_world;
|
||||
bool m_transparent;
|
||||
static bool m_transparent;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -51,25 +51,46 @@
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
#include <QSurfaceFormat>
|
||||
#include <QCommandLineParser>
|
||||
#include <QCommandLineOption>
|
||||
|
||||
#include "glwidget.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
QCoreApplication::setApplicationName("Qt Hello GL 2 Example");
|
||||
QCoreApplication::setOrganizationName("QtProject");
|
||||
QCoreApplication::setApplicationVersion(QT_VERSION_STR);
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription(QCoreApplication::applicationName());
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
QCommandLineOption multipleSampleOption("multisample", "Multisampling");
|
||||
parser.addOption(multipleSampleOption);
|
||||
QCommandLineOption coreProfileOption("coreprofile", "Use core profile");
|
||||
parser.addOption(coreProfileOption);
|
||||
QCommandLineOption transparentOption("transparent", "Transparent window");
|
||||
parser.addOption(transparentOption);
|
||||
|
||||
parser.process(app);
|
||||
|
||||
QSurfaceFormat fmt;
|
||||
fmt.setDepthBufferSize(24);
|
||||
if (QCoreApplication::arguments().contains(QStringLiteral("--multisample")))
|
||||
if (parser.isSet(multipleSampleOption))
|
||||
fmt.setSamples(4);
|
||||
if (QCoreApplication::arguments().contains(QStringLiteral("--coreprofile"))) {
|
||||
if (parser.isSet(coreProfileOption)) {
|
||||
fmt.setVersion(3, 2);
|
||||
fmt.setProfile(QSurfaceFormat::CoreProfile);
|
||||
}
|
||||
QSurfaceFormat::setDefaultFormat(fmt);
|
||||
|
||||
MainWindow mainWindow;
|
||||
if (QCoreApplication::arguments().contains(QStringLiteral("--transparent"))) {
|
||||
|
||||
GLWidget::setTransparent(parser.isSet(transparentOption));
|
||||
if (GLWidget::isTransparent()) {
|
||||
mainWindow.setAttribute(Qt::WA_TranslucentBackground);
|
||||
mainWindow.setAttribute(Qt::WA_NoSystemBackground, false);
|
||||
}
|
||||
|
@ -52,6 +52,8 @@
|
||||
|
||||
#include <qpa/qplatformintegration.h>
|
||||
|
||||
#include <QCommandLineParser>
|
||||
#include <QCommandLineOption>
|
||||
#include <QGuiApplication>
|
||||
#include <QScreen>
|
||||
#include <QThread>
|
||||
@ -60,9 +62,26 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QCoreApplication::setApplicationName("Qt HelloWindow GL Example");
|
||||
QCoreApplication::setOrganizationName("QtProject");
|
||||
QCoreApplication::setApplicationVersion(QT_VERSION_STR);
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription(QCoreApplication::applicationName());
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
QCommandLineOption multipleOption("multiple", "Create multiple windows");
|
||||
parser.addOption(multipleOption);
|
||||
QCommandLineOption multipleSampleOption("multisample", "Multisampling");
|
||||
parser.addOption(multipleSampleOption);
|
||||
QCommandLineOption multipleScreenOption("multiscreen", "Run on multiple screens");
|
||||
parser.addOption(multipleScreenOption);
|
||||
QCommandLineOption timeoutOption("timeout", "Close after 10s");
|
||||
parser.addOption(timeoutOption);
|
||||
parser.process(app);
|
||||
|
||||
// Some platforms can only have one window per screen. Therefore we need to differentiate.
|
||||
const bool multipleWindows = QGuiApplication::arguments().contains(QStringLiteral("--multiple"));
|
||||
const bool multipleScreens = QGuiApplication::arguments().contains(QStringLiteral("--multiscreen"));
|
||||
const bool multipleWindows = parser.isSet(multipleOption);
|
||||
const bool multipleScreens = parser.isSet(multipleScreenOption);
|
||||
|
||||
QScreen *screen = QGuiApplication::primaryScreen();
|
||||
|
||||
@ -70,7 +89,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
QSurfaceFormat format;
|
||||
format.setDepthBufferSize(16);
|
||||
if (QGuiApplication::arguments().contains(QStringLiteral("--multisample")))
|
||||
if (parser.isSet(multipleSampleOption))
|
||||
format.setSamples(4);
|
||||
|
||||
QPoint center = QPoint(screenGeometry.center().x(), screenGeometry.top() + 80);
|
||||
@ -136,7 +155,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
// Quit after 10 seconds. For platforms that do not have windows that are closeable.
|
||||
if (QCoreApplication::arguments().contains(QStringLiteral("--timeout")))
|
||||
if (parser.isSet(timeoutOption))
|
||||
QTimer::singleShot(10000, qGuiApp, &QCoreApplication::quit);
|
||||
|
||||
const int exitValue = app.exec();
|
||||
|
@ -51,6 +51,8 @@
|
||||
#include <QApplication>
|
||||
#include <QMainWindow>
|
||||
#include <QSurfaceFormat>
|
||||
#include <QCommandLineParser>
|
||||
#include <QCommandLineOption>
|
||||
#include "mainwindow.h"
|
||||
|
||||
int main( int argc, char ** argv )
|
||||
@ -58,12 +60,25 @@ int main( int argc, char ** argv )
|
||||
Q_INIT_RESOURCE(texture);
|
||||
QApplication a( argc, argv );
|
||||
|
||||
QCoreApplication::setApplicationName("Qt QOpenGLWidget Example");
|
||||
QCoreApplication::setOrganizationName("QtProject");
|
||||
QCoreApplication::setApplicationVersion(QT_VERSION_STR);
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription(QCoreApplication::applicationName());
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
QCommandLineOption multipleSampleOption("multisample", "Multisampling");
|
||||
parser.addOption(multipleSampleOption);
|
||||
QCommandLineOption srgbOption("srgb", "Use sRGB Color Space");
|
||||
parser.addOption(srgbOption);
|
||||
parser.process(a);
|
||||
|
||||
QSurfaceFormat format;
|
||||
format.setDepthBufferSize(24);
|
||||
format.setStencilBufferSize(8);
|
||||
if (QCoreApplication::arguments().contains(QStringLiteral("--srgb")))
|
||||
if (parser.isSet(srgbOption))
|
||||
format.setColorSpace(QSurfaceFormat::sRGBColorSpace);
|
||||
if (QCoreApplication::arguments().contains(QStringLiteral("--multisample")))
|
||||
if (parser.isSet(multipleSampleOption))
|
||||
format.setSamples(4);
|
||||
QSurfaceFormat::setDefaultFormat(format);
|
||||
|
||||
|
@ -53,6 +53,8 @@
|
||||
#include <QDesktopWidget>
|
||||
#include <QSurfaceFormat>
|
||||
#include <QOpenGLContext>
|
||||
#include <QCommandLineParser>
|
||||
#include <QCommandLineOption>
|
||||
#include "mainwindow.h"
|
||||
#include "glwidget.h"
|
||||
|
||||
@ -67,6 +69,17 @@ int main( int argc, char ** argv )
|
||||
{
|
||||
QApplication a( argc, argv );
|
||||
|
||||
QCoreApplication::setApplicationName("Qt Threaded QOpenGLWidget Example");
|
||||
QCoreApplication::setOrganizationName("QtProject");
|
||||
QCoreApplication::setApplicationVersion(QT_VERSION_STR);
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription(QCoreApplication::applicationName());
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
QCommandLineOption singleOption("single", "Single thread");
|
||||
parser.addOption(singleOption);
|
||||
parser.process(a);
|
||||
|
||||
QSurfaceFormat format;
|
||||
format.setDepthBufferSize(16);
|
||||
QSurfaceFormat::setDefaultFormat(format);
|
||||
@ -93,7 +106,7 @@ int main( int argc, char ** argv )
|
||||
|
||||
QScopedPointer<MainWindow> mw1;
|
||||
QScopedPointer<MainWindow> mw2;
|
||||
if (!QApplication::arguments().contains(QStringLiteral("--single"))) {
|
||||
if (!parser.isSet(singleOption)) {
|
||||
if (supportsThreading) {
|
||||
pos += QPoint(100, 100);
|
||||
mw1.reset(new MainWindow);
|
||||
|
19
mkspecs/features/unix/ccache.prf
Normal file
19
mkspecs/features/unix/ccache.prf
Normal file
@ -0,0 +1,19 @@
|
||||
macx-xcode: return()
|
||||
|
||||
darwin: load(sdk)
|
||||
|
||||
ccache_prefix = ccache
|
||||
|
||||
precompile_header {
|
||||
CCACHE_SLOPPINESS += pch_defines time_macros
|
||||
|
||||
ccache_prefix = \
|
||||
CCACHE_SLOPPINESS=\"$$join(CCACHE_SLOPPINESS, ',')\$${CCACHE_SLOPPINESS+,\$$CCACHE_SLOPPINESS}\" \
|
||||
# Make sure we build sources directly, not from their preprocessed version,
|
||||
# otherwise precompiled headers will not be used during cache misses.
|
||||
CCACHE_CPP2=true \
|
||||
$$ccache_prefix
|
||||
}
|
||||
|
||||
for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_LINK QMAKE_LINK_SHLIB QMAKE_LINK_C)): \
|
||||
$$tool = $$ccache_prefix $$eval($$tool)
|
@ -100,7 +100,6 @@ FILES="
|
||||
src/pcre2_newline.c
|
||||
src/pcre2_ord2utf.c
|
||||
src/pcre2_pattern_info.c
|
||||
src/pcre2_printint.c
|
||||
src/pcre2_serialize.c
|
||||
src/pcre2_string_utils.c
|
||||
src/pcre2_study.c
|
||||
|
3
src/3rdparty/pcre2/pcre2.pro
vendored
3
src/3rdparty/pcre2/pcre2.pro
vendored
@ -15,7 +15,7 @@ load(qt_helper_lib)
|
||||
DEFINES += HAVE_CONFIG_H
|
||||
|
||||
# platform/compiler specific definitions
|
||||
ios|qnx|winrt: DEFINES += PCRE2_DISABLE_JIT
|
||||
uikit|qnx|winrt: DEFINES += PCRE2_DISABLE_JIT
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/src/pcre2_auto_possess.c \
|
||||
@ -33,7 +33,6 @@ SOURCES += \
|
||||
$$PWD/src/pcre2_newline.c \
|
||||
$$PWD/src/pcre2_ord2utf.c \
|
||||
$$PWD/src/pcre2_pattern_info.c \
|
||||
$$PWD/src/pcre2_printint.c \
|
||||
$$PWD/src/pcre2_serialize.c \
|
||||
$$PWD/src/pcre2_string_utils.c \
|
||||
$$PWD/src/pcre2_study.c \
|
||||
|
831
src/3rdparty/pcre2/src/pcre2_printint.c
vendored
831
src/3rdparty/pcre2/src/pcre2_printint.c
vendored
@ -1,831 +0,0 @@
|
||||
/*************************************************
|
||||
* Perl-Compatible Regular Expressions *
|
||||
*************************************************/
|
||||
|
||||
/* PCRE is a library of functions to support regular expressions whose syntax
|
||||
and semantics are as close as possible to those of the Perl 5 language.
|
||||
|
||||
Written by Philip Hazel
|
||||
Original API code Copyright (c) 1997-2012 University of Cambridge
|
||||
New API code Copyright (c) 2016-2017 University of Cambridge
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the University of Cambridge nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
/* This module contains a PCRE private debugging function for printing out the
|
||||
internal form of a compiled regular expression, along with some supporting
|
||||
local functions. This source file is #included in pcre2test.c at each supported
|
||||
code unit width, with PCRE2_SUFFIX set appropriately, just like the functions
|
||||
that comprise the library. It can also optionally be included in
|
||||
pcre2_compile.c for detailed debugging in error situations. */
|
||||
|
||||
|
||||
/* Tables of operator names. The same 8-bit table is used for all code unit
|
||||
widths, so it must be defined only once. The list itself is defined in
|
||||
pcre2_internal.h, which is #included by pcre2test before this file. */
|
||||
|
||||
#ifndef OP_LISTS_DEFINED
|
||||
static const char *OP_names[] = { OP_NAME_LIST };
|
||||
#define OP_LISTS_DEFINED
|
||||
#endif
|
||||
|
||||
/* The functions and tables herein must all have mode-dependent names. */
|
||||
|
||||
#define OP_lengths PCRE2_SUFFIX(OP_lengths_)
|
||||
#define get_ucpname PCRE2_SUFFIX(get_ucpname_)
|
||||
#define pcre2_printint PCRE2_SUFFIX(pcre2_printint_)
|
||||
#define print_char PCRE2_SUFFIX(print_char_)
|
||||
#define print_custring PCRE2_SUFFIX(print_custring_)
|
||||
#define print_custring_bylen PCRE2_SUFFIX(print_custring_bylen_)
|
||||
#define print_prop PCRE2_SUFFIX(print_prop_)
|
||||
|
||||
/* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
|
||||
the definition is next to the definition of the opcodes in pcre2_internal.h.
|
||||
The contents of the table are, however, mode-dependent. */
|
||||
|
||||
static const uint8_t OP_lengths[] = { OP_LENGTHS };
|
||||
|
||||
|
||||
|
||||
/*************************************************
|
||||
* Print one character from a string *
|
||||
*************************************************/
|
||||
|
||||
/* In UTF mode the character may occupy more than one code unit.
|
||||
|
||||
Arguments:
|
||||
f file to write to
|
||||
ptr pointer to first code unit of the character
|
||||
utf TRUE if string is UTF (will be FALSE if UTF is not supported)
|
||||
|
||||
Returns: number of additional code units used
|
||||
*/
|
||||
|
||||
static unsigned int
|
||||
print_char(FILE *f, PCRE2_SPTR ptr, BOOL utf)
|
||||
{
|
||||
uint32_t c = *ptr;
|
||||
BOOL one_code_unit = !utf;
|
||||
|
||||
/* If UTF is supported and requested, check for a valid single code unit. */
|
||||
|
||||
#ifdef SUPPORT_UNICODE
|
||||
if (utf)
|
||||
{
|
||||
#if PCRE2_CODE_UNIT_WIDTH == 8
|
||||
one_code_unit = c < 0x80;
|
||||
#elif PCRE2_CODE_UNIT_WIDTH == 16
|
||||
one_code_unit = (c & 0xfc00) != 0xd800;
|
||||
#else
|
||||
one_code_unit = (c & 0xfffff800u) != 0xd800u;
|
||||
#endif /* CODE_UNIT_WIDTH */
|
||||
}
|
||||
#endif /* SUPPORT_UNICODE */
|
||||
|
||||
/* Handle a valid one-code-unit character at any width. */
|
||||
|
||||
if (one_code_unit)
|
||||
{
|
||||
if (PRINTABLE(c)) fprintf(f, "%c", (char)c);
|
||||
else if (c < 0x80) fprintf(f, "\\x%02x", c);
|
||||
else fprintf(f, "\\x{%02x}", c);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Code for invalid UTF code units and multi-unit UTF characters is different
|
||||
for each width. If UTF is not supported, control should never get here, but we
|
||||
need a return statement to keep the compiler happy. */
|
||||
|
||||
#ifndef SUPPORT_UNICODE
|
||||
return 0;
|
||||
#else
|
||||
|
||||
/* Malformed UTF-8 should occur only if the sanity check has been turned off.
|
||||
Rather than swallow random bytes, just stop if we hit a bad one. Print it with
|
||||
\X instead of \x as an indication. */
|
||||
|
||||
#if PCRE2_CODE_UNIT_WIDTH == 8
|
||||
if ((c & 0xc0) != 0xc0)
|
||||
{
|
||||
fprintf(f, "\\X{%x}", c); /* Invalid starting byte */
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
int i;
|
||||
int a = PRIV(utf8_table4)[c & 0x3f]; /* Number of additional bytes */
|
||||
int s = 6*a;
|
||||
c = (c & PRIV(utf8_table3)[a]) << s;
|
||||
for (i = 1; i <= a; i++)
|
||||
{
|
||||
if ((ptr[i] & 0xc0) != 0x80)
|
||||
{
|
||||
fprintf(f, "\\X{%x}", c); /* Invalid secondary byte */
|
||||
return i - 1;
|
||||
}
|
||||
s -= 6;
|
||||
c |= (ptr[i] & 0x3f) << s;
|
||||
}
|
||||
fprintf(f, "\\x{%x}", c);
|
||||
return a;
|
||||
}
|
||||
#endif /* PCRE2_CODE_UNIT_WIDTH == 8 */
|
||||
|
||||
/* UTF-16: rather than swallow a low surrogate, just stop if we hit a bad one.
|
||||
Print it with \X instead of \x as an indication. */
|
||||
|
||||
#if PCRE2_CODE_UNIT_WIDTH == 16
|
||||
if ((ptr[1] & 0xfc00) != 0xdc00)
|
||||
{
|
||||
fprintf(f, "\\X{%x}", c);
|
||||
return 0;
|
||||
}
|
||||
c = (((c & 0x3ff) << 10) | (ptr[1] & 0x3ff)) + 0x10000;
|
||||
fprintf(f, "\\x{%x}", c);
|
||||
return 1;
|
||||
#endif /* PCRE2_CODE_UNIT_WIDTH == 16 */
|
||||
|
||||
/* For UTF-32 we get here only for a malformed code unit, which should only
|
||||
occur if the sanity check has been turned off. Print it with \X instead of \x
|
||||
as an indication. */
|
||||
|
||||
#if PCRE2_CODE_UNIT_WIDTH == 32
|
||||
fprintf(f, "\\X{%x}", c);
|
||||
return 0;
|
||||
#endif /* PCRE2_CODE_UNIT_WIDTH == 32 */
|
||||
#endif /* SUPPORT_UNICODE */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************************
|
||||
* Print string as a list of code units *
|
||||
*************************************************/
|
||||
|
||||
/* These take no account of UTF as they always print each individual code unit.
|
||||
The string is zero-terminated for print_custring(); the length is given for
|
||||
print_custring_bylen().
|
||||
|
||||
Arguments:
|
||||
f file to write to
|
||||
ptr point to the string
|
||||
len length for print_custring_bylen()
|
||||
|
||||
Returns: nothing
|
||||
*/
|
||||
|
||||
static void
|
||||
print_custring(FILE *f, PCRE2_SPTR ptr)
|
||||
{
|
||||
while (*ptr != '\0')
|
||||
{
|
||||
uint32_t c = *ptr++;
|
||||
if (PRINTABLE(c)) fprintf(f, "%c", c); else fprintf(f, "\\x{%x}", c);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_custring_bylen(FILE *f, PCRE2_SPTR ptr, PCRE2_UCHAR len)
|
||||
{
|
||||
for (; len > 0; len--)
|
||||
{
|
||||
uint32_t c = *ptr++;
|
||||
if (PRINTABLE(c)) fprintf(f, "%c", c); else fprintf(f, "\\x{%x}", c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************************
|
||||
* Find Unicode property name *
|
||||
*************************************************/
|
||||
|
||||
/* When there is no UTF/UCP support, the table of names does not exist. This
|
||||
function should not be called in such configurations, because a pattern that
|
||||
tries to use Unicode properties won't compile. Rather than put lots of #ifdefs
|
||||
into the main code, however, we just put one into this function. */
|
||||
|
||||
static const char *
|
||||
get_ucpname(unsigned int ptype, unsigned int pvalue)
|
||||
{
|
||||
#ifdef SUPPORT_UNICODE
|
||||
int i;
|
||||
for (i = PRIV(utt_size) - 1; i >= 0; i--)
|
||||
{
|
||||
if (ptype == PRIV(utt)[i].type && pvalue == PRIV(utt)[i].value) break;
|
||||
}
|
||||
return (i >= 0)? PRIV(utt_names) + PRIV(utt)[i].name_offset : "??";
|
||||
#else /* No UTF support */
|
||||
(void)ptype;
|
||||
(void)pvalue;
|
||||
return "??";
|
||||
#endif /* SUPPORT_UNICODE */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************************
|
||||
* Print Unicode property value *
|
||||
*************************************************/
|
||||
|
||||
/* "Normal" properties can be printed from tables. The PT_CLIST property is a
|
||||
pseudo-property that contains a pointer to a list of case-equivalent
|
||||
characters.
|
||||
|
||||
Arguments:
|
||||
f file to write to
|
||||
code pointer in the compiled code
|
||||
before text to print before
|
||||
after text to print after
|
||||
|
||||
Returns: nothing
|
||||
*/
|
||||
|
||||
static void
|
||||
print_prop(FILE *f, PCRE2_SPTR code, const char *before, const char *after)
|
||||
{
|
||||
if (code[1] != PT_CLIST)
|
||||
{
|
||||
fprintf(f, "%s%s %s%s", before, OP_names[*code], get_ucpname(code[1],
|
||||
code[2]), after);
|
||||
}
|
||||
else
|
||||
{
|
||||
const char *not = (*code == OP_PROP)? "" : "not ";
|
||||
const uint32_t *p = PRIV(ucd_caseless_sets) + code[2];
|
||||
fprintf (f, "%s%sclist", before, not);
|
||||
while (*p < NOTACHAR) fprintf(f, " %04x", *p++);
|
||||
fprintf(f, "%s", after);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************************
|
||||
* Print compiled pattern *
|
||||
*************************************************/
|
||||
|
||||
/* The print_lengths flag controls whether offsets and lengths of items are
|
||||
printed. Lenths can be turned off from pcre2test so that automatic tests on
|
||||
bytecode can be written that do not depend on the value of LINK_SIZE.
|
||||
|
||||
Arguments:
|
||||
re a compiled pattern
|
||||
f the file to write to
|
||||
print_lengths show various lengths
|
||||
|
||||
Returns: nothing
|
||||
*/
|
||||
|
||||
static void
|
||||
pcre2_printint(pcre2_code *re, FILE *f, BOOL print_lengths)
|
||||
{
|
||||
PCRE2_SPTR codestart, nametable, code;
|
||||
uint32_t nesize = re->name_entry_size;
|
||||
BOOL utf = (re->overall_options & PCRE2_UTF) != 0;
|
||||
|
||||
nametable = (PCRE2_SPTR)((uint8_t *)re + sizeof(pcre2_real_code));
|
||||
code = codestart = nametable + re->name_count * re->name_entry_size;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
PCRE2_SPTR ccode;
|
||||
uint32_t c;
|
||||
int i;
|
||||
const char *flag = " ";
|
||||
unsigned int extra = 0;
|
||||
|
||||
if (print_lengths)
|
||||
fprintf(f, "%3d ", (int)(code - codestart));
|
||||
else
|
||||
fprintf(f, " ");
|
||||
|
||||
switch(*code)
|
||||
{
|
||||
/* ========================================================================== */
|
||||
/* These cases are never obeyed. This is a fudge that causes a compile-
|
||||
time error if the vectors OP_names or OP_lengths, which are indexed
|
||||
by opcode, are not the correct length. It seems to be the only way to do
|
||||
such a check at compile time, as the sizeof() operator does not work in
|
||||
the C preprocessor. */
|
||||
|
||||
case OP_TABLE_LENGTH:
|
||||
case OP_TABLE_LENGTH +
|
||||
((sizeof(OP_names)/sizeof(const char *) == OP_TABLE_LENGTH) &&
|
||||
(sizeof(OP_lengths) == OP_TABLE_LENGTH)):
|
||||
return;
|
||||
/* ========================================================================== */
|
||||
|
||||
case OP_END:
|
||||
fprintf(f, " %s\n", OP_names[*code]);
|
||||
fprintf(f, "------------------------------------------------------------------\n");
|
||||
return;
|
||||
|
||||
case OP_CHAR:
|
||||
fprintf(f, " ");
|
||||
do
|
||||
{
|
||||
code++;
|
||||
code += 1 + print_char(f, code, utf);
|
||||
}
|
||||
while (*code == OP_CHAR);
|
||||
fprintf(f, "\n");
|
||||
continue;
|
||||
|
||||
case OP_CHARI:
|
||||
fprintf(f, " /i ");
|
||||
do
|
||||
{
|
||||
code++;
|
||||
code += 1 + print_char(f, code, utf);
|
||||
}
|
||||
while (*code == OP_CHARI);
|
||||
fprintf(f, "\n");
|
||||
continue;
|
||||
|
||||
case OP_CBRA:
|
||||
case OP_CBRAPOS:
|
||||
case OP_SCBRA:
|
||||
case OP_SCBRAPOS:
|
||||
if (print_lengths) fprintf(f, "%3d ", GET(code, 1));
|
||||
else fprintf(f, " ");
|
||||
fprintf(f, "%s %d", OP_names[*code], GET2(code, 1+LINK_SIZE));
|
||||
break;
|
||||
|
||||
case OP_BRA:
|
||||
case OP_BRAPOS:
|
||||
case OP_SBRA:
|
||||
case OP_SBRAPOS:
|
||||
case OP_KETRMAX:
|
||||
case OP_KETRMIN:
|
||||
case OP_KETRPOS:
|
||||
case OP_ALT:
|
||||
case OP_KET:
|
||||
case OP_ASSERT:
|
||||
case OP_ASSERT_NOT:
|
||||
case OP_ASSERTBACK:
|
||||
case OP_ASSERTBACK_NOT:
|
||||
case OP_ONCE:
|
||||
case OP_COND:
|
||||
case OP_SCOND:
|
||||
case OP_REVERSE:
|
||||
if (print_lengths) fprintf(f, "%3d ", GET(code, 1));
|
||||
else fprintf(f, " ");
|
||||
fprintf(f, "%s", OP_names[*code]);
|
||||
break;
|
||||
|
||||
case OP_CLOSE:
|
||||
fprintf(f, " %s %d", OP_names[*code], GET2(code, 1));
|
||||
break;
|
||||
|
||||
case OP_CREF:
|
||||
fprintf(f, "%3d %s", GET2(code,1), OP_names[*code]);
|
||||
break;
|
||||
|
||||
case OP_DNCREF:
|
||||
{
|
||||
PCRE2_SPTR entry = nametable + (GET2(code, 1) * nesize) + IMM2_SIZE;
|
||||
fprintf(f, " %s Cond ref <", flag);
|
||||
print_custring(f, entry);
|
||||
fprintf(f, ">%d", GET2(code, 1 + IMM2_SIZE));
|
||||
}
|
||||
break;
|
||||
|
||||
case OP_RREF:
|
||||
c = GET2(code, 1);
|
||||
if (c == RREF_ANY)
|
||||
fprintf(f, " Cond recurse any");
|
||||
else
|
||||
fprintf(f, " Cond recurse %d", c);
|
||||
break;
|
||||
|
||||
case OP_DNRREF:
|
||||
{
|
||||
PCRE2_SPTR entry = nametable + (GET2(code, 1) * nesize) + IMM2_SIZE;
|
||||
fprintf(f, " %s Cond recurse <", flag);
|
||||
print_custring(f, entry);
|
||||
fprintf(f, ">%d", GET2(code, 1 + IMM2_SIZE));
|
||||
}
|
||||
break;
|
||||
|
||||
case OP_FALSE:
|
||||
fprintf(f, " Cond false");
|
||||
break;
|
||||
|
||||
case OP_TRUE:
|
||||
fprintf(f, " Cond true");
|
||||
break;
|
||||
|
||||
case OP_STARI:
|
||||
case OP_MINSTARI:
|
||||
case OP_POSSTARI:
|
||||
case OP_PLUSI:
|
||||
case OP_MINPLUSI:
|
||||
case OP_POSPLUSI:
|
||||
case OP_QUERYI:
|
||||
case OP_MINQUERYI:
|
||||
case OP_POSQUERYI:
|
||||
flag = "/i";
|
||||
/* Fall through */
|
||||
case OP_STAR:
|
||||
case OP_MINSTAR:
|
||||
case OP_POSSTAR:
|
||||
case OP_PLUS:
|
||||
case OP_MINPLUS:
|
||||
case OP_POSPLUS:
|
||||
case OP_QUERY:
|
||||
case OP_MINQUERY:
|
||||
case OP_POSQUERY:
|
||||
case OP_TYPESTAR:
|
||||
case OP_TYPEMINSTAR:
|
||||
case OP_TYPEPOSSTAR:
|
||||
case OP_TYPEPLUS:
|
||||
case OP_TYPEMINPLUS:
|
||||
case OP_TYPEPOSPLUS:
|
||||
case OP_TYPEQUERY:
|
||||
case OP_TYPEMINQUERY:
|
||||
case OP_TYPEPOSQUERY:
|
||||
fprintf(f, " %s ", flag);
|
||||
|
||||
if (*code >= OP_TYPESTAR)
|
||||
{
|
||||
if (code[1] == OP_PROP || code[1] == OP_NOTPROP)
|
||||
{
|
||||
print_prop(f, code + 1, "", " ");
|
||||
extra = 2;
|
||||
}
|
||||
else fprintf(f, "%s", OP_names[code[1]]);
|
||||
}
|
||||
else extra = print_char(f, code+1, utf);
|
||||
fprintf(f, "%s", OP_names[*code]);
|
||||
break;
|
||||
|
||||
case OP_EXACTI:
|
||||
case OP_UPTOI:
|
||||
case OP_MINUPTOI:
|
||||
case OP_POSUPTOI:
|
||||
flag = "/i";
|
||||
/* Fall through */
|
||||
case OP_EXACT:
|
||||
case OP_UPTO:
|
||||
case OP_MINUPTO:
|
||||
case OP_POSUPTO:
|
||||
fprintf(f, " %s ", flag);
|
||||
extra = print_char(f, code + 1 + IMM2_SIZE, utf);
|
||||
fprintf(f, "{");
|
||||
if (*code != OP_EXACT && *code != OP_EXACTI) fprintf(f, "0,");
|
||||
fprintf(f, "%d}", GET2(code,1));
|
||||
if (*code == OP_MINUPTO || *code == OP_MINUPTOI) fprintf(f, "?");
|
||||
else if (*code == OP_POSUPTO || *code == OP_POSUPTOI) fprintf(f, "+");
|
||||
break;
|
||||
|
||||
case OP_TYPEEXACT:
|
||||
case OP_TYPEUPTO:
|
||||
case OP_TYPEMINUPTO:
|
||||
case OP_TYPEPOSUPTO:
|
||||
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP)
|
||||
{
|
||||
print_prop(f, code + IMM2_SIZE + 1, " ", " ");
|
||||
extra = 2;
|
||||
}
|
||||
else fprintf(f, " %s", OP_names[code[1 + IMM2_SIZE]]);
|
||||
fprintf(f, "{");
|
||||
if (*code != OP_TYPEEXACT) fprintf(f, "0,");
|
||||
fprintf(f, "%d}", GET2(code,1));
|
||||
if (*code == OP_TYPEMINUPTO) fprintf(f, "?");
|
||||
else if (*code == OP_TYPEPOSUPTO) fprintf(f, "+");
|
||||
break;
|
||||
|
||||
case OP_NOTI:
|
||||
flag = "/i";
|
||||
/* Fall through */
|
||||
case OP_NOT:
|
||||
fprintf(f, " %s [^", flag);
|
||||
extra = print_char(f, code + 1, utf);
|
||||
fprintf(f, "]");
|
||||
break;
|
||||
|
||||
case OP_NOTSTARI:
|
||||
case OP_NOTMINSTARI:
|
||||
case OP_NOTPOSSTARI:
|
||||
case OP_NOTPLUSI:
|
||||
case OP_NOTMINPLUSI:
|
||||
case OP_NOTPOSPLUSI:
|
||||
case OP_NOTQUERYI:
|
||||
case OP_NOTMINQUERYI:
|
||||
case OP_NOTPOSQUERYI:
|
||||
flag = "/i";
|
||||
/* Fall through */
|
||||
|
||||
case OP_NOTSTAR:
|
||||
case OP_NOTMINSTAR:
|
||||
case OP_NOTPOSSTAR:
|
||||
case OP_NOTPLUS:
|
||||
case OP_NOTMINPLUS:
|
||||
case OP_NOTPOSPLUS:
|
||||
case OP_NOTQUERY:
|
||||
case OP_NOTMINQUERY:
|
||||
case OP_NOTPOSQUERY:
|
||||
fprintf(f, " %s [^", flag);
|
||||
extra = print_char(f, code + 1, utf);
|
||||
fprintf(f, "]%s", OP_names[*code]);
|
||||
break;
|
||||
|
||||
case OP_NOTEXACTI:
|
||||
case OP_NOTUPTOI:
|
||||
case OP_NOTMINUPTOI:
|
||||
case OP_NOTPOSUPTOI:
|
||||
flag = "/i";
|
||||
/* Fall through */
|
||||
|
||||
case OP_NOTEXACT:
|
||||
case OP_NOTUPTO:
|
||||
case OP_NOTMINUPTO:
|
||||
case OP_NOTPOSUPTO:
|
||||
fprintf(f, " %s [^", flag);
|
||||
extra = print_char(f, code + 1 + IMM2_SIZE, utf);
|
||||
fprintf(f, "]{");
|
||||
if (*code != OP_NOTEXACT && *code != OP_NOTEXACTI) fprintf(f, "0,");
|
||||
fprintf(f, "%d}", GET2(code,1));
|
||||
if (*code == OP_NOTMINUPTO || *code == OP_NOTMINUPTOI) fprintf(f, "?");
|
||||
else
|
||||
if (*code == OP_NOTPOSUPTO || *code == OP_NOTPOSUPTOI) fprintf(f, "+");
|
||||
break;
|
||||
|
||||
case OP_RECURSE:
|
||||
if (print_lengths) fprintf(f, "%3d ", GET(code, 1));
|
||||
else fprintf(f, " ");
|
||||
fprintf(f, "%s", OP_names[*code]);
|
||||
break;
|
||||
|
||||
case OP_REFI:
|
||||
flag = "/i";
|
||||
/* Fall through */
|
||||
case OP_REF:
|
||||
fprintf(f, " %s \\%d", flag, GET2(code,1));
|
||||
ccode = code + OP_lengths[*code];
|
||||
goto CLASS_REF_REPEAT;
|
||||
|
||||
case OP_DNREFI:
|
||||
flag = "/i";
|
||||
/* Fall through */
|
||||
case OP_DNREF:
|
||||
{
|
||||
PCRE2_SPTR entry = nametable + (GET2(code, 1) * nesize) + IMM2_SIZE;
|
||||
fprintf(f, " %s \\k<", flag);
|
||||
print_custring(f, entry);
|
||||
fprintf(f, ">%d", GET2(code, 1 + IMM2_SIZE));
|
||||
}
|
||||
ccode = code + OP_lengths[*code];
|
||||
goto CLASS_REF_REPEAT;
|
||||
|
||||
case OP_CALLOUT:
|
||||
fprintf(f, " %s %d %d %d", OP_names[*code], code[1 + 2*LINK_SIZE],
|
||||
GET(code, 1), GET(code, 1 + LINK_SIZE));
|
||||
break;
|
||||
|
||||
case OP_CALLOUT_STR:
|
||||
c = code[1 + 4*LINK_SIZE];
|
||||
fprintf(f, " %s %c", OP_names[*code], c);
|
||||
extra = GET(code, 1 + 2*LINK_SIZE);
|
||||
print_custring_bylen(f, code + 2 + 4*LINK_SIZE, extra - 3 - 4*LINK_SIZE);
|
||||
for (i = 0; PRIV(callout_start_delims)[i] != 0; i++)
|
||||
if (c == PRIV(callout_start_delims)[i])
|
||||
{
|
||||
c = PRIV(callout_end_delims)[i];
|
||||
break;
|
||||
}
|
||||
fprintf(f, "%c %d %d %d", c, GET(code, 1 + 3*LINK_SIZE), GET(code, 1),
|
||||
GET(code, 1 + LINK_SIZE));
|
||||
break;
|
||||
|
||||
case OP_PROP:
|
||||
case OP_NOTPROP:
|
||||
print_prop(f, code, " ", "");
|
||||
break;
|
||||
|
||||
/* OP_XCLASS cannot occur in 8-bit, non-UTF mode. However, there's no harm
|
||||
in having this code always here, and it makes it less messy without all
|
||||
those #ifdefs. */
|
||||
|
||||
case OP_CLASS:
|
||||
case OP_NCLASS:
|
||||
case OP_XCLASS:
|
||||
{
|
||||
unsigned int min, max;
|
||||
BOOL printmap;
|
||||
BOOL invertmap = FALSE;
|
||||
uint8_t *map;
|
||||
uint8_t inverted_map[32];
|
||||
|
||||
fprintf(f, " [");
|
||||
|
||||
if (*code == OP_XCLASS)
|
||||
{
|
||||
extra = GET(code, 1);
|
||||
ccode = code + LINK_SIZE + 1;
|
||||
printmap = (*ccode & XCL_MAP) != 0;
|
||||
if ((*ccode & XCL_NOT) != 0)
|
||||
{
|
||||
invertmap = (*ccode & XCL_HASPROP) == 0;
|
||||
fprintf(f, "^");
|
||||
}
|
||||
ccode++;
|
||||
}
|
||||
else
|
||||
{
|
||||
printmap = TRUE;
|
||||
ccode = code + 1;
|
||||
}
|
||||
|
||||
/* Print a bit map */
|
||||
|
||||
if (printmap)
|
||||
{
|
||||
map = (uint8_t *)ccode;
|
||||
if (invertmap)
|
||||
{
|
||||
for (i = 0; i < 32; i++) inverted_map[i] = ~map[i];
|
||||
map = inverted_map;
|
||||
}
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
if ((map[i/8] & (1 << (i&7))) != 0)
|
||||
{
|
||||
int j;
|
||||
for (j = i+1; j < 256; j++)
|
||||
if ((map[j/8] & (1 << (j&7))) == 0) break;
|
||||
if (i == '-' || i == ']') fprintf(f, "\\");
|
||||
if (PRINTABLE(i)) fprintf(f, "%c", i);
|
||||
else fprintf(f, "\\x%02x", i);
|
||||
if (--j > i)
|
||||
{
|
||||
if (j != i + 1) fprintf(f, "-");
|
||||
if (j == '-' || j == ']') fprintf(f, "\\");
|
||||
if (PRINTABLE(j)) fprintf(f, "%c", j);
|
||||
else fprintf(f, "\\x%02x", j);
|
||||
}
|
||||
i = j;
|
||||
}
|
||||
}
|
||||
ccode += 32 / sizeof(PCRE2_UCHAR);
|
||||
}
|
||||
|
||||
/* For an XCLASS there is always some additional data */
|
||||
|
||||
if (*code == OP_XCLASS)
|
||||
{
|
||||
PCRE2_UCHAR ch;
|
||||
while ((ch = *ccode++) != XCL_END)
|
||||
{
|
||||
BOOL not = FALSE;
|
||||
const char *notch = "";
|
||||
|
||||
switch(ch)
|
||||
{
|
||||
case XCL_NOTPROP:
|
||||
not = TRUE;
|
||||
notch = "^";
|
||||
/* Fall through */
|
||||
|
||||
case XCL_PROP:
|
||||
{
|
||||
unsigned int ptype = *ccode++;
|
||||
unsigned int pvalue = *ccode++;
|
||||
|
||||
switch(ptype)
|
||||
{
|
||||
case PT_PXGRAPH:
|
||||
fprintf(f, "[:%sgraph:]", notch);
|
||||
break;
|
||||
|
||||
case PT_PXPRINT:
|
||||
fprintf(f, "[:%sprint:]", notch);
|
||||
break;
|
||||
|
||||
case PT_PXPUNCT:
|
||||
fprintf(f, "[:%spunct:]", notch);
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf(f, "\\%c{%s}", (not? 'P':'p'),
|
||||
get_ucpname(ptype, pvalue));
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
ccode += 1 + print_char(f, ccode, utf);
|
||||
if (ch == XCL_RANGE)
|
||||
{
|
||||
fprintf(f, "-");
|
||||
ccode += 1 + print_char(f, ccode, utf);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Indicate a non-UTF class which was created by negation */
|
||||
|
||||
fprintf(f, "]%s", (*code == OP_NCLASS)? " (neg)" : "");
|
||||
|
||||
/* Handle repeats after a class or a back reference */
|
||||
|
||||
CLASS_REF_REPEAT:
|
||||
switch(*ccode)
|
||||
{
|
||||
case OP_CRSTAR:
|
||||
case OP_CRMINSTAR:
|
||||
case OP_CRPLUS:
|
||||
case OP_CRMINPLUS:
|
||||
case OP_CRQUERY:
|
||||
case OP_CRMINQUERY:
|
||||
case OP_CRPOSSTAR:
|
||||
case OP_CRPOSPLUS:
|
||||
case OP_CRPOSQUERY:
|
||||
fprintf(f, "%s", OP_names[*ccode]);
|
||||
extra += OP_lengths[*ccode];
|
||||
break;
|
||||
|
||||
case OP_CRRANGE:
|
||||
case OP_CRMINRANGE:
|
||||
case OP_CRPOSRANGE:
|
||||
min = GET2(ccode,1);
|
||||
max = GET2(ccode,1 + IMM2_SIZE);
|
||||
if (max == 0) fprintf(f, "{%u,}", min);
|
||||
else fprintf(f, "{%u,%u}", min, max);
|
||||
if (*ccode == OP_CRMINRANGE) fprintf(f, "?");
|
||||
else if (*ccode == OP_CRPOSRANGE) fprintf(f, "+");
|
||||
extra += OP_lengths[*ccode];
|
||||
break;
|
||||
|
||||
/* Do nothing if it's not a repeat; this code stops picky compilers
|
||||
warning about the lack of a default code path. */
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case OP_MARK:
|
||||
case OP_PRUNE_ARG:
|
||||
case OP_SKIP_ARG:
|
||||
case OP_THEN_ARG:
|
||||
fprintf(f, " %s ", OP_names[*code]);
|
||||
print_custring_bylen(f, code + 2, code[1]);
|
||||
extra += code[1];
|
||||
break;
|
||||
|
||||
case OP_THEN:
|
||||
fprintf(f, " %s", OP_names[*code]);
|
||||
break;
|
||||
|
||||
case OP_CIRCM:
|
||||
case OP_DOLLM:
|
||||
flag = "/m";
|
||||
/* Fall through */
|
||||
|
||||
/* Anything else is just an item with no data, but possibly a flag. */
|
||||
|
||||
default:
|
||||
fprintf(f, " %s %s", flag, OP_names[*code]);
|
||||
break;
|
||||
}
|
||||
|
||||
code += OP_lengths[*code] + extra;
|
||||
fprintf(f, "\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* End of pcre2_printint.c */
|
@ -440,12 +440,17 @@ QFileSystemEntry QFileSystemEngine::getLinkTarget(const QFileSystemEntry &link,
|
||||
if (data.missingFlags(QFileSystemMetaData::LinkType))
|
||||
QFileSystemEngine::fillMetaData(link, data, QFileSystemMetaData::LinkType);
|
||||
|
||||
QString ret;
|
||||
QString target;
|
||||
if (data.isLnkFile())
|
||||
ret = readLink(link);
|
||||
target = readLink(link);
|
||||
else if (data.isLink())
|
||||
ret = readSymLink(link);
|
||||
return QFileSystemEntry(ret);
|
||||
target = readSymLink(link);
|
||||
QFileSystemEntry ret(target);
|
||||
if (!target.isEmpty() && ret.isRelative()) {
|
||||
target.prepend(absoluteName(link).path() + QLatin1Char('/'));
|
||||
ret = QFileSystemEntry(QDir::cleanPath(target));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
//static
|
||||
|
@ -79,7 +79,7 @@ public:
|
||||
return r < other.r
|
||||
|| (r == other.r && (c < other.c
|
||||
|| (c == other.c && (i < other.i
|
||||
|| (i == other.i && m < other.m )))));
|
||||
|| (i == other.i && std::less<const QAbstractItemModel *>()(m, other.m))))));
|
||||
}
|
||||
private:
|
||||
inline QModelIndex(int arow, int acolumn, void *ptr, const QAbstractItemModel *amodel) Q_DECL_NOTHROW
|
||||
|
@ -117,9 +117,9 @@ void QBasicDrag::disableEventFilter()
|
||||
}
|
||||
|
||||
|
||||
static inline QPoint getNativeMousePos(QEvent *e, QObject *o)
|
||||
static inline QPoint getNativeMousePos(QEvent *e, QWindow *window)
|
||||
{
|
||||
return QHighDpi::toNativePixels(static_cast<QMouseEvent *>(e)->globalPos(), qobject_cast<QWindow*>(o));
|
||||
return QHighDpi::toNativePixels(static_cast<QMouseEvent *>(e)->globalPos(), window);
|
||||
}
|
||||
|
||||
bool QBasicDrag::eventFilter(QObject *o, QEvent *e)
|
||||
@ -156,14 +156,14 @@ bool QBasicDrag::eventFilter(QObject *o, QEvent *e)
|
||||
|
||||
case QEvent::MouseMove:
|
||||
{
|
||||
QPoint nativePosition = getNativeMousePos(e, o);
|
||||
QPoint nativePosition = getNativeMousePos(e, m_drag_icon_window);
|
||||
move(nativePosition);
|
||||
return true; // Eat all mouse move events
|
||||
}
|
||||
case QEvent::MouseButtonRelease:
|
||||
disableEventFilter();
|
||||
if (canDrop()) {
|
||||
QPoint nativePosition = getNativeMousePos(e, o);
|
||||
QPoint nativePosition = getNativeMousePos(e, m_drag_icon_window);
|
||||
drop(nativePosition);
|
||||
} else {
|
||||
cancel();
|
||||
|
@ -1,7 +1,6 @@
|
||||
# Qt network access module
|
||||
|
||||
HEADERS += \
|
||||
access/qftp_p.h \
|
||||
access/qhttpnetworkheader_p.h \
|
||||
access/qhttpnetworkrequest_p.h \
|
||||
access/qhttpnetworkreply_p.h \
|
||||
@ -18,7 +17,6 @@ HEADERS += \
|
||||
access/qnetworkaccessdebugpipebackend_p.h \
|
||||
access/qnetworkaccessfilebackend_p.h \
|
||||
access/qnetworkaccesscachebackend_p.h \
|
||||
access/qnetworkaccessftpbackend_p.h \
|
||||
access/qnetworkcookie.h \
|
||||
access/qnetworkcookie_p.h \
|
||||
access/qnetworkcookiejar.h \
|
||||
@ -33,8 +31,6 @@ HEADERS += \
|
||||
access/qnetworkreplyfileimpl_p.h \
|
||||
access/qabstractnetworkcache_p.h \
|
||||
access/qabstractnetworkcache.h \
|
||||
access/qnetworkdiskcache_p.h \
|
||||
access/qnetworkdiskcache.h \
|
||||
access/qhttpthreaddelegate_p.h \
|
||||
access/qhttpmultipart.h \
|
||||
access/qhttpmultipart_p.h \
|
||||
@ -45,7 +41,6 @@ HEADERS += \
|
||||
access/qhstsstore_p.h
|
||||
|
||||
SOURCES += \
|
||||
access/qftp.cpp \
|
||||
access/qhttpnetworkheader.cpp \
|
||||
access/qhttpnetworkrequest.cpp \
|
||||
access/qhttpnetworkreply.cpp \
|
||||
@ -61,7 +56,6 @@ SOURCES += \
|
||||
access/qnetworkaccessdebugpipebackend.cpp \
|
||||
access/qnetworkaccessfilebackend.cpp \
|
||||
access/qnetworkaccesscachebackend.cpp \
|
||||
access/qnetworkaccessftpbackend.cpp \
|
||||
access/qnetworkcookie.cpp \
|
||||
access/qnetworkcookiejar.cpp \
|
||||
access/qnetworkrequest.cpp \
|
||||
@ -71,7 +65,6 @@ SOURCES += \
|
||||
access/qnetworkreplyhttpimpl.cpp \
|
||||
access/qnetworkreplyfileimpl.cpp \
|
||||
access/qabstractnetworkcache.cpp \
|
||||
access/qnetworkdiskcache.cpp \
|
||||
access/qhttpthreaddelegate.cpp \
|
||||
access/qhttpmultipart.cpp \
|
||||
access/qnetworkfile.cpp \
|
||||
@ -80,6 +73,24 @@ SOURCES += \
|
||||
access/qhstspolicy.cpp \
|
||||
access/qhstsstore.cpp
|
||||
|
||||
qtConfig(ftp) {
|
||||
HEADERS += \
|
||||
access/qftp_p.h \
|
||||
access/qnetworkaccessftpbackend_p.h
|
||||
|
||||
SOURCES += \
|
||||
access/qftp.cpp \
|
||||
access/qnetworkaccessftpbackend.cpp
|
||||
}
|
||||
|
||||
qtConfig(networkdiskcache) {
|
||||
HEADERS += \
|
||||
access/qnetworkdiskcache_p.h \
|
||||
access/qnetworkdiskcache.h
|
||||
|
||||
SOURCES += access/qnetworkdiskcache.cpp
|
||||
}
|
||||
|
||||
mac: LIBS_PRIVATE += -framework Security
|
||||
|
||||
include($$PWD/../../3rdparty/zlib_dependency.pri)
|
||||
|
@ -43,8 +43,6 @@
|
||||
#include "private/qftp_p.h"
|
||||
#include "qabstractsocket.h"
|
||||
|
||||
#ifndef QT_NO_FTP
|
||||
|
||||
#include "qcoreapplication.h"
|
||||
#include "qtcpsocket.h"
|
||||
#include "qurlinfo_p.h"
|
||||
@ -2453,5 +2451,3 @@ QT_END_NAMESPACE
|
||||
#include "qftp.moc"
|
||||
|
||||
#include "moc_qftp_p.cpp"
|
||||
|
||||
#endif // QT_NO_FTP
|
||||
|
@ -56,11 +56,10 @@
|
||||
#include <private/qurlinfo_p.h>
|
||||
#include <QtCore/qobject.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(ftp);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
#ifndef QT_NO_FTP
|
||||
|
||||
class QFtpPrivate;
|
||||
|
||||
class Q_AUTOTEST_EXPORT QFtp : public QObject
|
||||
@ -169,8 +168,6 @@ private:
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_piFtpReply(int, const QString&))
|
||||
};
|
||||
|
||||
#endif // QT_NO_FTP
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QFTP_P_H
|
||||
|
@ -42,7 +42,9 @@
|
||||
#include "qnetworkaccesscachebackend_p.h"
|
||||
#include "qabstractnetworkcache.h"
|
||||
#include "qfileinfo.h"
|
||||
#if QT_CONFIG(ftp)
|
||||
#include "qurlinfo_p.h"
|
||||
#endif
|
||||
#include "qdir.h"
|
||||
#include "qcoreapplication.h"
|
||||
|
||||
|
@ -39,7 +39,9 @@
|
||||
|
||||
#include "qnetworkaccessfilebackend_p.h"
|
||||
#include "qfileinfo.h"
|
||||
#if QT_CONFIG(ftp)
|
||||
#include "qurlinfo_p.h"
|
||||
#endif
|
||||
#include "qdir.h"
|
||||
#include "private/qnoncontiguousbytedevice_p.h"
|
||||
|
||||
|
@ -43,8 +43,6 @@
|
||||
#include "private/qnoncontiguousbytedevice_p.h"
|
||||
#include <QStringList>
|
||||
|
||||
#ifndef QT_NO_FTP
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
enum {
|
||||
@ -382,5 +380,3 @@ void QNetworkAccessFtpBackend::ftpRawCommandReply(int code, const QString &text)
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_FTP
|
||||
|
@ -60,7 +60,7 @@
|
||||
|
||||
#include "QtCore/qpointer.h"
|
||||
|
||||
#ifndef QT_NO_FTP
|
||||
QT_REQUIRE_CONFIG(ftp);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -122,6 +122,4 @@ public:
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_FTP
|
||||
|
||||
#endif
|
||||
|
@ -51,7 +51,9 @@
|
||||
#include "QtNetwork/qnetworksession.h"
|
||||
#include "QtNetwork/private/qsharednetworksession_p.h"
|
||||
|
||||
#if QT_CONFIG(ftp)
|
||||
#include "qnetworkaccessftpbackend_p.h"
|
||||
#endif
|
||||
#include "qnetworkaccessfilebackend_p.h"
|
||||
#include "qnetworkaccessdebugpipebackend_p.h"
|
||||
#include "qnetworkaccesscachebackend_p.h"
|
||||
@ -76,9 +78,9 @@
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
Q_GLOBAL_STATIC(QNetworkAccessFileBackendFactory, fileBackend)
|
||||
#ifndef QT_NO_FTP
|
||||
#if QT_CONFIG(ftp)
|
||||
Q_GLOBAL_STATIC(QNetworkAccessFtpBackendFactory, ftpBackend)
|
||||
#endif // QT_NO_FTP
|
||||
#endif // QT_CONFIG(ftp)
|
||||
|
||||
#ifdef QT_BUILD_INTERNAL
|
||||
Q_GLOBAL_STATIC(QNetworkAccessDebugPipeBackendFactory, debugpipeBackend)
|
||||
@ -146,7 +148,7 @@ bool getProxyAuth(const QString& proxyHostname, const QString &scheme, QString&
|
||||
|
||||
static void ensureInitialized()
|
||||
{
|
||||
#ifndef QT_NO_FTP
|
||||
#if QT_CONFIG(ftp)
|
||||
(void) ftpBackend();
|
||||
#endif
|
||||
|
||||
|
@ -60,8 +60,6 @@
|
||||
|
||||
#define MAX_COMPRESSION_SIZE (1024 * 1024 * 3)
|
||||
|
||||
#ifndef QT_NO_NETWORKDISKCACHE
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
/*!
|
||||
@ -737,5 +735,3 @@ bool QCacheItem::read(QFile *device, bool readData)
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_NETWORKDISKCACHE
|
||||
|
@ -43,11 +43,10 @@
|
||||
#include <QtNetwork/qtnetworkglobal.h>
|
||||
#include <QtNetwork/qabstractnetworkcache.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(networkdiskcache);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
#ifndef QT_NO_NETWORKDISKCACHE
|
||||
|
||||
class QNetworkDiskCachePrivate;
|
||||
class Q_NETWORK_EXPORT QNetworkDiskCache : public QAbstractNetworkCache
|
||||
{
|
||||
@ -84,8 +83,6 @@ private:
|
||||
Q_DISABLE_COPY(QNetworkDiskCache)
|
||||
};
|
||||
|
||||
#endif // QT_NO_NETWORKDISKCACHE
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QNETWORKDISKCACHE_H
|
||||
|
@ -58,7 +58,7 @@
|
||||
#include <qhash.h>
|
||||
#include <qtemporaryfile.h>
|
||||
|
||||
#ifndef QT_NO_NETWORKDISKCACHE
|
||||
QT_REQUIRE_CONFIG(networkdiskcache);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -123,6 +123,4 @@ public:
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_NETWORKDISKCACHE
|
||||
|
||||
#endif // QNETWORKDISKCACHE_P_H
|
||||
|
@ -17,8 +17,7 @@ HEADERS += kernel/qtnetworkglobal.h \
|
||||
kernel/qnetworkdatagram_p.h \
|
||||
kernel/qnetworkinterface.h \
|
||||
kernel/qnetworkinterface_p.h \
|
||||
kernel/qnetworkproxy.h \
|
||||
kernel/qurlinfo_p.h
|
||||
kernel/qnetworkproxy.h
|
||||
|
||||
SOURCES += kernel/qauthenticator.cpp \
|
||||
kernel/qdnslookup.cpp \
|
||||
@ -26,8 +25,12 @@ SOURCES += kernel/qauthenticator.cpp \
|
||||
kernel/qhostinfo.cpp \
|
||||
kernel/qnetworkdatagram.cpp \
|
||||
kernel/qnetworkinterface.cpp \
|
||||
kernel/qnetworkproxy.cpp \
|
||||
kernel/qurlinfo.cpp
|
||||
kernel/qnetworkproxy.cpp
|
||||
|
||||
qtConfig(ftp) {
|
||||
HEADERS += kernel/qurlinfo_p.h
|
||||
SOURCES += kernel/qurlinfo.cpp
|
||||
}
|
||||
|
||||
unix {
|
||||
!integrity: SOURCES += kernel/qdnslookup_unix.cpp
|
||||
|
@ -227,7 +227,9 @@
|
||||
#ifndef QT_NO_NETWORKPROXY
|
||||
|
||||
#include "private/qnetworkrequest_p.h"
|
||||
#if QT_CONFIG(socks5)
|
||||
#include "private/qsocks5socketengine_p.h"
|
||||
#endif
|
||||
#include "private/qhttpsocketengine_p.h"
|
||||
#include "qauthenticator.h"
|
||||
#include "qdebug.h"
|
||||
@ -251,7 +253,7 @@ public:
|
||||
: mutex(QMutex::Recursive)
|
||||
, applicationLevelProxy(0)
|
||||
, applicationLevelProxyFactory(0)
|
||||
#ifndef QT_NO_SOCKS5
|
||||
#if QT_CONFIG(socks5)
|
||||
, socks5SocketEngineHandler(0)
|
||||
#endif
|
||||
#ifndef QT_NO_HTTP
|
||||
@ -263,7 +265,7 @@ public:
|
||||
, useSystemProxies(false)
|
||||
#endif
|
||||
{
|
||||
#ifndef QT_NO_SOCKS5
|
||||
#if QT_CONFIG(socks5)
|
||||
socks5SocketEngineHandler = new QSocks5SocketEngineHandler();
|
||||
#endif
|
||||
#ifndef QT_NO_HTTP
|
||||
@ -275,7 +277,7 @@ public:
|
||||
{
|
||||
delete applicationLevelProxy;
|
||||
delete applicationLevelProxyFactory;
|
||||
#ifndef QT_NO_SOCKS5
|
||||
#if QT_CONFIG(socks5)
|
||||
delete socks5SocketEngineHandler;
|
||||
#endif
|
||||
#ifndef QT_NO_HTTP
|
||||
@ -335,7 +337,7 @@ private:
|
||||
QMutex mutex;
|
||||
QNetworkProxy *applicationLevelProxy;
|
||||
QNetworkProxyFactory *applicationLevelProxyFactory;
|
||||
#ifndef QT_NO_SOCKS5
|
||||
#if QT_CONFIG(socks5)
|
||||
QSocks5SocketEngineHandler *socks5SocketEngineHandler;
|
||||
#endif
|
||||
#ifndef QT_NO_HTTP
|
||||
|
@ -39,8 +39,6 @@
|
||||
|
||||
#include "qurlinfo_p.h"
|
||||
|
||||
#ifndef QT_NO_FTP
|
||||
|
||||
#include "qurl.h"
|
||||
#include "qdir.h"
|
||||
#include <limits.h>
|
||||
@ -727,5 +725,3 @@ bool QUrlInfo::isValid() const
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_FTP
|
||||
|
@ -56,11 +56,10 @@
|
||||
#include <QtCore/qstring.h>
|
||||
#include <QtCore/qiodevice.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(ftp);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
#ifndef QT_NO_FTP
|
||||
|
||||
class QUrl;
|
||||
class QUrlInfoPrivate;
|
||||
|
||||
@ -129,8 +128,6 @@ private:
|
||||
QUrlInfoPrivate *d;
|
||||
};
|
||||
|
||||
#endif // QT_NO_FTP
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QURLINFO_H
|
||||
|
@ -39,8 +39,6 @@
|
||||
|
||||
#include "qsocks5socketengine_p.h"
|
||||
|
||||
#ifndef QT_NO_SOCKS5
|
||||
|
||||
#include "qtcpsocket.h"
|
||||
#include "qudpsocket.h"
|
||||
#include "qtcpserver.h"
|
||||
@ -1938,6 +1936,4 @@ QAbstractSocketEngine *QSocks5SocketEngineHandler::createSocketEngine(qintptr so
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif // QT_NO_SOCKS5
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -55,9 +55,9 @@
|
||||
#include "qabstractsocketengine_p.h"
|
||||
#include "qnetworkproxy.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
QT_REQUIRE_CONFIG(socks5);
|
||||
|
||||
#ifndef QT_NO_SOCKS5
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QSocks5SocketEnginePrivate;
|
||||
|
||||
@ -291,7 +291,6 @@ public:
|
||||
virtual QAbstractSocketEngine *createSocketEngine(qintptr socketDescriptor, QObject *parent) Q_DECL_OVERRIDE;
|
||||
};
|
||||
|
||||
|
||||
QT_END_NAMESPACE
|
||||
#endif // QT_NO_SOCKS5
|
||||
|
||||
#endif // QSOCKS5SOCKETENGINE_H
|
||||
|
@ -2293,6 +2293,9 @@ void QSslSocketPrivate::createPlainSocket(QIODevice::OpenMode openMode)
|
||||
q->connect(plainSocket, SIGNAL(channelBytesWritten(int, qint64)),
|
||||
q, SLOT(_q_channelBytesWrittenSlot(int, qint64)),
|
||||
Qt::DirectConnection);
|
||||
q->connect(plainSocket, SIGNAL(readChannelFinished()),
|
||||
q, SLOT(_q_readChannelFinishedSlot()),
|
||||
Qt::DirectConnection);
|
||||
#ifndef QT_NO_NETWORKPROXY
|
||||
q->connect(plainSocket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
|
||||
q, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
|
||||
@ -2511,6 +2514,15 @@ void QSslSocketPrivate::_q_channelBytesWrittenSlot(int channel, qint64 written)
|
||||
emit q->channelBytesWritten(channel, written);
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
void QSslSocketPrivate::_q_readChannelFinishedSlot()
|
||||
{
|
||||
Q_Q(QSslSocket);
|
||||
emit q->readChannelFinished();
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
|
@ -224,6 +224,7 @@ private:
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_channelReadyReadSlot(int))
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_bytesWrittenSlot(qint64))
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_channelBytesWrittenSlot(int, qint64))
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_readChannelFinishedSlot())
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_flushWriteBuffer())
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_flushReadBuffer())
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_resumeImplementation())
|
||||
|
@ -180,6 +180,7 @@ public:
|
||||
void _q_channelReadyReadSlot(int);
|
||||
void _q_bytesWrittenSlot(qint64);
|
||||
void _q_channelBytesWrittenSlot(int, qint64);
|
||||
void _q_readChannelFinishedSlot();
|
||||
void _q_flushWriteBuffer();
|
||||
void _q_flushReadBuffer();
|
||||
void _q_resumeImplementation();
|
||||
|
@ -1621,6 +1621,7 @@ void QWindowsFontDatabase::refUniqueFont(const QString &uniqueFont)
|
||||
m_uniqueFontData[uniqueFont].refCount.ref();
|
||||
}
|
||||
|
||||
// ### fixme Qt 6 (QTBUG-58610): See comment at QWindowsFontDatabase::systemDefaultFont()
|
||||
HFONT QWindowsFontDatabase::systemFont()
|
||||
{
|
||||
static const HFONT stock_sysfont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
|
||||
@ -1961,12 +1962,31 @@ QFontEngine *QWindowsFontDatabase::createEngine(const QFontDef &request, const Q
|
||||
|
||||
QFont QWindowsFontDatabase::systemDefaultFont()
|
||||
{
|
||||
#if QT_VERSION >= 0x060000
|
||||
// Qt 6: Obtain default GUI font (typically "Segoe UI, 9pt", see QTBUG-58610)
|
||||
NONCLIENTMETRICS ncm;
|
||||
ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, lfMessageFont) + sizeof(LOGFONT);
|
||||
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncm.cbSize , &ncm, 0);
|
||||
const QFont systemFont = QWindowsFontDatabase::LOGFONT_to_QFont(ncm.lfMessageFont);
|
||||
#else
|
||||
LOGFONT lf;
|
||||
GetObject(QWindowsFontDatabase::systemFont(), sizeof(lf), &lf);
|
||||
QFont systemFont = QWindowsFontDatabase::LOGFONT_to_QFont(lf);
|
||||
// "MS Shell Dlg 2" is the correct system font >= Win2k
|
||||
if (systemFont.family() == QLatin1String("MS Shell Dlg"))
|
||||
systemFont.setFamily(QStringLiteral("MS Shell Dlg 2"));
|
||||
// Qt 5 by (Qt 4) legacy uses GetStockObject(DEFAULT_GUI_FONT) to
|
||||
// obtain the default GUI font (typically "MS Shell Dlg 2, 8pt"). This has been
|
||||
// long deprecated; the message font of the NONCLIENTMETRICS structure obtained by
|
||||
// SystemParametersInfo(SPI_GETNONCLIENTMETRICS) should be used instead (see
|
||||
// QWindowsTheme::refreshFonts(), typically "Segoe UI, 9pt"), which is larger.
|
||||
// In single monitor setups, the point sizes revolve around 8 (depending on UI
|
||||
// scale factor, but not proportional to it). However, in multi monitor setups,
|
||||
// where the DPI of the primary monitor are smaller than those of the secondary,
|
||||
// large bogus values are returned. Limit to 8.25 in that case.
|
||||
if (GetSystemMetrics(SM_CMONITORS) > 1 && systemFont.pointSizeF() > 8.25)
|
||||
systemFont.setPointSizeF(8.25);
|
||||
#endif // Qt 5
|
||||
qCDebug(lcQpaFonts) << __FUNCTION__ << systemFont;
|
||||
return systemFont;
|
||||
}
|
||||
|
@ -124,7 +124,22 @@ void QCocoaInputContext::connectSignals()
|
||||
void QCocoaInputContext::focusObjectChanged(QObject *focusObject)
|
||||
{
|
||||
Q_UNUSED(focusObject);
|
||||
mWindow = QGuiApplication::focusWindow();
|
||||
if (mWindow == QGuiApplication::focusWindow()) {
|
||||
if (!mWindow)
|
||||
return;
|
||||
|
||||
QCocoaWindow *window = static_cast<QCocoaWindow *>(mWindow->handle());
|
||||
QNSView *view = qnsview_cast(window->view());
|
||||
if (!view)
|
||||
return;
|
||||
|
||||
if (NSTextInputContext *ctxt = [NSTextInputContext currentInputContext]) {
|
||||
[ctxt discardMarkedText];
|
||||
[view cancelComposingText];
|
||||
}
|
||||
} else {
|
||||
mWindow = QGuiApplication::focusWindow();
|
||||
}
|
||||
}
|
||||
|
||||
void QCocoaInputContext::updateLocale()
|
||||
|
@ -63,6 +63,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper));
|
||||
Qt::MouseButtons m_acceptedMouseDowns;
|
||||
Qt::MouseButtons m_frameStrutButtons;
|
||||
QString m_composingText;
|
||||
QPointer<QObject> m_composingFocusObject;
|
||||
bool m_sendKeyEvent;
|
||||
QStringList *currentCustomDragTypes;
|
||||
bool m_dontOverrideCtrlLMB;
|
||||
@ -93,6 +94,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper));
|
||||
- (void)textInputContextKeyboardSelectionDidChangeNotification : (NSNotification *) textInputContextKeyboardSelectionDidChangeNotification;
|
||||
- (void)viewDidHide;
|
||||
- (void)removeFromSuperview;
|
||||
- (void)cancelComposingText;
|
||||
|
||||
- (BOOL)isFlipped;
|
||||
- (BOOL)acceptsFirstResponder;
|
||||
|
@ -1544,6 +1544,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
|
||||
}
|
||||
|
||||
m_composingText.clear();
|
||||
m_composingFocusObject = nullptr;
|
||||
}
|
||||
|
||||
- (void) setMarkedText:(id)aString selectedRange:(NSRange)selectedRange replacementRange:(NSRange)replacementRange
|
||||
@ -1598,6 +1599,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
|
||||
m_composingText = preeditString;
|
||||
|
||||
if (QObject *fo = m_platformWindow->window()->focusObject()) {
|
||||
m_composingFocusObject = fo;
|
||||
QInputMethodQueryEvent queryEvent(Qt::ImEnabled);
|
||||
if (QCoreApplication::sendEvent(fo, &queryEvent)) {
|
||||
if (queryEvent.value(Qt::ImEnabled).toBool()) {
|
||||
@ -1610,6 +1612,25 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
|
||||
}
|
||||
}
|
||||
|
||||
- (void)cancelComposingText
|
||||
{
|
||||
if (m_composingText.isEmpty())
|
||||
return;
|
||||
|
||||
if (m_composingFocusObject) {
|
||||
QInputMethodQueryEvent queryEvent(Qt::ImEnabled);
|
||||
if (QCoreApplication::sendEvent(m_composingFocusObject, &queryEvent)) {
|
||||
if (queryEvent.value(Qt::ImEnabled).toBool()) {
|
||||
QInputMethodEvent e;
|
||||
QCoreApplication::sendEvent(m_composingFocusObject, &e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_composingText.clear();
|
||||
m_composingFocusObject = nullptr;
|
||||
}
|
||||
|
||||
- (void) unmarkText
|
||||
{
|
||||
if (!m_composingText.isEmpty()) {
|
||||
@ -1625,6 +1646,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
|
||||
}
|
||||
}
|
||||
m_composingText.clear();
|
||||
m_composingFocusObject = nullptr;
|
||||
}
|
||||
|
||||
- (BOOL) hasMarkedText
|
||||
|
@ -65,6 +65,7 @@
|
||||
#include <qpa/qwindowsysteminterface.h>
|
||||
#include <qpa/qplatformnativeinterface.h>
|
||||
#include <QtGui/QGuiApplication>
|
||||
#include <QtGui/QOpenGLContext>
|
||||
|
||||
#include <QtCore/QSet>
|
||||
#include <QtCore/QHash>
|
||||
@ -867,6 +868,18 @@ static inline bool resizeOnDpiChanged(const QWindow *w)
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool shouldHaveNonClientDpiScaling(const QWindow *window)
|
||||
{
|
||||
return QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10
|
||||
&& window->isTopLevel()
|
||||
&& !window->property(QWindowsWindow::embeddedNativeParentHandleProperty).isValid()
|
||||
#if QT_CONFIG(opengl) // /QTBUG-62901, EnableNonClientDpiScaling has problems with GL
|
||||
&& (window->surfaceType() != QSurface::OpenGLSurface
|
||||
|| QOpenGLContext::openGLModuleType() != QOpenGLContext::LibGL)
|
||||
#endif
|
||||
;
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Main windows procedure registered for windows.
|
||||
|
||||
@ -988,10 +1001,8 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
|
||||
d->m_creationContext->obtainedGeometry.moveTo(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
|
||||
return true;
|
||||
case QtWindows::NonClientCreate:
|
||||
if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10 && d->m_creationContext->window->isTopLevel()
|
||||
&& !d->m_creationContext->window->property(QWindowsWindow::embeddedNativeParentHandleProperty).isValid()) {
|
||||
if (shouldHaveNonClientDpiScaling(d->m_creationContext->window))
|
||||
enableNonClientDpiScaling(msg.hwnd);
|
||||
}
|
||||
return false;
|
||||
case QtWindows::CalculateSize:
|
||||
return QWindowsGeometryHint::handleCalculateSize(d->m_creationContext->customMargins, msg, result);
|
||||
|
@ -77,7 +77,9 @@
|
||||
#include <qlineedit.h>
|
||||
#include <qmainwindow.h>
|
||||
#include <qmdisubwindow.h>
|
||||
#if QT_CONFIG(menubar)
|
||||
#include <qmenubar.h>
|
||||
#endif
|
||||
#include <qpaintdevice.h>
|
||||
#include <qpainter.h>
|
||||
#include <qpixmapcache.h>
|
||||
@ -805,7 +807,7 @@ static QSize qt_aqua_get_known_size(QStyle::ContentsType ct, const QWidget *widg
|
||||
#endif
|
||||
else if (qobject_cast<const QHeaderView *>(widg))
|
||||
ct = QStyle::CT_HeaderSection;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
else if (qobject_cast<const QMenuBar *>(widg))
|
||||
ct = QStyle::CT_MenuBar;
|
||||
#endif
|
||||
|
@ -80,7 +80,9 @@
|
||||
#endif
|
||||
#include <qmainwindow.h>
|
||||
#include <qmap.h>
|
||||
#if QT_CONFIG(menubar)
|
||||
#include <qmenubar.h>
|
||||
#endif
|
||||
#include <qpaintdevice.h>
|
||||
#include <qpainter.h>
|
||||
#include <qpixmapcache.h>
|
||||
|
@ -1869,7 +1869,7 @@ QSize QWindowsVistaStyle::sizeFromContents(ContentsType type, const QStyleOption
|
||||
sz.setHeight(minimumHeight);
|
||||
}
|
||||
return sz;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
case CT_MenuBarItem:
|
||||
if (!sz.isEmpty())
|
||||
sz += QSize(windowsItemHMargin * 5 + 1, 5);
|
||||
|
@ -72,7 +72,9 @@
|
||||
#if QT_CONFIG(listview)
|
||||
#include <qlistview.h>
|
||||
#endif
|
||||
#if QT_CONFIG(stackedwidget)
|
||||
#include <qstackedwidget.h>
|
||||
#endif
|
||||
#if QT_CONFIG(pushbutton)
|
||||
#include <qpushbutton.h>
|
||||
#endif
|
||||
@ -3665,7 +3667,7 @@ QSize QWindowsXPStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt
|
||||
case CT_Menu:
|
||||
sz += QSize(1, 0);
|
||||
break;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
case CT_MenuBarItem:
|
||||
if (!sz.isEmpty())
|
||||
sz += QSize(windowsItemHMargin * 5 + 1, 6);
|
||||
|
@ -38,6 +38,7 @@
|
||||
"label": "CUPS job control widget",
|
||||
"section": "Widgets",
|
||||
"condition": [
|
||||
"features.buttongroup",
|
||||
"features.calendarwidget",
|
||||
"features.checkbox",
|
||||
"features.combobox",
|
||||
|
@ -63,7 +63,9 @@
|
||||
|
||||
#include <QtWidgets/qdialogbuttonbox.h>
|
||||
|
||||
#if QT_CONFIG(completer)
|
||||
#include <private/qcompleter_p.h>
|
||||
#endif
|
||||
#include "ui_qprintpropertieswidget.h"
|
||||
#include "ui_qprintsettingsoutput.h"
|
||||
#include "ui_qprintwidget.h"
|
||||
@ -679,7 +681,7 @@ QUnixPrintWidgetPrivate::QUnixPrintWidgetPrivate(QUnixPrintWidget *p, QPrinter *
|
||||
}
|
||||
widget.properties->setEnabled(true);
|
||||
|
||||
#if QT_CONFIG(filesystemmodel) && !defined(QT_NO_COMPLETER)
|
||||
#if QT_CONFIG(filesystemmodel) && QT_CONFIG(completer)
|
||||
QFileSystemModel *fsm = new QFileSystemModel(widget.filename);
|
||||
fsm->setRootPath(QDir::homePath());
|
||||
widget.filename->setCompleter(new QCompleter(fsm, widget.filename));
|
||||
|
@ -94,8 +94,10 @@ namespace QTest
|
||||
extern int Q_TESTLIB_EXPORT defaultMouseDelay();
|
||||
|
||||
// pos is in window local coordinates
|
||||
if (window->geometry().width() <= pos.x() || window->geometry().height() <= pos.y()) {
|
||||
QTest::qWarn("Mouse event occurs outside of target window.");
|
||||
const QSize windowSize = window->geometry().size();
|
||||
if (windowSize.width() <= pos.x() || windowSize.height() <= pos.y()) {
|
||||
QTest::qWarn(qPrintable(QString::fromLatin1("Mouse event at %1, %2 occurs outside of target window (%3x%4).")
|
||||
.arg(pos.x()).arg(pos.y()).arg(windowSize.width()).arg(windowSize.height())));
|
||||
}
|
||||
|
||||
if (delay == -1 || delay < defaultMouseDelay())
|
||||
|
@ -60,7 +60,9 @@
|
||||
#include <qwhatsthis.h>
|
||||
#endif
|
||||
#include <QAbstractScrollArea>
|
||||
#if QT_CONFIG(scrollarea)
|
||||
#include <QScrollArea>
|
||||
#endif
|
||||
#if QT_CONFIG(scrollbar)
|
||||
#include <QScrollBar>
|
||||
#endif
|
||||
@ -388,7 +390,7 @@ QStringList QAccessibleComboBox::keyBindingsForAction(const QString &/*actionNam
|
||||
|
||||
#endif // QT_CONFIG(combobox)
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
// ======================= QAccessibleAbstractScrollArea =======================
|
||||
QAccessibleAbstractScrollArea::QAccessibleAbstractScrollArea(QWidget *widget)
|
||||
: QAccessibleWidget(widget, QAccessible::Client)
|
||||
@ -497,7 +499,7 @@ QAccessibleScrollArea::QAccessibleScrollArea(QWidget *widget)
|
||||
{
|
||||
Q_ASSERT(qobject_cast<QScrollArea *>(widget));
|
||||
}
|
||||
#endif // QT_NO_SCROLLAREA
|
||||
#endif // QT_CONFIG(scrollarea)
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
|
@ -70,7 +70,7 @@ class QTitleBar;
|
||||
class QAbstractScrollArea;
|
||||
class QScrollArea;
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
class QAccessibleAbstractScrollArea : public QAccessibleWidget
|
||||
{
|
||||
public:
|
||||
@ -105,7 +105,7 @@ class QAccessibleScrollArea : public QAccessibleAbstractScrollArea
|
||||
public:
|
||||
explicit QAccessibleScrollArea(QWidget *widget);
|
||||
};
|
||||
#endif // QT_NO_SCROLLAREA
|
||||
#endif // QT_CONFIG(scrollarea)
|
||||
|
||||
#if QT_CONFIG(tabbar)
|
||||
class QAccessibleTabBar : public QAccessibleWidget
|
||||
|
@ -40,7 +40,9 @@
|
||||
#include "qaccessiblemenu_p.h"
|
||||
|
||||
#include <qmenu.h>
|
||||
#if QT_CONFIG(menubar)
|
||||
#include <qmenubar.h>
|
||||
#endif
|
||||
#include <QtWidgets/QAction>
|
||||
#include <qstyle.h>
|
||||
|
||||
@ -139,7 +141,7 @@ int QAccessibleMenu::indexOfChild( const QAccessibleInterface *child) const
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
QAccessibleMenuBar::QAccessibleMenuBar(QWidget *w)
|
||||
: QAccessibleWidget(w, QAccessible::MenuBar)
|
||||
{
|
||||
@ -173,7 +175,7 @@ int QAccessibleMenuBar::indexOfChild(const QAccessibleInterface *child) const
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
|
||||
QAccessibleMenuItem::QAccessibleMenuItem(QWidget *owner, QAction *action)
|
||||
: m_action(action), m_owner(owner)
|
||||
@ -253,13 +255,13 @@ QRect QAccessibleMenuItem::rect() const
|
||||
{
|
||||
QRect rect;
|
||||
QWidget *own = owner();
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *menuBar = qobject_cast<QMenuBar*>(own)) {
|
||||
rect = menuBar->actionGeometry(m_action);
|
||||
QPoint globalPos = menuBar->mapToGlobal(QPoint(0,0));
|
||||
rect = rect.translated(globalPos);
|
||||
} else
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
if (QMenu *menu = qobject_cast<QMenu*>(own)) {
|
||||
rect = menu->actionGeometry(m_action);
|
||||
QPoint globalPos = menu->mapToGlobal(QPoint(0,0));
|
||||
@ -289,7 +291,7 @@ QAccessible::State QAccessibleMenuItem::state() const
|
||||
if (QMenu *menu = qobject_cast<QMenu*>(own)) {
|
||||
if (menu->activeAction() == m_action)
|
||||
s.focused = true;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
} else if (QMenuBar *menuBar = qobject_cast<QMenuBar*>(own)) {
|
||||
if (menuBar->activeAction() == m_action)
|
||||
s.focused = true;
|
||||
|
@ -82,7 +82,7 @@ protected:
|
||||
QMenu *menu() const;
|
||||
};
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
class QAccessibleMenuBar : public QAccessibleWidget
|
||||
{
|
||||
public:
|
||||
@ -96,7 +96,7 @@ public:
|
||||
protected:
|
||||
QMenuBar *menuBar() const;
|
||||
};
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
|
||||
|
||||
class QAccessibleMenuItem : public QAccessibleInterface, public QAccessibleActionInterface
|
||||
|
@ -138,7 +138,7 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
|
||||
#endif
|
||||
} else if (classname == QLatin1String("QToolBar")) {
|
||||
iface = new QAccessibleWidget(widget, QAccessible::ToolBar, widget->windowTitle());
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
} else if (classname == QLatin1String("QMenuBar")) {
|
||||
iface = new QAccessibleMenuBar(widget);
|
||||
#endif
|
||||
@ -177,7 +177,7 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
|
||||
iface = new QAccessibleDisplay(widget, QAccessible::ToolTip);
|
||||
} else if (classname == QLatin1String("QFrame")) {
|
||||
iface = new QAccessibleWidget(widget, QAccessible::Border);
|
||||
#ifndef QT_NO_STACKEDWIDGET
|
||||
#if QT_CONFIG(stackedwidget)
|
||||
} else if (classname == QLatin1String("QStackedWidget")) {
|
||||
iface = new QAccessibleStackedWidget(widget);
|
||||
#endif
|
||||
@ -207,7 +207,7 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
|
||||
} else if (classname == QLatin1String("QTextBrowser")) {
|
||||
iface = new QAccessibleTextBrowser(widget);
|
||||
#endif
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
} else if (classname == QLatin1String("QAbstractScrollArea")) {
|
||||
iface = new QAccessibleAbstractScrollArea(widget);
|
||||
} else if (classname == QLatin1String("QScrollArea")) {
|
||||
|
@ -52,7 +52,9 @@
|
||||
#endif
|
||||
#include "qdebug.h"
|
||||
#include <QApplication>
|
||||
#if QT_CONFIG(stackedwidget)
|
||||
#include <QStackedWidget>
|
||||
#endif
|
||||
#if QT_CONFIG(toolbox)
|
||||
#include <QToolBox>
|
||||
#endif
|
||||
@ -310,7 +312,7 @@ void QAccessibleTextEdit::scrollToSubstring(int startIndex, int endIndex)
|
||||
|
||||
#endif // QT_NO_TEXTEDIT && QT_NO_CURSOR
|
||||
|
||||
#ifndef QT_NO_STACKEDWIDGET
|
||||
#if QT_CONFIG(stackedwidget)
|
||||
// ======================= QAccessibleStackedWidget ======================
|
||||
QAccessibleStackedWidget::QAccessibleStackedWidget(QWidget *widget)
|
||||
: QAccessibleWidget(widget, QAccessible::LayeredPane)
|
||||
@ -356,7 +358,7 @@ QStackedWidget *QAccessibleStackedWidget::stackedWidget() const
|
||||
{
|
||||
return static_cast<QStackedWidget *>(object());
|
||||
}
|
||||
#endif // QT_NO_STACKEDWIDGET
|
||||
#endif // QT_CONFIG(stackedwidget)
|
||||
|
||||
#if QT_CONFIG(toolbox)
|
||||
// ======================= QAccessibleToolBox ======================
|
||||
|
@ -74,7 +74,8 @@
|
||||
"effects": {
|
||||
"label": "Effects",
|
||||
"purpose": "Provides special widget effects (e.g. fading and scrolling).",
|
||||
"section": "Kernel"
|
||||
"section": "Kernel",
|
||||
"output": [ "privateFeature" ]
|
||||
},
|
||||
"filesystemmodel": {
|
||||
"label": "QFileSystemModel",
|
||||
|
@ -4130,7 +4130,7 @@ QStringList QFSCompleter::splitPath(const QString &path) const
|
||||
return parts;
|
||||
}
|
||||
|
||||
#endif // QT_NO_COMPLETER
|
||||
#endif // QT_CONFIG(completer)
|
||||
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -69,7 +69,9 @@
|
||||
#include <qstackedwidget.h>
|
||||
#include <qdialogbuttonbox.h>
|
||||
#include <qabstractproxymodel.h>
|
||||
#if QT_CONFIG(completer)
|
||||
#include <qcompleter.h>
|
||||
#endif
|
||||
#include <qpointer.h>
|
||||
#include <qdebug.h>
|
||||
#include "qsidebar_p.h"
|
||||
|
@ -41,7 +41,9 @@
|
||||
|
||||
#include "qapplication.h"
|
||||
#include "qlayoutengine_p.h"
|
||||
#if QT_CONFIG(menubar)
|
||||
#include "qmenubar.h"
|
||||
#endif
|
||||
#include "qtoolbar.h"
|
||||
#include "qsizegrip.h"
|
||||
#include "qevent.h"
|
||||
@ -583,7 +585,7 @@ void QLayoutPrivate::doResize(const QSize &r)
|
||||
const int mbTop = rect.top();
|
||||
rect.setTop(mbTop + mbh);
|
||||
q->setGeometry(rect);
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (menubar)
|
||||
menubar->setGeometry(rect.left(), mbTop, r.width(), mbh);
|
||||
#endif
|
||||
@ -615,7 +617,7 @@ void QLayout::widgetEvent(QEvent *e)
|
||||
{
|
||||
QChildEvent *c = (QChildEvent *)e;
|
||||
if (c->child()->isWidgetType()) {
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (c->child() == d->menubar)
|
||||
d->menubar = 0;
|
||||
#endif
|
||||
@ -664,7 +666,7 @@ int QLayout::totalHeightForWidth(int w) const
|
||||
top += wd->topmargin + wd->bottommargin;
|
||||
}
|
||||
int h = heightForWidth(w - side) + top;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
h += menuBarHeightForWidth(d->menubar, w);
|
||||
#endif
|
||||
return h;
|
||||
@ -687,7 +689,7 @@ QSize QLayout::totalMinimumSize() const
|
||||
}
|
||||
|
||||
QSize s = minimumSize();
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
top += menuBarHeightForWidth(d->menubar, s.width() + side);
|
||||
#endif
|
||||
return s + QSize(side, top);
|
||||
@ -712,7 +714,7 @@ QSize QLayout::totalSizeHint() const
|
||||
QSize s = sizeHint();
|
||||
if (hasHeightForWidth())
|
||||
s.setHeight(heightForWidth(s.width() + side));
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
top += menuBarHeightForWidth(d->menubar, s.width());
|
||||
#endif
|
||||
return s + QSize(side, top);
|
||||
@ -735,7 +737,7 @@ QSize QLayout::totalMaximumSize() const
|
||||
}
|
||||
|
||||
QSize s = maximumSize();
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
top += menuBarHeightForWidth(d->menubar, s.width());
|
||||
#endif
|
||||
|
||||
@ -813,7 +815,7 @@ void QLayoutPrivate::reparentChildWidgets(QWidget *mw)
|
||||
Q_Q(QLayout);
|
||||
int n = q->count();
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (menubar && menubar->parentWidget() != mw) {
|
||||
menubar->setParent(mw);
|
||||
}
|
||||
|
@ -41,7 +41,9 @@
|
||||
|
||||
#include "qapplication.h"
|
||||
#include "qlayoutengine_p.h"
|
||||
#if QT_CONFIG(menubar)
|
||||
#include "qmenubar.h"
|
||||
#endif
|
||||
#include "qtoolbar.h"
|
||||
#include "qevent.h"
|
||||
#include "qstyle.h"
|
||||
|
@ -46,7 +46,9 @@
|
||||
#include <qwhatsthis.h>
|
||||
#endif
|
||||
#include <qmenu.h>
|
||||
#if QT_CONFIG(menubar)
|
||||
#include <qmenubar.h>
|
||||
#endif
|
||||
#include <qapplication.h>
|
||||
#include <private/qapplication_p.h>
|
||||
#include <private/qshortcutmap_p.h>
|
||||
@ -143,7 +145,7 @@ bool qWidgetShortcutContextMatcher(QObject *object, Qt::ShortcutContext context)
|
||||
static bool correctWidgetContext(Qt::ShortcutContext context, QWidget *w, QWidget *active_window)
|
||||
{
|
||||
bool visible = w->isVisible();
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *menuBar = qobject_cast<QMenuBar *>(w)) {
|
||||
if (menuBar->isNativeMenuBar())
|
||||
visible = true;
|
||||
@ -208,7 +210,7 @@ static bool correctWidgetContext(Qt::ShortcutContext context, QWidget *w, QWidge
|
||||
static bool correctGraphicsWidgetContext(Qt::ShortcutContext context, QGraphicsWidget *w, QWidget *active_window)
|
||||
{
|
||||
bool visible = w->isVisible();
|
||||
#if defined(Q_OS_DARWIN) && !defined(QT_NO_MENUBAR)
|
||||
#if defined(Q_OS_DARWIN) && QT_CONFIG(menubar)
|
||||
if (!qApp->testAttribute(Qt::AA_DontUseNativeMenuBar) && qobject_cast<QMenuBar *>(w))
|
||||
visible = true;
|
||||
#endif
|
||||
|
@ -40,6 +40,8 @@
|
||||
# include <private/qcore_mac_p.h>
|
||||
#endif
|
||||
|
||||
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
||||
|
||||
#include <qapplication.h>
|
||||
#include <qdesktopwidget.h>
|
||||
#include <private/qdesktopwidget_p.h>
|
||||
@ -49,7 +51,9 @@
|
||||
#include <qstyleoption.h>
|
||||
#include <qstylepainter.h>
|
||||
#include <qtimer.h>
|
||||
#if QT_CONFIG(effects)
|
||||
#include <private/qeffects_p.h>
|
||||
#endif
|
||||
#include <qtextdocument.h>
|
||||
#include <qdebug.h>
|
||||
#include <private/qstylesheetstyle_p.h>
|
||||
@ -286,7 +290,7 @@ void QTipLabel::timerEvent(QTimerEvent *e)
|
||||
|| e->timerId() == expireTimer.timerId()){
|
||||
hideTimer.stop();
|
||||
expireTimer.stop();
|
||||
#if 0 /* Used to be included in Qt4 for Q_WS_MAC */ && !defined(QT_NO_EFFECTS)
|
||||
#if 0 /* Used to be included in Qt4 for Q_WS_MAC */ && QT_CONFIG(effects)
|
||||
if (QApplication::isEffectEnabled(Qt::UI_FadeTooltip)){
|
||||
// Fade out tip on mac (makes it invisible).
|
||||
// The tip will not be deleted until a new tip is shown.
|
||||
@ -506,7 +510,7 @@ void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, cons
|
||||
QTipLabel::instance->setObjectName(QLatin1String("qtooltip_label"));
|
||||
|
||||
|
||||
#if !defined(QT_NO_EFFECTS) && !0 /* Used to be included in Qt4 for Q_WS_MAC */
|
||||
#if QT_CONFIG(effects) && !0 /* Used to be included in Qt4 for Q_WS_MAC */
|
||||
if (QApplication::isEffectEnabled(Qt::UI_FadeTooltip))
|
||||
qFadeEffect(QTipLabel::instance);
|
||||
else if (QApplication::isEffectEnabled(Qt::UI_AnimateTooltip))
|
||||
|
@ -2439,7 +2439,7 @@ void QWidgetPrivate::paintBackground(QPainter *painter, const QRegion &rgn, int
|
||||
{
|
||||
Q_Q(const QWidget);
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
bool resetBrushOrigin = false;
|
||||
QPointF oldBrushOrigin;
|
||||
//If we are painting the viewport of a scrollarea, we must apply an offset to the brush in case we are drawing a texture
|
||||
@ -2452,7 +2452,7 @@ void QWidgetPrivate::paintBackground(QPainter *painter, const QRegion &rgn, int
|
||||
painter->setBrushOrigin(-priv->contentsOffset());
|
||||
|
||||
}
|
||||
#endif // QT_NO_SCROLLAREA
|
||||
#endif // QT_CONFIG(scrollarea)
|
||||
|
||||
const QBrush autoFillBrush = q->palette().brush(q->backgroundRole());
|
||||
|
||||
@ -2479,10 +2479,10 @@ void QWidgetPrivate::paintBackground(QPainter *painter, const QRegion &rgn, int
|
||||
q->style()->drawPrimitive(QStyle::PE_Widget, &opt, painter, q);
|
||||
}
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
if (resetBrushOrigin)
|
||||
painter->setBrushOrigin(oldBrushOrigin);
|
||||
#endif // QT_NO_SCROLLAREA
|
||||
#endif // QT_CONFIG(scrollarea)
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -101,7 +101,7 @@ public:
|
||||
#ifndef QT_NO_MDIAREA
|
||||
|| qobject_cast<QMdiSubWindow *>(p) != 0
|
||||
#endif
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
|| qobject_cast<QAbstractScrollArea *>(p) != 0
|
||||
#endif
|
||||
) {
|
||||
|
@ -1392,7 +1392,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
opt->rect.x() + opt->rect.width() - 4, opt->rect.y() + opt->rect.height() / 2);
|
||||
break;
|
||||
#endif // QT_NO_MENU
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
case CE_MenuBarItem:
|
||||
if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) {
|
||||
uint alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextDontClip
|
||||
@ -1412,7 +1412,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
|
||||
if (widget && !widget->testAttribute(Qt::WA_NoSystemBackground))
|
||||
p->eraseRect(opt->rect);
|
||||
break;
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
#if QT_CONFIG(progressbar)
|
||||
case CE_ProgressBar:
|
||||
if (const QStyleOptionProgressBar *pb
|
||||
|
@ -46,7 +46,9 @@
|
||||
#include <qdebug.h>
|
||||
#include <qapplication.h>
|
||||
#include <qmenu.h>
|
||||
#if QT_CONFIG(menubar)
|
||||
#include <qmenubar.h>
|
||||
#endif
|
||||
#include <qpainter.h>
|
||||
#include <qstyleoption.h>
|
||||
#include <qlineedit.h>
|
||||
@ -1662,7 +1664,7 @@ int QStyleSheetStyle::nativeFrameWidth(const QWidget *w)
|
||||
return base->pixelMetric(QStyle::PM_MenuPanelWidth, 0, w);
|
||||
#endif
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (qobject_cast<const QMenuBar *>(w))
|
||||
return base->pixelMetric(QStyle::PM_MenuBarPanelWidth, 0, w);
|
||||
#endif
|
||||
@ -2365,7 +2367,7 @@ static QWidget *embeddedWidget(QWidget *w)
|
||||
return sb->findChild<QLineEdit *>();
|
||||
#endif
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
if (QAbstractScrollArea *sa = qobject_cast<QAbstractScrollArea *>(w))
|
||||
return sa->viewport();
|
||||
#endif
|
||||
@ -2396,7 +2398,7 @@ static QWidget *containerWidget(const QWidget *w)
|
||||
}
|
||||
#endif // QT_NO_LINEEDIT
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
if (const QAbstractScrollArea *sa = qobject_cast<const QAbstractScrollArea *>(w->parentWidget())) {
|
||||
if (sa->viewport() == w)
|
||||
return w->parentWidget();
|
||||
@ -2800,7 +2802,7 @@ void QStyleSheetStyle::polish(QWidget *w)
|
||||
}
|
||||
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
if (QAbstractScrollArea *sa = qobject_cast<QAbstractScrollArea *>(w)) {
|
||||
QRenderRule rule = renderRule(sa, PseudoElement_None, PseudoClass_Enabled);
|
||||
if ((rule.hasBorder() && rule.border()->hasBorderImage())
|
||||
@ -2831,7 +2833,7 @@ void QStyleSheetStyle::polish(QWidget *w)
|
||||
#ifndef QT_NO_MDIAREA
|
||||
|| qobject_cast<QMdiSubWindow *>(w)
|
||||
#endif
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
|| qobject_cast<QMenuBar *>(w)
|
||||
#endif
|
||||
#if QT_CONFIG(dialog)
|
||||
@ -2902,7 +2904,7 @@ void QStyleSheetStyle::unpolish(QWidget *w)
|
||||
w->setProperty("_q_stylesheet_maxh", QVariant());
|
||||
w->setAttribute(Qt::WA_StyleSheet, false);
|
||||
QObject::disconnect(w, 0, this, 0);
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
if (QAbstractScrollArea *sa = qobject_cast<QAbstractScrollArea *>(w)) {
|
||||
QObject::disconnect(sa->horizontalScrollBar(), SIGNAL(valueChanged(int)),
|
||||
sa, SLOT(update()));
|
||||
@ -4374,7 +4376,7 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
|
||||
}
|
||||
break;
|
||||
}
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
if (const QAbstractScrollArea *sa = qobject_cast<const QAbstractScrollArea *>(w)) {
|
||||
const QAbstractScrollAreaPrivate *sap = sa->d_func();
|
||||
rule.drawBackground(p, opt->rect, sap->contentsOffset());
|
||||
|
@ -47,8 +47,10 @@
|
||||
#include "qdrawutil.h" // for now
|
||||
#include "qevent.h"
|
||||
#include "qmenu.h"
|
||||
#if QT_CONFIG(menubar)
|
||||
#include "qmenubar.h"
|
||||
#include <private/qmenubar_p.h>
|
||||
#endif
|
||||
#include "qpaintengine.h"
|
||||
#include "qpainter.h"
|
||||
#if QT_CONFIG(rubberband)
|
||||
@ -166,7 +168,7 @@ bool QWindowsStyle::eventFilter(QObject *o, QEvent *e)
|
||||
|
||||
// Update state and repaint the menu bars.
|
||||
d->alt_down = false;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
QList<QMenuBar *> l = widget->findChildren<QMenuBar *>();
|
||||
for (int i = 0; i < l.size(); ++i)
|
||||
l.at(i)->update();
|
||||
@ -574,7 +576,7 @@ int QWindowsStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWid
|
||||
// Do nothing if we always paint underlines
|
||||
Q_D(const QWindowsStyle);
|
||||
if (!ret && widget && d) {
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
const QMenuBar *menuBar = qobject_cast<const QMenuBar *>(widget);
|
||||
if (!menuBar && qobject_cast<const QMenu *>(widget)) {
|
||||
QWidget *w = QApplication::activeWindow();
|
||||
@ -587,7 +589,7 @@ int QWindowsStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWid
|
||||
ret = 1;
|
||||
// Otherwise draw underlines if the toplevel widget has seen an alt-press
|
||||
} else
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
if (d->hasSeenAlt(widget)) {
|
||||
ret = 1;
|
||||
}
|
||||
@ -1260,7 +1262,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
|
||||
}
|
||||
break;
|
||||
#endif // QT_NO_MENU
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
case CE_MenuBarItem:
|
||||
if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) {
|
||||
bool active = mbi->state & State_Selected;
|
||||
@ -1284,7 +1286,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
|
||||
QCommonStyle::drawControl(ce, &newMbi, p, widget);
|
||||
}
|
||||
break;
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
#if QT_CONFIG(tabbar)
|
||||
case CE_TabBarTabShape:
|
||||
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
|
||||
@ -2392,7 +2394,7 @@ QSize QWindowsStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
|
||||
}
|
||||
break;
|
||||
#endif // QT_NO_MENU
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
case CT_MenuBarItem:
|
||||
if (!sz.isEmpty())
|
||||
sz += QSize(QWindowsStylePrivate::windowsItemHMargin * 4, QWindowsStylePrivate::windowsItemVMargin * 2);
|
||||
|
@ -143,8 +143,6 @@
|
||||
|
||||
#include "qcompleter_p.h"
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
|
||||
#include "QtWidgets/qscrollbar.h"
|
||||
#include "QtCore/qstringlistmodel.h"
|
||||
#if QT_CONFIG(dirmodel)
|
||||
@ -1920,5 +1918,3 @@ QT_END_NAMESPACE
|
||||
#include "moc_qcompleter.cpp"
|
||||
|
||||
#include "moc_qcompleter_p.cpp"
|
||||
|
||||
#endif // QT_NO_COMPLETER
|
||||
|
@ -47,11 +47,10 @@
|
||||
#include <QtCore/qabstractitemmodel.h>
|
||||
#include <QtCore/qrect.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(completer);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
|
||||
class QCompleterPrivate;
|
||||
class QAbstractItemView;
|
||||
class QAbstractProxyModel;
|
||||
@ -162,8 +161,6 @@ private:
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_fileSystemModelDirectoryLoaded(const QString&))
|
||||
};
|
||||
|
||||
#endif // QT_NO_COMPLETER
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QCOMPLETER_H
|
||||
|
@ -55,8 +55,6 @@
|
||||
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
||||
#include "private/qobject_p.h"
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
|
||||
#include "QtWidgets/qabstractitemview.h"
|
||||
#include "QtCore/qabstractproxymodel.h"
|
||||
#include "qcompleter.h"
|
||||
@ -64,6 +62,8 @@
|
||||
#include "QtGui/qpainter.h"
|
||||
#include "private/qabstractproxymodel_p.h"
|
||||
|
||||
QT_REQUIRE_CONFIG(completer);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QCompletionModel;
|
||||
@ -258,6 +258,4 @@ class QCompletionModelPrivate : public QAbstractProxyModelPrivate
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_COMPLETER
|
||||
|
||||
#endif // QCOMPLETER_P_H
|
||||
|
@ -3,14 +3,19 @@
|
||||
HEADERS += \
|
||||
util/qsystemtrayicon.h \
|
||||
util/qcolormap.h \
|
||||
util/qcompleter.h \
|
||||
util/qcompleter_p.h \
|
||||
util/qsystemtrayicon_p.h
|
||||
|
||||
SOURCES += \
|
||||
util/qsystemtrayicon.cpp \
|
||||
util/qcolormap.cpp \
|
||||
util/qcompleter.cpp
|
||||
util/qcolormap.cpp
|
||||
|
||||
qtConfig(completer) {
|
||||
HEADERS += \
|
||||
util/qcompleter.h \
|
||||
util/qcompleter_p.h
|
||||
|
||||
SOURCES += util/qcompleter.cpp
|
||||
}
|
||||
|
||||
qtConfig(scroller) {
|
||||
HEADERS += \
|
||||
|
@ -39,11 +39,13 @@
|
||||
|
||||
#include "private/qabstractbutton_p.h"
|
||||
|
||||
#include "private/qbuttongroup_p.h"
|
||||
#if QT_CONFIG(itemviews)
|
||||
#include "qabstractitemview.h"
|
||||
#endif
|
||||
#if QT_CONFIG(buttongroup)
|
||||
#include "qbuttongroup.h"
|
||||
#include "private/qbuttongroup_p.h"
|
||||
#endif
|
||||
#include "qabstractbutton_p.h"
|
||||
#include "qevent.h"
|
||||
#include "qpainter.h"
|
||||
@ -173,7 +175,7 @@ QAbstractButtonPrivate::QAbstractButtonPrivate(QSizePolicy::ControlType type)
|
||||
#endif
|
||||
checkable(false), checked(false), autoRepeat(false), autoExclusive(false),
|
||||
down(false), blockRefresh(false), pressed(false),
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
group(0),
|
||||
#endif
|
||||
autoRepeatDelay(AUTO_REPEAT_DELAY),
|
||||
@ -183,7 +185,7 @@ QAbstractButtonPrivate::QAbstractButtonPrivate(QSizePolicy::ControlType type)
|
||||
|
||||
QList<QAbstractButton *>QAbstractButtonPrivate::queryButtonList() const
|
||||
{
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (group)
|
||||
return group->d_func()->buttonList;
|
||||
#endif
|
||||
@ -192,7 +194,7 @@ QList<QAbstractButton *>QAbstractButtonPrivate::queryButtonList() const
|
||||
if (autoExclusive) {
|
||||
auto isNoMemberOfMyAutoExclusiveGroup = [](QAbstractButton *candidate) {
|
||||
return !candidate->autoExclusive()
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
|| candidate->group()
|
||||
#endif
|
||||
;
|
||||
@ -206,7 +208,7 @@ QList<QAbstractButton *>QAbstractButtonPrivate::queryButtonList() const
|
||||
|
||||
QAbstractButton *QAbstractButtonPrivate::queryCheckedButton() const
|
||||
{
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (group)
|
||||
return group->d_func()->checkedButton;
|
||||
#endif
|
||||
@ -226,7 +228,7 @@ QAbstractButton *QAbstractButtonPrivate::queryCheckedButton() const
|
||||
|
||||
void QAbstractButtonPrivate::notifyChecked()
|
||||
{
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
Q_Q(QAbstractButton);
|
||||
if (group) {
|
||||
QAbstractButton *previous = group->d_func()->checkedButton;
|
||||
@ -244,7 +246,7 @@ void QAbstractButtonPrivate::notifyChecked()
|
||||
void QAbstractButtonPrivate::moveFocus(int key)
|
||||
{
|
||||
QList<QAbstractButton *> buttonList = queryButtonList();;
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
bool exclusive = group ? group->d_func()->exclusive : autoExclusive;
|
||||
#else
|
||||
bool exclusive = autoExclusive;
|
||||
@ -335,7 +337,7 @@ void QAbstractButtonPrivate::moveFocus(int key)
|
||||
void QAbstractButtonPrivate::fixFocusPolicy()
|
||||
{
|
||||
Q_Q(QAbstractButton);
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (!group && !autoExclusive)
|
||||
#else
|
||||
if (!autoExclusive)
|
||||
@ -382,7 +384,7 @@ void QAbstractButtonPrivate::click()
|
||||
bool changeState = true;
|
||||
if (checked && queryCheckedButton() == q) {
|
||||
// the checked button of an exclusive or autoexclusive group cannot be unchecked
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (group ? group->d_func()->exclusive : autoExclusive)
|
||||
#else
|
||||
if (autoExclusive)
|
||||
@ -410,7 +412,7 @@ void QAbstractButtonPrivate::emitClicked()
|
||||
Q_Q(QAbstractButton);
|
||||
QPointer<QAbstractButton> guard(q);
|
||||
emit q->clicked(checked);
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (guard && group) {
|
||||
emit group->buttonClicked(group->id(q));
|
||||
if (guard && group)
|
||||
@ -424,7 +426,7 @@ void QAbstractButtonPrivate::emitPressed()
|
||||
Q_Q(QAbstractButton);
|
||||
QPointer<QAbstractButton> guard(q);
|
||||
emit q->pressed();
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (guard && group) {
|
||||
emit group->buttonPressed(group->id(q));
|
||||
if (guard && group)
|
||||
@ -438,7 +440,7 @@ void QAbstractButtonPrivate::emitReleased()
|
||||
Q_Q(QAbstractButton);
|
||||
QPointer<QAbstractButton> guard(q);
|
||||
emit q->released();
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (guard && group) {
|
||||
emit group->buttonReleased(group->id(q));
|
||||
if (guard && group)
|
||||
@ -452,7 +454,7 @@ void QAbstractButtonPrivate::emitToggled(bool checked)
|
||||
Q_Q(QAbstractButton);
|
||||
QPointer<QAbstractButton> guard(q);
|
||||
emit q->toggled(checked);
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (guard && group) {
|
||||
emit group->buttonToggled(group->id(q), checked);
|
||||
if (guard && group)
|
||||
@ -476,7 +478,7 @@ QAbstractButton::QAbstractButton(QWidget *parent)
|
||||
*/
|
||||
QAbstractButton::~QAbstractButton()
|
||||
{
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
Q_D(QAbstractButton);
|
||||
if (d->group)
|
||||
d->group->removeButton(this);
|
||||
@ -623,7 +625,7 @@ void QAbstractButton::setChecked(bool checked)
|
||||
|
||||
if (!checked && d->queryCheckedButton() == this) {
|
||||
// the checked button of an exclusive or autoexclusive group cannot be unchecked
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
if (d->group ? d->group->d_func()->exclusive : d->autoExclusive)
|
||||
return;
|
||||
if (d->group)
|
||||
@ -798,7 +800,7 @@ bool QAbstractButton::autoExclusive() const
|
||||
return d->autoExclusive;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
/*!
|
||||
Returns the group that this button belongs to.
|
||||
|
||||
@ -812,7 +814,7 @@ QButtonGroup *QAbstractButton::group() const
|
||||
Q_D(const QAbstractButton);
|
||||
return d->group;
|
||||
}
|
||||
#endif // QT_NO_BUTTONGROUP
|
||||
#endif // QT_CONFIG(buttongroup)
|
||||
|
||||
/*!
|
||||
Performs an animated click: the button is pressed immediately, and
|
||||
@ -1070,7 +1072,7 @@ void QAbstractButton::keyPressEvent(QKeyEvent *e)
|
||||
#endif
|
||||
QWidget *pw = parentWidget();
|
||||
if (d->autoExclusive
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
|| d->group
|
||||
#endif
|
||||
#if QT_CONFIG(itemviews)
|
||||
|
@ -108,7 +108,7 @@ public:
|
||||
void setAutoExclusive(bool);
|
||||
bool autoExclusive() const;
|
||||
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
QButtonGroup *group() const;
|
||||
#endif
|
||||
|
||||
|
@ -80,7 +80,7 @@ public:
|
||||
uint blockRefresh :1;
|
||||
uint pressed : 1;
|
||||
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
#if QT_CONFIG(buttongroup)
|
||||
QButtonGroup* group;
|
||||
#endif
|
||||
QBasicTimer repeatTimer;
|
||||
|
@ -39,7 +39,7 @@
|
||||
|
||||
#include "qabstractscrollarea.h"
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
|
||||
#include "qscrollbar.h"
|
||||
#include "qapplication.h"
|
||||
@ -1662,4 +1662,4 @@ QT_END_NAMESPACE
|
||||
#include "moc_qabstractscrollarea.cpp"
|
||||
#include "moc_qabstractscrollarea_p.cpp"
|
||||
|
||||
#endif // QT_NO_SCROLLAREA
|
||||
#endif // QT_CONFIG(scrollarea)
|
||||
|
@ -46,7 +46,7 @@
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
|
||||
class QMargins;
|
||||
class QScrollBar;
|
||||
@ -146,7 +146,7 @@ private:
|
||||
friend class QWidgetPrivate;
|
||||
};
|
||||
|
||||
#endif // QT_NO_SCROLLAREA
|
||||
#endif // QT_CONFIG(scrollarea)
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
|
@ -57,7 +57,7 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#ifndef QT_NO_SCROLLAREA
|
||||
#if QT_CONFIG(scrollarea)
|
||||
|
||||
class QScrollBar;
|
||||
class QAbstractScrollAreaScrollBarContainer;
|
||||
@ -149,7 +149,7 @@ private:
|
||||
Qt::Orientation orientation;
|
||||
};
|
||||
|
||||
#endif // QT_NO_SCROLLAREA
|
||||
#endif // QT_CONFIG(scrollarea)
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
|
@ -39,8 +39,6 @@
|
||||
|
||||
#include "private/qbuttongroup_p.h"
|
||||
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
|
||||
#include "private/qabstractbutton_p.h"
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
@ -362,5 +360,3 @@ int QButtonGroup::checkedId() const
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include "moc_qbuttongroup.cpp"
|
||||
|
||||
#endif // QT_NO_BUTTONGROUP
|
||||
|
@ -43,11 +43,10 @@
|
||||
#include <QtWidgets/qtwidgetsglobal.h>
|
||||
#include <QtCore/qobject.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(buttongroup);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
|
||||
class QAbstractButton;
|
||||
class QAbstractButtonPrivate;
|
||||
class QButtonGroupPrivate;
|
||||
@ -94,8 +93,6 @@ private:
|
||||
friend class QAbstractButtonPrivate;
|
||||
};
|
||||
|
||||
#endif // QT_NO_BUTTONGROUP
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QBUTTONGROUP_H
|
||||
|
@ -54,14 +54,14 @@
|
||||
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
||||
#include <QtWidgets/qbuttongroup.h>
|
||||
|
||||
#ifndef QT_NO_BUTTONGROUP
|
||||
|
||||
#include <QtCore/private/qobject_p.h>
|
||||
|
||||
#include <QtCore/qlist.h>
|
||||
#include <QtCore/qpointer.h>
|
||||
#include <QtCore/qhash.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(buttongroup);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QButtonGroupPrivate: public QObjectPrivate
|
||||
@ -81,6 +81,4 @@ public:
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_BUTTONGROUP
|
||||
|
||||
#endif // QBUTTONGROUP_P_H
|
||||
|
@ -71,7 +71,7 @@
|
||||
#include <private/qabstractscrollarea_p.h>
|
||||
#include <private/qlineedit_p.h>
|
||||
#include <qdebug.h>
|
||||
#ifndef QT_NO_EFFECTS
|
||||
#if QT_CONFIG(effects)
|
||||
# include <private/qeffects_p.h>
|
||||
#endif
|
||||
#ifndef QT_NO_ACCESSIBILITY
|
||||
@ -103,7 +103,7 @@ QComboBoxPrivate::QComboBoxPrivate()
|
||||
#ifdef Q_OS_MAC
|
||||
, m_platformMenu(0)
|
||||
#endif
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
, completer(0)
|
||||
#endif
|
||||
{
|
||||
@ -189,7 +189,7 @@ QStyleOptionMenuItem QComboMenuDelegate::getStyleOption(const QStyleOptionViewIt
|
||||
return menuOption;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
void QComboBoxPrivate::_q_completerActivated(const QModelIndex &index)
|
||||
{
|
||||
Q_Q(QComboBox);
|
||||
@ -224,7 +224,7 @@ void QComboBoxPrivate::_q_completerActivated(const QModelIndex &index)
|
||||
}
|
||||
# endif // QT_KEYPAD_NAVIGATION
|
||||
}
|
||||
#endif // !QT_NO_COMPLETER
|
||||
#endif // QT_CONFIG(completer)
|
||||
|
||||
void QComboBoxPrivate::updateArrow(QStyle::StateFlag state)
|
||||
{
|
||||
@ -1214,7 +1214,7 @@ Qt::MatchFlags QComboBoxPrivate::matchFlags() const
|
||||
{
|
||||
// Base how duplicates are determined on the autocompletion case sensitivity
|
||||
Qt::MatchFlags flags = Qt::MatchFixedString;
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (!lineEdit->completer() || lineEdit->completer()->caseSensitivity() == Qt::CaseSensitive)
|
||||
#endif
|
||||
flags |= Qt::MatchCaseSensitive;
|
||||
@ -1443,7 +1443,7 @@ int QComboBox::maxCount() const
|
||||
return d->maxCount;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
|
||||
/*!
|
||||
\property QComboBox::autoCompletion
|
||||
@ -1538,7 +1538,7 @@ void QComboBox::setAutoCompletionCaseSensitivity(Qt::CaseSensitivity sensitivity
|
||||
d->lineEdit->completer()->setCaseSensitivity(sensitivity);
|
||||
}
|
||||
|
||||
#endif // QT_NO_COMPLETER
|
||||
#endif // QT_CONFIG(completer)
|
||||
|
||||
/*!
|
||||
\property QComboBox::duplicatesEnabled
|
||||
@ -1820,12 +1820,12 @@ void QComboBox::setLineEdit(QLineEdit *edit)
|
||||
d->updateFocusPolicy();
|
||||
d->lineEdit->setFocusProxy(this);
|
||||
d->lineEdit->setAttribute(Qt::WA_MacShowFocusRect, false);
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
setAutoCompletion(d->autoCompletion);
|
||||
#endif
|
||||
|
||||
#ifdef QT_KEYPAD_NAVIGATION
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (QApplication::keypadNavigationEnabled()) {
|
||||
// Editable combo boxes will have a completer that is set to UnfilteredPopupCompletion.
|
||||
// This means that when the user enters edit mode they are immediately presented with a
|
||||
@ -1889,7 +1889,7 @@ const QValidator *QComboBox::validator() const
|
||||
}
|
||||
#endif // QT_NO_VALIDATOR
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
|
||||
/*!
|
||||
\fn void QComboBox::setCompleter(QCompleter *completer)
|
||||
@ -1929,7 +1929,7 @@ QCompleter *QComboBox::completer() const
|
||||
return d->lineEdit ? d->lineEdit->completer() : 0;
|
||||
}
|
||||
|
||||
#endif // QT_NO_COMPLETER
|
||||
#endif // QT_CONFIG(completer)
|
||||
|
||||
/*!
|
||||
Returns the item delegate used by the popup list view.
|
||||
@ -1995,7 +1995,7 @@ void QComboBox::setModel(QAbstractItemModel *model)
|
||||
if (model == d->model)
|
||||
return;
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (d->lineEdit && d->lineEdit->completer()
|
||||
&& d->lineEdit->completer() == d->completer)
|
||||
d->lineEdit->completer()->setModel(model);
|
||||
@ -2141,7 +2141,7 @@ void QComboBoxPrivate::setCurrentIndex(const QModelIndex &mi)
|
||||
const QString newText = itemText(normalized);
|
||||
if (lineEdit->text() != newText) {
|
||||
lineEdit->setText(newText); // may cause lineEdit -> nullptr (QTBUG-54191)
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (lineEdit && lineEdit->completer())
|
||||
lineEdit->completer()->setCompletionPrefix(newText);
|
||||
#endif
|
||||
@ -2592,7 +2592,7 @@ void QComboBox::showPopup()
|
||||
#endif // Q_OS_MAC
|
||||
|
||||
#ifdef QT_KEYPAD_NAVIGATION
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (QApplication::keypadNavigationEnabled() && d->completer) {
|
||||
// editable combo box is line edit plus completer
|
||||
setEditFocus(true);
|
||||
@ -2754,7 +2754,7 @@ void QComboBox::showPopup()
|
||||
const bool updatesEnabled = container->updatesEnabled();
|
||||
#endif
|
||||
|
||||
#if !defined(QT_NO_EFFECTS)
|
||||
#if QT_CONFIG(effects)
|
||||
bool scrollDown = (listRect.topLeft() == below);
|
||||
if (QApplication::isEffectEnabled(Qt::UI_AnimateCombo)
|
||||
&& !style->styleHint(QStyle::SH_ComboBox_Popup, &opt, this) && !window()->testAttribute(Qt::WA_DontShowOnScreen))
|
||||
@ -2826,7 +2826,7 @@ void QComboBox::hidePopup()
|
||||
{
|
||||
Q_D(QComboBox);
|
||||
if (d->container && d->container->isVisible()) {
|
||||
#if !defined(QT_NO_EFFECTS)
|
||||
#if QT_CONFIG(effects)
|
||||
QSignalBlocker modelBlocker(d->model);
|
||||
QSignalBlocker viewBlocker(d->container->itemView());
|
||||
QSignalBlocker containerBlocker(d->container);
|
||||
@ -2870,7 +2870,7 @@ void QComboBox::hidePopup()
|
||||
modelBlocker.unblock();
|
||||
|
||||
if (!didFade)
|
||||
#endif // QT_NO_EFFECTS
|
||||
#endif // QT_CONFIG(effects)
|
||||
// Fade should implicitly hide as well ;-)
|
||||
d->container->hide();
|
||||
}
|
||||
@ -2934,7 +2934,7 @@ void QComboBox::focusInEvent(QFocusEvent *e)
|
||||
update();
|
||||
if (d->lineEdit) {
|
||||
d->lineEdit->event(e);
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (d->lineEdit->completer())
|
||||
d->lineEdit->completer()->setWidget(this);
|
||||
#endif
|
||||
@ -3160,7 +3160,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e)
|
||||
{
|
||||
Q_D(QComboBox);
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (d->lineEdit
|
||||
&& d->lineEdit->completer()
|
||||
&& d->lineEdit->completer()->popup()
|
||||
@ -3496,7 +3496,7 @@ void QComboBox::setModelColumn(int visibleColumn)
|
||||
QListView *lv = qobject_cast<QListView *>(d->viewContainer()->itemView());
|
||||
if (lv)
|
||||
lv->setModelColumn(visibleColumn);
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (d->lineEdit && d->lineEdit->completer()
|
||||
&& d->lineEdit->completer() == d->completer)
|
||||
d->lineEdit->completer()->setCompletionColumn(visibleColumn);
|
||||
|
@ -71,10 +71,10 @@ class Q_WIDGETS_EXPORT QComboBox : public QWidget
|
||||
Q_PROPERTY(int minimumContentsLength READ minimumContentsLength WRITE setMinimumContentsLength)
|
||||
Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
Q_PROPERTY(bool autoCompletion READ autoCompletion WRITE setAutoCompletion DESIGNABLE false)
|
||||
Q_PROPERTY(Qt::CaseSensitivity autoCompletionCaseSensitivity READ autoCompletionCaseSensitivity WRITE setAutoCompletionCaseSensitivity DESIGNABLE false)
|
||||
#endif // QT_NO_COMPLETER
|
||||
#endif // QT_CONFIG(completer)
|
||||
|
||||
Q_PROPERTY(bool duplicatesEnabled READ duplicatesEnabled WRITE setDuplicatesEnabled)
|
||||
Q_PROPERTY(bool frame READ hasFrame WRITE setFrame)
|
||||
@ -91,7 +91,7 @@ public:
|
||||
void setMaxCount(int max);
|
||||
int maxCount() const;
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
bool autoCompletion() const;
|
||||
void setAutoCompletion(bool enable);
|
||||
|
||||
@ -149,7 +149,7 @@ public:
|
||||
const QValidator *validator() const;
|
||||
#endif
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
void setCompleter(QCompleter *c);
|
||||
QCompleter *completer() const;
|
||||
#endif
|
||||
@ -262,7 +262,7 @@ private:
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_rowsRemoved(const QModelIndex & parent, int start, int end))
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed())
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_modelReset())
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_completerActivated(const QModelIndex &index))
|
||||
#endif
|
||||
};
|
||||
|
@ -67,7 +67,9 @@
|
||||
#include "QtCore/qtimer.h"
|
||||
#include "private/qwidget_p.h"
|
||||
#include "QtCore/qpointer.h"
|
||||
#if QT_CONFIG(completer)
|
||||
#include "QtWidgets/qcompleter.h"
|
||||
#endif
|
||||
#include "QtGui/qevent.h"
|
||||
#include "QtCore/qdebug.h"
|
||||
|
||||
@ -356,7 +358,7 @@ public:
|
||||
void _q_emitCurrentIndexChanged(const QModelIndex &index);
|
||||
void _q_modelDestroyed();
|
||||
void _q_modelReset();
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
void _q_completerActivated(const QModelIndex &index);
|
||||
#endif
|
||||
void _q_resetButton();
|
||||
@ -416,7 +418,7 @@ public:
|
||||
#ifdef Q_OS_MAC
|
||||
QPlatformMenu *m_platformMenu;
|
||||
#endif
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
QPointer<QCompleter> completer;
|
||||
#endif
|
||||
static QPalette viewContainerPalette(QComboBox *cmb)
|
||||
|
@ -38,7 +38,6 @@
|
||||
****************************************************************************/
|
||||
|
||||
#include "qapplication.h"
|
||||
#ifndef QT_NO_EFFECTS
|
||||
#include "qdesktopwidget.h"
|
||||
#include "qeffects_p.h"
|
||||
#include "qevent.h"
|
||||
@ -607,5 +606,3 @@ QT_END_NAMESPACE
|
||||
*/
|
||||
|
||||
#include "qeffects.moc"
|
||||
|
||||
#endif //QT_NO_EFFECTS
|
||||
|
@ -53,8 +53,9 @@
|
||||
//
|
||||
|
||||
#include "QtCore/qnamespace.h"
|
||||
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
||||
|
||||
#ifndef QT_NO_EFFECTS
|
||||
QT_REQUIRE_CONFIG(effects);
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -77,6 +78,4 @@ extern void Q_WIDGETS_EXPORT qFadeEffect(QWidget*, int time = -1);
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QT_NO_EFFECTS
|
||||
|
||||
#endif // QEFFECTS_P_H
|
||||
|
@ -47,8 +47,6 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
#ifndef QT_NO_KEYSEQUENCEEDIT
|
||||
|
||||
Q_STATIC_ASSERT(QKeySequencePrivate::MaxKeyCount == 4); // assumed by the code around here
|
||||
|
||||
void QKeySequenceEditPrivate::init()
|
||||
@ -332,8 +330,6 @@ void QKeySequenceEdit::timerEvent(QTimerEvent *e)
|
||||
QWidget::timerEvent(e);
|
||||
}
|
||||
|
||||
#endif // QT_NO_KEYSEQUENCEEDIT
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include "moc_qkeysequenceedit.cpp"
|
||||
|
@ -44,9 +44,9 @@
|
||||
#include <QtWidgets/qtwidgetsglobal.h>
|
||||
#include <QtWidgets/qwidget.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
QT_REQUIRE_CONFIG(keysequenceedit);
|
||||
|
||||
#ifndef QT_NO_KEYSEQUENCEEDIT
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QKeySequenceEditPrivate;
|
||||
class Q_WIDGETS_EXPORT QKeySequenceEdit : public QWidget
|
||||
@ -82,8 +82,6 @@ private:
|
||||
Q_DECLARE_PRIVATE(QKeySequenceEdit)
|
||||
};
|
||||
|
||||
#endif // QT_NO_KEYSEQUENCEEDIT
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QKEYSEQUENCEEDIT_H
|
||||
|
@ -58,9 +58,9 @@
|
||||
#include <private/qwidget_p.h>
|
||||
#include <private/qkeysequence_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
QT_REQUIRE_CONFIG(keysequenceedit);
|
||||
|
||||
#ifndef QT_NO_KEYSEQUENCEEDIT
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QLineEdit;
|
||||
|
||||
@ -81,8 +81,6 @@ public:
|
||||
int releaseTimer;
|
||||
};
|
||||
|
||||
#endif // QT_NO_KEYSEQUENCEEDIT
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QKEYSEQUENCEEDIT_P_H
|
||||
|
@ -610,7 +610,7 @@ void QLineEdit::setValidator(const QValidator *v)
|
||||
}
|
||||
#endif // QT_NO_VALIDATOR
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
/*!
|
||||
\since 4.2
|
||||
|
||||
@ -662,7 +662,7 @@ QCompleter *QLineEdit::completer() const
|
||||
return d->control->completer();
|
||||
}
|
||||
|
||||
#endif // QT_NO_COMPLETER
|
||||
#endif // QT_CONFIG(completer)
|
||||
|
||||
/*!
|
||||
Returns a recommended size for the widget.
|
||||
@ -1764,7 +1764,7 @@ void QLineEdit::inputMethodEvent(QInputMethodEvent *e)
|
||||
|
||||
d->control->processInputMethodEvent(e);
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (!e->commitString().isEmpty())
|
||||
d->control->complete(Qt::Key_unknown);
|
||||
#endif
|
||||
@ -1841,7 +1841,7 @@ void QLineEdit::focusInEvent(QFocusEvent *e)
|
||||
d->control->setCancelText(d->control->text());
|
||||
}
|
||||
#endif
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (d->control->completer()) {
|
||||
d->control->completer()->setWidget(this);
|
||||
QObject::connect(d->control->completer(), SIGNAL(activated(QString)),
|
||||
@ -1884,7 +1884,7 @@ void QLineEdit::focusOutEvent(QFocusEvent *e)
|
||||
#ifdef QT_KEYPAD_NAVIGATION
|
||||
d->control->setCancelText(QString());
|
||||
#endif
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (d->control->completer()) {
|
||||
QObject::disconnect(d->control->completer(), 0, this, 0);
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ public:
|
||||
const QValidator * validator() const;
|
||||
#endif
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
void setCompleter(QCompleter *completer);
|
||||
QCompleter *completer() const;
|
||||
#endif
|
||||
@ -252,7 +252,7 @@ private:
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_handleWindowActivate())
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_textEdited(const QString &))
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_cursorPositionChanged(int, int))
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
Q_PRIVATE_SLOT(d_func(), void _q_completionHighlighted(const QString &))
|
||||
#endif
|
||||
#ifdef QT_KEYPAD_NAVIGATION
|
||||
|
@ -90,7 +90,7 @@ QRect QLineEditPrivate::cursorRect() const
|
||||
return adjustedControlRect(control->cursorRect());
|
||||
}
|
||||
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
|
||||
void QLineEditPrivate::_q_completionHighlighted(const QString &newText)
|
||||
{
|
||||
@ -111,7 +111,7 @@ void QLineEditPrivate::_q_completionHighlighted(const QString &newText)
|
||||
}
|
||||
}
|
||||
|
||||
#endif // QT_NO_COMPLETER
|
||||
#endif // QT_CONFIG(completer)
|
||||
|
||||
void QLineEditPrivate::_q_handleWindowActivate()
|
||||
{
|
||||
@ -124,7 +124,7 @@ void QLineEditPrivate::_q_textEdited(const QString &text)
|
||||
{
|
||||
Q_Q(QLineEdit);
|
||||
emit q->textEdited(text);
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
if (control->completer()
|
||||
&& control->completer()->completionMode() != QCompleter::InlineCompletion)
|
||||
control->complete(-1); // update the popup on cut/paste/del
|
||||
|
@ -63,7 +63,9 @@
|
||||
#include "QtGui/qicon.h"
|
||||
#include "QtWidgets/qstyleoption.h"
|
||||
#include "QtCore/qbasictimer.h"
|
||||
#if QT_CONFIG(completer)
|
||||
#include "QtWidgets/qcompleter.h"
|
||||
#endif
|
||||
#include "QtCore/qpointer.h"
|
||||
#include "QtCore/qmimedata.h"
|
||||
|
||||
@ -203,7 +205,7 @@ public:
|
||||
#endif
|
||||
void _q_selectionChanged();
|
||||
void _q_updateNeeded(const QRect &);
|
||||
#ifndef QT_NO_COMPLETER
|
||||
#if QT_CONFIG(completer)
|
||||
void _q_completionHighlighted(const QString &);
|
||||
#endif
|
||||
QPoint mousePressPos;
|
||||
|
@ -50,7 +50,10 @@
|
||||
#include "qtoolbar.h"
|
||||
|
||||
#include <qapplication.h>
|
||||
#include <qmenu.h>
|
||||
#if QT_CONFIG(menubar)
|
||||
#include <qmenubar.h>
|
||||
#endif
|
||||
#if QT_CONFIG(statusbar)
|
||||
#include <qstatusbar.h>
|
||||
#endif
|
||||
@ -491,7 +494,7 @@ void QMainWindow::setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)
|
||||
emit toolButtonStyleChanged(d->toolButtonStyle);
|
||||
}
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
/*!
|
||||
Returns the menu bar for the main window. This function creates
|
||||
and returns an empty menu bar if the menu bar does not exist.
|
||||
@ -578,7 +581,7 @@ void QMainWindow::setMenuWidget(QWidget *menuBar)
|
||||
}
|
||||
d->layout->setMenuBar(menuBar);
|
||||
}
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
|
||||
#if QT_CONFIG(statusbar)
|
||||
/*!
|
||||
@ -1412,7 +1415,7 @@ void QMainWindow::contextMenuEvent(QContextMenuEvent *event)
|
||||
// children and for the menu bar as well
|
||||
QWidget *child = childAt(event->pos());
|
||||
while (child && child != this) {
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mb = qobject_cast<QMenuBar *>(child)) {
|
||||
if (mb->parentWidget() != this)
|
||||
return;
|
||||
|
@ -123,7 +123,7 @@ public:
|
||||
|
||||
bool isSeparator(const QPoint &pos) const;
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
QMenuBar *menuBar() const;
|
||||
void setMenuBar(QMenuBar *menubar);
|
||||
|
||||
|
@ -171,6 +171,7 @@
|
||||
#include <private/qdesktopwidget_p.h>
|
||||
#include <QDebug>
|
||||
#include <qmath.h>
|
||||
#include <qmenu.h>
|
||||
#include <private/qlayoutengine_p.h>
|
||||
|
||||
#include <algorithm>
|
||||
|
@ -162,6 +162,7 @@
|
||||
#include <QDebug>
|
||||
#include <QMdiArea>
|
||||
#include <QScopedValueRollback>
|
||||
#include <QMenu>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -702,7 +703,7 @@ ControlContainer::ControlContainer(QMdiSubWindow *mdiChild)
|
||||
: QObject(mdiChild),
|
||||
previousLeft(0),
|
||||
previousRight(0),
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
m_menuBar(0),
|
||||
#endif
|
||||
mdiChild(mdiChild)
|
||||
@ -724,7 +725,7 @@ ControlContainer::ControlContainer(QMdiSubWindow *mdiChild)
|
||||
|
||||
ControlContainer::~ControlContainer()
|
||||
{
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
removeButtonsFromMenuBar();
|
||||
#endif
|
||||
delete m_menuLabel;
|
||||
@ -733,7 +734,7 @@ ControlContainer::~ControlContainer()
|
||||
m_controllerWidget = 0;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
/*
|
||||
\internal
|
||||
*/
|
||||
@ -845,7 +846,7 @@ void ControlContainer::removeButtonsFromMenuBar(QMenuBar *menuBar)
|
||||
mdiChild->window()->setWindowTitle(mdiChild->d_func()->originalWindowTitle());
|
||||
}
|
||||
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
|
||||
void ControlContainer::updateWindowIcon(const QIcon &windowIcon)
|
||||
{
|
||||
@ -1265,7 +1266,7 @@ void QMdiSubWindowPrivate::setNormalMode()
|
||||
isMaximizeMode = false;
|
||||
|
||||
ensureWindowState(Qt::WindowNoState);
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
removeButtonsFromMenuBar();
|
||||
#endif
|
||||
|
||||
@ -1372,7 +1373,7 @@ void QMdiSubWindowPrivate::setMaximizeMode()
|
||||
updateGeometryConstraints();
|
||||
|
||||
if (wasVisible) {
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mBar = menuBar())
|
||||
showButtonsInMenuBar(mBar);
|
||||
else
|
||||
@ -1435,7 +1436,7 @@ void QMdiSubWindowPrivate::setActive(bool activate, bool changeFocus)
|
||||
Qt::WindowStates oldWindowState = q->windowState();
|
||||
ensureWindowState(Qt::WindowActive);
|
||||
emit q->aboutToActivate();
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mBar = menuBar())
|
||||
showButtonsInMenuBar(mBar);
|
||||
#endif
|
||||
@ -1772,7 +1773,7 @@ bool QMdiSubWindowPrivate::drawTitleBarWhenMaximized() const
|
||||
|
||||
if (q->style()->styleHint(QStyle::SH_Workspace_FillSpaceOnMaximize, 0, q))
|
||||
return true;
|
||||
#if defined(QT_NO_MENUBAR) || defined(QT_NO_MAINWINDOW)
|
||||
#if !QT_CONFIG(menubar) || defined(QT_NO_MAINWINDOW)
|
||||
Q_UNUSED(isChildOfQMdiSubWindow);
|
||||
return true;
|
||||
#else
|
||||
@ -1785,7 +1786,7 @@ bool QMdiSubWindowPrivate::drawTitleBarWhenMaximized() const
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
|
||||
/*!
|
||||
\internal
|
||||
@ -1856,7 +1857,7 @@ void QMdiSubWindowPrivate::removeButtonsFromMenuBar()
|
||||
originalTitle.clear();
|
||||
}
|
||||
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
|
||||
void QMdiSubWindowPrivate::updateWindowTitle(bool isRequestFromChild)
|
||||
{
|
||||
@ -2281,7 +2282,7 @@ QMdiSubWindow::QMdiSubWindow(QWidget *parent, Qt::WindowFlags flags)
|
||||
QMdiSubWindow::~QMdiSubWindow()
|
||||
{
|
||||
Q_D(QMdiSubWindow);
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
d->removeButtonsFromMenuBar();
|
||||
#endif
|
||||
d->setActive(false);
|
||||
@ -2614,7 +2615,7 @@ void QMdiSubWindow::showShaded()
|
||||
d->ensureWindowState(Qt::WindowMinimized);
|
||||
}
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
d->removeButtonsFromMenuBar();
|
||||
#endif
|
||||
|
||||
@ -2754,7 +2755,7 @@ bool QMdiSubWindow::eventFilter(QObject *object, QEvent *event)
|
||||
if (object == d->baseWidget) {
|
||||
d->updateWindowTitle(true);
|
||||
d->lastChildWindowTitle = d->baseWidget->windowTitle();
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
} else if (maximizedButtonsWidget() && d->controlContainer->menuBar() && d->controlContainer->menuBar()
|
||||
->cornerWidget(Qt::TopRightCorner) == maximizedButtonsWidget()) {
|
||||
d->originalTitle.clear();
|
||||
@ -2817,7 +2818,7 @@ bool QMdiSubWindow::event(QEvent *event)
|
||||
break;
|
||||
case QEvent::ParentChange: {
|
||||
bool wasResized = testAttribute(Qt::WA_Resized);
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
d->removeButtonsFromMenuBar();
|
||||
#endif
|
||||
d->currentOperation = QMdiSubWindowPrivate::None;
|
||||
@ -2874,12 +2875,12 @@ bool QMdiSubWindow::event(QEvent *event)
|
||||
case QEvent::ModifiedChange:
|
||||
if (!windowTitle().contains(QLatin1String("[*]")))
|
||||
break;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (maximizedButtonsWidget() && d->controlContainer->menuBar() && d->controlContainer->menuBar()
|
||||
->cornerWidget(Qt::TopRightCorner) == maximizedButtonsWidget()) {
|
||||
window()->setWindowModified(isWindowModified());
|
||||
}
|
||||
#endif // QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
d->updateInternalWindowTitle();
|
||||
break;
|
||||
case QEvent::LayoutDirectionChange:
|
||||
@ -2942,7 +2943,7 @@ void QMdiSubWindow::showEvent(QShowEvent *showEvent)
|
||||
d->updateDirtyRegions();
|
||||
// Show buttons in the menu bar if they're already not there.
|
||||
// We want to do this when QMdiSubWindow becomes visible after being hidden.
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (d->controlContainer) {
|
||||
if (QMenuBar *menuBar = d->menuBar()) {
|
||||
if (menuBar->cornerWidget(Qt::TopRightCorner) != maximizedButtonsWidget())
|
||||
@ -2958,7 +2959,7 @@ void QMdiSubWindow::showEvent(QShowEvent *showEvent)
|
||||
*/
|
||||
void QMdiSubWindow::hideEvent(QHideEvent * /*hideEvent*/)
|
||||
{
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
d_func()->removeButtonsFromMenuBar();
|
||||
#endif
|
||||
}
|
||||
@ -3032,7 +3033,7 @@ void QMdiSubWindow::closeEvent(QCloseEvent *closeEvent)
|
||||
closeEvent->ignore();
|
||||
return;
|
||||
}
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
d->removeButtonsFromMenuBar();
|
||||
#endif
|
||||
d->setActive(false);
|
||||
|
@ -58,7 +58,9 @@
|
||||
|
||||
#include <QStyle>
|
||||
#include <QStyleOptionTitleBar>
|
||||
#if QT_CONFIG(menubar)
|
||||
#include <QMenuBar>
|
||||
#endif
|
||||
#include <QSizeGrip>
|
||||
#include <QPointer>
|
||||
#include <QDebug>
|
||||
@ -96,7 +98,7 @@ public:
|
||||
ControlContainer(QMdiSubWindow *mdiChild);
|
||||
~ControlContainer();
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
void showButtonsInMenuBar(QMenuBar *menuBar);
|
||||
void removeButtonsFromMenuBar(QMenuBar *menuBar = 0);
|
||||
QMenuBar *menuBar() const { return m_menuBar; }
|
||||
@ -108,7 +110,7 @@ public:
|
||||
private:
|
||||
QPointer<QWidget> previousLeft;
|
||||
QPointer<QWidget> previousRight;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
QPointer<QMenuBar> m_menuBar;
|
||||
#endif
|
||||
QPointer<QWidget> m_controllerWidget;
|
||||
@ -252,7 +254,7 @@ public:
|
||||
int titleBarHeight(const QStyleOptionTitleBar &options) const;
|
||||
void sizeParameters(int *margin, int *minWidth) const;
|
||||
bool drawTitleBarWhenMaximized() const;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
QMenuBar *menuBar() const;
|
||||
void showButtonsInMenuBar(QMenuBar *menuBar);
|
||||
void removeButtonsFromMenuBar();
|
||||
|
@ -41,6 +41,8 @@
|
||||
|
||||
#ifndef QT_NO_MENU
|
||||
|
||||
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
||||
|
||||
#include "qdebug.h"
|
||||
#include "qstyle.h"
|
||||
#include "qevent.h"
|
||||
@ -56,7 +58,7 @@
|
||||
#ifndef QT_NO_ACCESSIBILITY
|
||||
# include "qaccessible.h"
|
||||
#endif
|
||||
#ifndef QT_NO_EFFECTS
|
||||
#if QT_CONFIG(effects)
|
||||
# include <private/qeffects_p.h>
|
||||
#endif
|
||||
#if QT_CONFIG(whatsthis)
|
||||
@ -64,7 +66,9 @@
|
||||
#endif
|
||||
|
||||
#include "qmenu_p.h"
|
||||
#if QT_CONFIG(menubar)
|
||||
#include "qmenubar_p.h"
|
||||
#endif
|
||||
#include "qwidgetaction.h"
|
||||
#if QT_CONFIG(toolbutton)
|
||||
#include "qtoolbutton.h"
|
||||
@ -498,7 +502,7 @@ void QMenuPrivate::hideUpToMenuBar()
|
||||
QWidget *caused = causedPopup.widget;
|
||||
hideMenu(q); //hide after getting causedPopup
|
||||
while(caused) {
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mb = qobject_cast<QMenuBar*>(caused)) {
|
||||
mb->d_func()->setCurrentAction(0);
|
||||
mb->d_func()->setKeyboardMode(false);
|
||||
@ -522,7 +526,7 @@ void QMenuPrivate::hideMenu(QMenu *menu)
|
||||
{
|
||||
if (!menu)
|
||||
return;
|
||||
#if !defined(QT_NO_EFFECTS)
|
||||
#if QT_CONFIG(effects)
|
||||
QSignalBlocker blocker(menu);
|
||||
aboutToHide = true;
|
||||
// Flash item which is about to trigger (if any).
|
||||
@ -544,7 +548,7 @@ void QMenuPrivate::hideMenu(QMenu *menu)
|
||||
|
||||
aboutToHide = false;
|
||||
blocker.unblock();
|
||||
#endif // QT_NO_EFFECTS
|
||||
#endif // QT_CONFIG(effects)
|
||||
if (activeMenu == menu)
|
||||
activeMenu = 0;
|
||||
menu->d_func()->causedPopup.action = 0;
|
||||
@ -675,7 +679,7 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason
|
||||
}
|
||||
if (hideActiveMenu && previousAction != currentAction) {
|
||||
if (popup == -1) {
|
||||
#ifndef QT_NO_EFFECTS
|
||||
#if QT_CONFIG(effects)
|
||||
// kill any running effect
|
||||
qFadeEffect(0);
|
||||
qScrollEffect(0);
|
||||
@ -1280,7 +1284,7 @@ bool QMenuPrivate::mouseEventTaken(QMouseEvent *e)
|
||||
bool passOnEvent = false;
|
||||
QWidget *next_widget = 0;
|
||||
QPoint cpos = caused->mapFromGlobal(e->globalPos());
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mb = qobject_cast<QMenuBar*>(caused)) {
|
||||
passOnEvent = mb->rect().contains(cpos);
|
||||
} else
|
||||
@ -1322,7 +1326,7 @@ void QMenuPrivate::activateCausedStack(const QVector<QPointer<QWidget> > &caused
|
||||
} else if (action_e == QAction::Hover) {
|
||||
emit qmenu->hovered(action);
|
||||
}
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
} else if (QMenuBar *qmenubar = qobject_cast<QMenuBar*>(widget)) {
|
||||
if (action_e == QAction::Trigger) {
|
||||
emit qmenubar->triggered(action);
|
||||
@ -1417,7 +1421,7 @@ void QMenuPrivate::_q_actionTriggered()
|
||||
QVector< QPointer<QWidget> > list;
|
||||
for(QWidget *widget = q->parentWidget(); widget; ) {
|
||||
if (qobject_cast<QMenu*>(widget)
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
|| qobject_cast<QMenuBar*>(widget)
|
||||
#endif
|
||||
) {
|
||||
@ -2318,7 +2322,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
|
||||
d->doChildEffects = true;
|
||||
d->updateLayoutDirection();
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
// if this menu is part of a chain attached to a QMenuBar, set the
|
||||
// _NET_WM_WINDOW_TYPE_DROPDOWN_MENU X11 window type
|
||||
setAttribute(Qt::WA_X11NetWmWindowTypeDropDownMenu, qobject_cast<QMenuBar *>(d->topCausedWidget()) != 0);
|
||||
@ -2414,11 +2418,11 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
|
||||
if (snapToMouse) // position flowing left from the mouse
|
||||
pos.setX(mouse.x() - size.width());
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
// if the menu is in a menubar or is a submenu, it should be right-aligned
|
||||
if (qobject_cast<QMenuBar*>(d->causedPopup.widget) || qobject_cast<QMenu*>(d->causedPopup.widget))
|
||||
pos.rx() -= size.width();
|
||||
#endif //QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
|
||||
if (pos.x() < screen.left() + desktopFrame)
|
||||
pos.setX(qMax(p.x(), screen.left() + desktopFrame));
|
||||
@ -2479,7 +2483,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
|
||||
}
|
||||
}
|
||||
setGeometry(QRect(pos, size));
|
||||
#ifndef QT_NO_EFFECTS
|
||||
#if QT_CONFIG(effects)
|
||||
int hGuess = isRightToLeft() ? QEffects::LeftScroll : QEffects::RightScroll;
|
||||
int vGuess = QEffects::DownScroll;
|
||||
if (isRightToLeft()) {
|
||||
@ -2492,7 +2496,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
|
||||
hGuess = QEffects::LeftScroll;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if ((snapToMouse && (pos.y() + size.height() / 2 < mouse.y())) ||
|
||||
(qobject_cast<QMenuBar*>(d->causedPopup.widget) &&
|
||||
pos.y() + size.width() / 2 < d->causedPopup.widget->mapToGlobal(d->causedPopup.widget->pos()).y()))
|
||||
@ -2500,7 +2504,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
|
||||
#endif
|
||||
if (QApplication::isEffectEnabled(Qt::UI_AnimateMenu)) {
|
||||
bool doChildEffects = true;
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mb = qobject_cast<QMenuBar*>(d->causedPopup.widget)) {
|
||||
doChildEffects = mb->d_func()->doChildEffects;
|
||||
mb->d_func()->doChildEffects = false;
|
||||
@ -2662,7 +2666,7 @@ void QMenu::hideEvent(QHideEvent *)
|
||||
QAccessibleEvent event(this, QAccessible::PopupMenuEnd);
|
||||
QAccessible::updateAccessibility(&event);
|
||||
#endif
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mb = qobject_cast<QMenuBar*>(d->causedPopup.widget))
|
||||
mb->d_func()->setCurrentAction(0);
|
||||
#endif
|
||||
@ -3211,7 +3215,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
|
||||
if (style()->styleHint(QStyle::SH_MenuBar_AltKeyNavigation, 0, this))
|
||||
{
|
||||
d->hideMenu(this);
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mb = qobject_cast<QMenuBar*>(QApplication::focusWidget())) {
|
||||
mb->d_func()->setKeyboardMode(false);
|
||||
}
|
||||
@ -3273,7 +3277,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
|
||||
{
|
||||
QPointer<QWidget> caused = d->causedPopup.widget;
|
||||
d->hideMenu(this); // hide after getting causedPopup
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mb = qobject_cast<QMenuBar*>(caused)) {
|
||||
mb->d_func()->setCurrentAction(d->menuAction);
|
||||
mb->d_func()->setKeyboardMode(true);
|
||||
@ -3350,7 +3354,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
|
||||
}
|
||||
}
|
||||
if (!key_consumed) {
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
if (QMenuBar *mb = qobject_cast<QMenuBar*>(d->topCausedWidget())) {
|
||||
QAction *oldAct = mb->d_func()->currentAction;
|
||||
QApplication::sendEvent(mb, e);
|
||||
|
@ -41,8 +41,10 @@
|
||||
#import <AppKit/AppKit.h>
|
||||
|
||||
#include "qmenu.h"
|
||||
#if QT_CONFIG(menubar)
|
||||
#include "qmenubar.h"
|
||||
#include "qmenubar_p.h"
|
||||
#endif
|
||||
#include "qmacnativewidget_mac.h"
|
||||
|
||||
#include <QtCore/QDebug>
|
||||
@ -139,7 +141,7 @@ void QMenuPrivate::moveWidgetToPlatformItem(QWidget *widget, QPlatformMenuItem*
|
||||
|
||||
#endif //QT_NO_MENU
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
#if QT_CONFIG(menubar)
|
||||
|
||||
/*!
|
||||
\since 5.2
|
||||
@ -159,7 +161,7 @@ NSMenu *QMenuBar::toNSMenu()
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
#endif //QT_NO_MENUBAR
|
||||
#endif // QT_CONFIG(menubar)
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
|
@ -52,7 +52,9 @@
|
||||
//
|
||||
|
||||
#include <QtWidgets/private/qtwidgetsglobal_p.h>
|
||||
#if QT_CONFIG(menubar)
|
||||
#include "QtWidgets/qmenubar.h"
|
||||
#endif
|
||||
#include "QtWidgets/qstyleoption.h"
|
||||
#include "QtCore/qdatetime.h"
|
||||
#include "QtCore/qmap.h"
|
||||
|
@ -62,9 +62,6 @@
|
||||
#include "qpa/qplatformintegration.h"
|
||||
#include <private/qdesktopwidget_p.h>
|
||||
|
||||
#ifndef QT_NO_MENUBAR
|
||||
|
||||
|
||||
#include "qmenu_p.h"
|
||||
#include "qmenubar_p.h"
|
||||
#include "qdebug.h"
|
||||
@ -1875,9 +1872,6 @@ QPlatformMenuBar *QMenuBar::platformMenuBar()
|
||||
|
||||
// for private slots
|
||||
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include <moc_qmenubar.cpp>
|
||||
|
||||
#endif // QT_NO_MENUBAR
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user