summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-08-24 19:39:52 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-08-24 19:39:52 (GMT)
commit0b9c4f3b5df70cab042911885febb1909838103c (patch)
tree650739ea90e7b6a2c9df6ca4a1b1e3de10adbbca
parente04456789f9e43a734b8618c82904f3a4842f253 (diff)
parentb8976735d780b17a4a64b84dd643ea87974e39ed (diff)
downloadQt-0b9c4f3b5df70cab042911885febb1909838103c.zip
Qt-0b9c4f3b5df70cab042911885febb1909838103c.tar.gz
Qt-0b9c4f3b5df70cab042911885febb1909838103c.tar.bz2
Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-fire-team
* 'master' of git://scm.dev.nokia.troll.no/qt/qt-fire-team: (41 commits) Spelling fix Fix compilation of qjpeg on MinGW with GCC 4.6 Make the DBus timeout configurable in QDBusAbstractInterface. Fix non-ascii name issues in ICD. Compile fix for Symbian 5th and earlier Improve documentation for QDeclarativeView::setSource() fix copying webkit guide under windows Add a QApplication::queryKeyboardModifiers() method. Symbian: Fix backspace on empty lines of multiline textedits Handle CloseSoftwareInputPanel event in QCoeFepInputContext Fix delayed password masking mid-string. Disabled splitscreen translation still moves screen Doc: Fixed qdoc warnings. don't crash when destroying codec list Fix a crash in a11y introduced by d289e54f2d2aa066cb3 Doc: Fixed qdoc warnings. test: Fix `tst_qfiledialog' in a namespaced build Fix files that don't end with a newline character Fix bug QTBUG-13901, Mac style button rect Improved comment finding code. ...
-rw-r--r--config.tests/mac/xcodeversion.cpp6
-rw-r--r--demos/embedded/lightmaps/lightmaps.h2
-rw-r--r--demos/embedded/lightmaps/mapzoom.h2
-rw-r--r--demos/embedded/lightmaps/slippymap.h2
-rw-r--r--demos/mobile/guitartuner/src/guitartuner.rc2
-rw-r--r--doc/doc.pri8
-rw-r--r--doc/src/declarative/network.qdoc7
-rw-r--r--doc/src/getting-started/gettingstartedqt.qdoc72
-rw-r--r--doc/src/qt-webpages.qdoc2
-rw-r--r--doc/src/snippets/qcolumnview/main.cpp2
-rw-r--r--doc/src/snippets/textdocument-imagedrop/main.cpp2
-rw-r--r--doc/src/snippets/textdocument-imagedrop/textedit.h6
-rw-r--r--examples/tutorials/gettingStarted/gsQml/filedialog/dialogPlugin.cpp2
-rw-r--r--examples/tutorials/gettingStarted/gsQml/filedialog/directory.cpp2
-rw-r--r--examples/tutorials/gettingStarted/gsQml/filedialog/file.cpp2
-rw-r--r--examples/tutorials/gettingStarted/gsQml/filedialog/file.h2
-rwxr-xr-xexamples/tutorials/gettingStarted/gsQt/part2/main.cpp14
-rwxr-xr-xexamples/tutorials/modelview/4_headers/main.cpp2
-rw-r--r--examples/tutorials/threads/clock/clockthread.h2
-rw-r--r--src/corelib/codecs/qtextcodec.cpp9
-rw-r--r--src/corelib/io/qfile.cpp10
-rw-r--r--src/corelib/io/qfsfileengine.cpp16
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp8
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice.cpp2
-rw-r--r--src/corelib/io/qurl.cpp5
-rw-r--r--src/corelib/plugin/quuid.cpp14
-rw-r--r--src/corelib/tools/qlocale.qdoc4
-rw-r--r--src/dbus/qdbusabstractinterface.cpp31
-rw-r--r--src/dbus/qdbusabstractinterface.h3
-rw-r--r--src/dbus/qdbusabstractinterface_p.h1
-rw-r--r--src/declarative/util/qdeclarativeview.cpp2
-rw-r--r--src/gui/accessible/qaccessible_win.cpp113
-rw-r--r--src/gui/dialogs/qfiledialog_win_p.h2
-rw-r--r--src/gui/embedded/qscreen_qws.cpp1
-rw-r--r--src/gui/image/qjpeghandler.cpp5
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_s60.cpp34
-rw-r--r--src/gui/kernel/qapplication.cpp21
-rw-r--r--src/gui/kernel/qapplication.h1
-rw-r--r--src/gui/kernel/qapplication_mac.mm5
-rw-r--r--src/gui/kernel/qapplication_qws.cpp5
-rw-r--r--src/gui/kernel/qapplication_s60.cpp8
-rw-r--r--src/gui/kernel/qapplication_win.cpp5
-rw-r--r--src/gui/kernel/qapplication_x11.cpp15
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm26
-rw-r--r--src/gui/kernel/qdnd_x11.cpp17
-rw-r--r--src/gui/painting/qpainter.cpp17
-rw-r--r--src/gui/styles/qmacstyle_mac.mm2
-rw-r--r--src/gui/text/qfont.cpp5
-rw-r--r--src/gui/text/qfontdatabase.cpp10
-rw-r--r--src/gui/text/qfontmetrics.cpp3
-rw-r--r--src/gui/text/qglyphrun.cpp3
-rw-r--r--src/gui/text/qplatformfontdatabase_qpa.cpp28
-rw-r--r--src/gui/text/qrawfont.cpp3
-rw-r--r--src/gui/widgets/qlinecontrol.cpp6
-rw-r--r--src/imports/shaders/shadereffectitem.cpp20
-rw-r--r--src/imports/shaders/shadereffectsource.cpp30
-rw-r--r--src/network/kernel/qnetworkproxy.cpp7
-rw-r--r--src/plugins/bearer/icd/dbusdispatcher.cpp4
-rw-r--r--src/plugins/bearer/icd/iapconf.cpp2
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.cpp28
-rw-r--r--tests/auto/qabstractspinbox/tst_qabstractspinbox.cpp2
-rw-r--r--tests/auto/qaudioinput/tst_qaudioinput.cpp133
-rw-r--r--tests/auto/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml4
-rw-r--r--tests/auto/qdbusabstractinterface/interface.cpp14
-rw-r--r--tests/auto/qdbusabstractinterface/interface.h1
-rw-r--r--tests/auto/qdbusabstractinterface/pinger.h7
-rw-r--r--tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp92
-rw-r--r--tests/auto/qdialog/tst_qdialog.cpp16
-rw-r--r--tests/auto/qfiledialog/tst_qfiledialog.cpp2
-rw-r--r--tests/auto/qlineedit/tst_qlineedit.cpp7
-rw-r--r--tests/auto/qpushbutton/tst_qpushbutton.cpp31
-rw-r--r--tools/macdeployqt/shared/shared.cpp2
-rw-r--r--tools/macdeployqt/tests/tst_deployment_mac.cpp2
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp5
-rw-r--r--tools/qdoc3/doc/config/images/arrow_down.pngbin0 -> 177 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/bg_l.pngbin0 -> 100 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/bg_l_blank.pngbin0 -> 84 bytes
-rw-r--r--tools/qdoc3/doc/config/images/bg_ll_blank.pngbin0 -> 320 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/bg_r.pngbin0 -> 96 bytes
-rw-r--r--tools/qdoc3/doc/config/images/bg_ul_blank.pngbin0 -> 304 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/box_bg.pngbin0 -> 89 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/breadcrumb.pngbin0 -> 134 bytes
-rw-r--r--tools/qdoc3/doc/config/images/bullet_dn.pngbin0 -> 230 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/bullet_gt.pngbin0 -> 124 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/bullet_sq.pngbin0 -> 74 bytes
-rw-r--r--tools/qdoc3/doc/config/images/bullet_up.pngbin0 -> 210 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/feedbackground.pngbin0 -> 263 bytes
-rw-r--r--tools/qdoc3/doc/config/images/header_bg.pngbin0 -> 114 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/horBar.pngbin0 -> 2807 bytes
-rw-r--r--tools/qdoc3/doc/config/images/page.pngbin0 -> 3102 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/page_bg.pngbin0 -> 84 bytes
-rw-r--r--tools/qdoc3/doc/config/images/spinner.gifbin0 -> 2037 bytes
-rwxr-xr-xtools/qdoc3/doc/config/images/sprites-combined.pngbin0 -> 62534 bytes
-rw-r--r--tools/qdoc3/puredocparser.cpp5
-rw-r--r--tools/qdoc3/puredocparser.h1
-rw-r--r--tools/qdoc3/qmlvisitor.cpp63
-rw-r--r--tools/qdoc3/qmlvisitor.h2
-rw-r--r--tools/qdoc3/test/qt-cpp-ignore.qdocconf3
-rw-r--r--tools/qdoc3/test/qt-html-templates-online.qdocconf14
-rw-r--r--tools/qdoc3/test/qt-project.qdocconf2
-rw-r--r--tools/qtconcurrent/codegenerator/src/codegenerator.cpp4
-rw-r--r--tools/qtestlib/wince/cetest/deployment.h2
102 files changed, 732 insertions, 352 deletions
diff --git a/config.tests/mac/xcodeversion.cpp b/config.tests/mac/xcodeversion.cpp
index df208e3..0cc3777 100644
--- a/config.tests/mac/xcodeversion.cpp
+++ b/config.tests/mac/xcodeversion.cpp
@@ -73,7 +73,7 @@ int main(int argc, const char **argv)
const char * ok3 ="3.0";
// ptr = fail1;
// printf ("string: %s\n", ptr);
-
+
int length = strlen(ptr);
if (length < 3) // expect "x.y" at least
return internal_error;
@@ -94,6 +94,6 @@ int main(int argc, const char **argv)
if (ptr[4] < '1')
return fail;
-
+
return success;
-} \ No newline at end of file
+}
diff --git a/demos/embedded/lightmaps/lightmaps.h b/demos/embedded/lightmaps/lightmaps.h
index 45b5c18..0e458ea 100644
--- a/demos/embedded/lightmaps/lightmaps.h
+++ b/demos/embedded/lightmaps/lightmaps.h
@@ -85,4 +85,4 @@ private:
bool invert;
};
-#endif \ No newline at end of file
+#endif
diff --git a/demos/embedded/lightmaps/mapzoom.h b/demos/embedded/lightmaps/mapzoom.h
index ac70a23..935660c 100644
--- a/demos/embedded/lightmaps/mapzoom.h
+++ b/demos/embedded/lightmaps/mapzoom.h
@@ -66,4 +66,4 @@ private:
QNetworkSession *networkSession;
};
-#endif \ No newline at end of file
+#endif
diff --git a/demos/embedded/lightmaps/slippymap.h b/demos/embedded/lightmaps/slippymap.h
index 64ba5c3..480dc81 100644
--- a/demos/embedded/lightmaps/slippymap.h
+++ b/demos/embedded/lightmaps/slippymap.h
@@ -84,4 +84,4 @@ private:
QUrl m_url;
};
-#endif \ No newline at end of file
+#endif
diff --git a/demos/mobile/guitartuner/src/guitartuner.rc b/demos/mobile/guitartuner/src/guitartuner.rc
index 85cee0b..b4f7a11 100644
--- a/demos/mobile/guitartuner/src/guitartuner.rc
+++ b/demos/mobile/guitartuner/src/guitartuner.rc
@@ -20,4 +20,4 @@ BEGIN
BEGIN
VALUE "Translation", 0x409, 1252
END
-END \ No newline at end of file
+END
diff --git a/doc/doc.pri b/doc/doc.pri
index 253e1b4..9d67386 100644
--- a/doc/doc.pri
+++ b/doc/doc.pri
@@ -14,6 +14,8 @@ win32:!win32-g++* {
}
COPYWEBKITGUIDE = $$QT_SOURCE_TREE/examples/webkit/webkit-guide
+COPYWEBKITTARGA = $$QT_BUILD_TREE/doc-build/html-qt
+COPYWEBKITTARGB = $$QT_BUILD_TREE/doc/html
$$unixstyle {
QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && QT_BUILD_TREE=$$QT_BUILD_TREE QT_SOURCE_TREE=$$QT_SOURCE_TREE $$QT_BUILD_TREE/bin/qdoc3 $$DOCS_GENERATION_DEFINES
@@ -21,12 +23,14 @@ $$unixstyle {
QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && set QT_BUILD_TREE=$$QT_BUILD_TREE&& set QT_SOURCE_TREE=$$QT_SOURCE_TREE&& $$QT_BUILD_TREE/bin/qdoc3.exe $$DOCS_GENERATION_DEFINES
QDOC = $$replace(QDOC, "/", "\\")
COPYWEBKITGUIDE = $$replace(COPYWEBKITGUIDE, "/", "\\")
+ COPYWEBKITTARGA = $$replace(COPYWEBKITTARGA, "/", "\\")
+ COPYWEBKITTARGB = $$replace(COPYWEBKITTARGB, "/", "\\")
}
ADP_DOCS_QDOCCONF_FILE = qt-build-docs-online.qdocconf
QT_DOCUMENTATION = ($$QDOC qt-api-only.qdocconf assistant.qdocconf designer.qdocconf \
linguist.qdocconf qmake.qdocconf qdeclarative.qdocconf) && \
(cd $$QT_BUILD_TREE && \
- $$QMAKE_COPY_DIR $$COPYWEBKITGUIDE $$QT_BUILD_TREE/doc-build/html-qt && \
+ $$QMAKE_COPY_DIR $$COPYWEBKITGUIDE $$COPYWEBKITTARGA && \
$$GENERATOR doc-build/html-qt/qt.qhp -o doc/qch/qt.qch && \
$$GENERATOR doc-build/html-assistant/assistant.qhp -o doc/qch/assistant.qch && \
$$GENERATOR doc-build/html-designer/designer.qhp -o doc/qch/designer.qch && \
@@ -52,7 +56,7 @@ win32-g++*:isEmpty(QMAKE_SH) {
}
# Build rules:
-adp_docs.commands = ($$QDOC $$ADP_DOCS_QDOCCONF_FILE && $$QMAKE_COPY_DIR $$COPYWEBKITGUIDE $$QT_BUILD_TREE/doc/html)
+adp_docs.commands = ($$QDOC $$ADP_DOCS_QDOCCONF_FILE && $$QMAKE_COPY_DIR $$COPYWEBKITGUIDE $$COPYWEBKITTARGB)
adp_docs.depends += sub-qdoc3 # qdoc3
qch_docs.commands = $$QT_DOCUMENTATION
qch_docs.depends += sub-qdoc3
diff --git a/doc/src/declarative/network.qdoc b/doc/src/declarative/network.qdoc
index cb83542..0ebf8ae 100644
--- a/doc/src/declarative/network.qdoc
+++ b/doc/src/declarative/network.qdoc
@@ -134,10 +134,9 @@ One of the URL schemes built into Qt is the "qrc" scheme. This allows content to
the executable using \l{The Qt Resource System}. Using this, an executable can reference QML content
that is compiled into the executable:
-\code
- QDeclarativeView *canvas = new QDeclarativeView;
- canvas->setUrl(QUrl("qrc:/dial.qml"));
-\endcode
+\quotefromfile snippets/declarative/qtbinding/resources/main.cpp
+\skipto view
+\printuntil setSource
The content itself can then use relative URLs, and so be transparently unaware that the content is
compiled into the executable.
diff --git a/doc/src/getting-started/gettingstartedqt.qdoc b/doc/src/getting-started/gettingstartedqt.qdoc
index eda5ee1..d37e8e0 100644
--- a/doc/src/getting-started/gettingstartedqt.qdoc
+++ b/doc/src/getting-started/gettingstartedqt.qdoc
@@ -38,6 +38,12 @@
documentation, and find the information you need for the
application you are developing.
+ The code for this tutorial is available in \c
+ {examples/tutorials/gettingStarted/gsQt} under your Qt
+ installation. If you are using the Qt SDK, you will find it in
+ \c{Examples/4.7/tutorials/gettingStarted/gsQt} (change \c{4.7} if
+ you are using a later Qt version).
+
\section1 Hello Notepad
In this first example, we simply create and show a text edit in a
@@ -139,28 +145,28 @@
Let us take a look at the code.
\code
- 1 #include <QtGui>
- 2
- 3 int main(int argv, char **args)
- 4 {
- 5 QApplication app(argv, args);
- 6
- 7 QTextEdit textEdit;
- 8 QPushButton quitButton("Quit");
- 9
-10 QObject::connect(&quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
-11
-12 QVBoxLayout layout;
-13 layout.addWidget(&textEdit);
-14 layout.addWidget(&quitButton);
-15
-16 QWidget window;
-17 window.setLayout(&layout);
-18
-19 window.show();
-20
-21 return app.exec();
-22 }
+ 1 #include <QtGui>
+ 2
+ 3 int main(int argv, char **args)
+ 4 {
+ 5 QApplication app(argv, args);
+ 6
+ 7 QTextEdit *textEdit = new QTextEdit;
+ 8 QPushButton *quitButton = new QPushButton("&Quit");
+ 9
+10 QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
+11
+12 QVBoxLayout *layout = new QVBoxLayout;
+13 layout->addWidget(textEdit);
+14 layout->addWidget(quitButton);
+15
+16 QWidget window;
+17 window.setLayout(layout);
+18
+19 window.show();
+20
+21 return app.exec();
+22 }
\endcode
Line 1 includes QtGui, which contains all of Qt's GUI classes.
@@ -278,9 +284,25 @@
visible strings. This function is necessary when you want to
provide your application in more than one language (e.g. English
and Chinese). We will not go into details here, but you can follow
- the \c {Qt Linguist} link from the learn more table. We will not
- look at the implementation of \c quit() slot and the \c main()
- function, but you can check out the source code if you want to.
+ the \c {Qt Linguist} link from the learn more table.
+
+ Here is the \c quit() slot:
+
+ \code
+75 void Notepad::quit()
+76 {
+77 QMessageBox messageBox;
+78 messageBox.setWindowTitle(tr("Notepad"));
+79 messageBox.setText(tr("Do you really want to quit?"));
+80 messageBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
+81 messageBox.setDefaultButton(QMessageBox::No);
+82 if (messageBox.exec() == QMessageBox::Yes)
+83 qApp->quit();
+84 }
+ \endcode
+
+ We use the QMessageBox class to display a dialog that asks the
+ user whether he/she really wants to quit.
\section2 Learn More
diff --git a/doc/src/qt-webpages.qdoc b/doc/src/qt-webpages.qdoc
index c993575..f67ff83 100644
--- a/doc/src/qt-webpages.qdoc
+++ b/doc/src/qt-webpages.qdoc
@@ -221,7 +221,7 @@
\title Forums on Qt Developer Network
*/
/*!
- \externalpage http://developer.qt.nokia.com/wikis
+ \externalpage http://developer.qt.nokia.com/wiki
\title Wiki on Qt Developer Network
*/
/*!
diff --git a/doc/src/snippets/qcolumnview/main.cpp b/doc/src/snippets/qcolumnview/main.cpp
index c39a4bb..fecff12 100644
--- a/doc/src/snippets/qcolumnview/main.cpp
+++ b/doc/src/snippets/qcolumnview/main.cpp
@@ -76,4 +76,4 @@ int main(int argc, char *argv[])
columnView.show();
return app.exec();
-} \ No newline at end of file
+}
diff --git a/doc/src/snippets/textdocument-imagedrop/main.cpp b/doc/src/snippets/textdocument-imagedrop/main.cpp
index 24cd2de..0cdf3a1 100644
--- a/doc/src/snippets/textdocument-imagedrop/main.cpp
+++ b/doc/src/snippets/textdocument-imagedrop/main.cpp
@@ -49,4 +49,4 @@ int main(int argc, char * argv[])
textEdit->show();
return app.exec();
-} \ No newline at end of file
+}
diff --git a/doc/src/snippets/textdocument-imagedrop/textedit.h b/doc/src/snippets/textdocument-imagedrop/textedit.h
index 9e0492b..9db9f17 100644
--- a/doc/src/snippets/textdocument-imagedrop/textedit.h
+++ b/doc/src/snippets/textdocument-imagedrop/textedit.h
@@ -46,11 +46,11 @@
class TextEdit : public QTextEdit
{
Q_OBJECT
-
-public:
+
+public:
TextEdit(QWidget *parent=0);
bool canInsertFromMimeData( const QMimeData *source ) const;
void insertFromMimeData( const QMimeData *source );
};
-#endif \ No newline at end of file
+#endif
diff --git a/examples/tutorials/gettingStarted/gsQml/filedialog/dialogPlugin.cpp b/examples/tutorials/gettingStarted/gsQml/filedialog/dialogPlugin.cpp
index fde24d9..3b02c63 100644
--- a/examples/tutorials/gettingStarted/gsQml/filedialog/dialogPlugin.cpp
+++ b/examples/tutorials/gettingStarted/gsQml/filedialog/dialogPlugin.cpp
@@ -51,4 +51,4 @@ void DialogPlugin::registerTypes(const char *uri)
}
//FileDialog is the plugin name (same as the TARGET in the project file) and DialogPlugin is the plugin classs
-Q_EXPORT_PLUGIN2(FileDialog, DialogPlugin); \ No newline at end of file
+Q_EXPORT_PLUGIN2(FileDialog, DialogPlugin);
diff --git a/examples/tutorials/gettingStarted/gsQml/filedialog/directory.cpp b/examples/tutorials/gettingStarted/gsQml/filedialog/directory.cpp
index c675fc9..52bdfc7 100644
--- a/examples/tutorials/gettingStarted/gsQml/filedialog/directory.cpp
+++ b/examples/tutorials/gettingStarted/gsQml/filedialog/directory.cpp
@@ -221,4 +221,4 @@ void Directory::refresh()
}
m_fileList.append(file);
}
-} \ No newline at end of file
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/filedialog/file.cpp b/examples/tutorials/gettingStarted/gsQml/filedialog/file.cpp
index 44b0915..17740f2 100644
--- a/examples/tutorials/gettingStarted/gsQml/filedialog/file.cpp
+++ b/examples/tutorials/gettingStarted/gsQml/filedialog/file.cpp
@@ -54,4 +54,4 @@ void File::setName(const QString &str){
m_name = str;
emit nameChanged();
}
-} \ No newline at end of file
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/filedialog/file.h b/examples/tutorials/gettingStarted/gsQml/filedialog/file.h
index 21e8ebb..6aa6a6a 100644
--- a/examples/tutorials/gettingStarted/gsQml/filedialog/file.h
+++ b/examples/tutorials/gettingStarted/gsQml/filedialog/file.h
@@ -64,4 +64,4 @@ class File : public QObject{
QString m_name;
};
-#endif \ No newline at end of file
+#endif
diff --git a/examples/tutorials/gettingStarted/gsQt/part2/main.cpp b/examples/tutorials/gettingStarted/gsQt/part2/main.cpp
index 24b4d77..afa26e1 100755
--- a/examples/tutorials/gettingStarted/gsQt/part2/main.cpp
+++ b/examples/tutorials/gettingStarted/gsQt/part2/main.cpp
@@ -44,17 +44,17 @@ int main(int argv, char **args)
{
QApplication app(argv, args);
- QTextEdit textEdit;
- QPushButton quitButton("&Quit");
+ QTextEdit *textEdit = new QTextEdit;
+ QPushButton *quitButton = new QPushButton("&Quit");
- QObject::connect(&quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
+ QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
- QVBoxLayout layout;
- layout.addWidget(&textEdit);
- layout.addWidget(&quitButton);
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(textEdit);
+ layout->addWidget(quitButton);
QWidget window;
- window.setLayout(&layout);
+ window.setLayout(layout);
window.show();
diff --git a/examples/tutorials/modelview/4_headers/main.cpp b/examples/tutorials/modelview/4_headers/main.cpp
index c89829a..8a4ab8f 100755
--- a/examples/tutorials/modelview/4_headers/main.cpp
+++ b/examples/tutorials/modelview/4_headers/main.cpp
@@ -50,4 +50,4 @@ int main(int argc, char *argv[])
tableView.setModel( &myModel );
tableView.show();
return a.exec();
-} \ No newline at end of file
+}
diff --git a/examples/tutorials/threads/clock/clockthread.h b/examples/tutorials/threads/clock/clockthread.h
index 966dbea..d77a52b 100644
--- a/examples/tutorials/threads/clock/clockthread.h
+++ b/examples/tutorials/threads/clock/clockthread.h
@@ -61,4 +61,4 @@ private slots:
};
//! [1]
-#endif // CLOCKTHREAD_H \ No newline at end of file
+#endif // CLOCKTHREAD_H
diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp
index 985f515..dd06a2a 100644
--- a/src/corelib/codecs/qtextcodec.cpp
+++ b/src/corelib/codecs/qtextcodec.cpp
@@ -213,12 +213,13 @@ QTextCodecCleanup::~QTextCodecCleanup()
destroying_is_ok = true;
#endif
- for (QList<QTextCodec *>::const_iterator it = all->constBegin()
- ; it != all->constEnd(); ++it) {
+ QList<QTextCodec *> *myAll = all;
+ all = 0; // Otherwise the d'tor destroys the iterator
+ for (QList<QTextCodec *>::const_iterator it = myAll->constBegin()
+ ; it != myAll->constEnd(); ++it) {
delete *it;
}
- delete all;
- all = 0;
+ delete myAll;
localeMapper = 0;
#ifdef Q_DEBUG_TEXTCODEC
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index 929b2f9..06c403a 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -366,9 +366,11 @@ QFilePrivate::setError(QFile::FileError err, int errNum)
\value AutoCloseHandle The file handle passed into open() should be
closed by close(), the default behaviour is that close just flushes
- the file and the app is responsible for closing the file handle. When
- opening a file by name, this flag is ignored as Qt always "owns" the
+ the file and the application is responsible for closing the file handle.
+ When opening a file by name, this flag is ignored as Qt always "owns" the
file handle and must close it.
+ \value DontCloseHandle The file handle passed into open() will not be
+ closed by Qt. The application must ensure that close() is called.
*/
#ifdef QT3_SUPPORT
@@ -1210,7 +1212,7 @@ bool QFile::open(int fd, OpenMode mode)
Returns true if successful; otherwise returns false.
When a QFile is opened using this function, behaviour of close() is
- controlled by the AutoCloseHandle flag.
+ controlled by the \a handleFlags argument.
If AutoCloseHandle is specified, and this function succeeds,
then calling close() closes the adopted handle.
Otherwise, close() does not actually close the file, but only flushes it.
@@ -1269,7 +1271,7 @@ bool QFile::open(int fd, OpenMode mode, FileHandleFlags handleFlags)
Returns true if successful; otherwise returns false.
When a QFile is opened using this function, behaviour of close() is
- controlled by the AutoCloseHandle flag.
+ controlled by the \a handleFlags argument.
If AutoCloseHandle is specified, and this function succeeds,
then calling close() closes the adopted handle.
Otherwise, close() does not actually close the file, but only flushes it.
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp
index 548f9cf..e1f3123 100644
--- a/src/corelib/io/qfsfileengine.cpp
+++ b/src/corelib/io/qfsfileengine.cpp
@@ -233,6 +233,14 @@ bool QFSFileEngine::open(QIODevice::OpenMode openMode, FILE *fh)
return open(openMode, fh, QFile::DontCloseHandle);
}
+/*!
+ Opens the file handle \a fh in \a openMode mode. Returns true
+ on success; otherwise returns false.
+
+ The \a handleFlags argument specifies whether the file handle will be
+ closed by Qt. See the QFile::FileHandleFlags documentation for more
+ information.
+*/
bool QFSFileEngine::open(QIODevice::OpenMode openMode, FILE *fh, QFile::FileHandleFlags handleFlags)
{
Q_D(QFSFileEngine);
@@ -294,6 +302,14 @@ bool QFSFileEngine::open(QIODevice::OpenMode openMode, int fd)
return open(openMode, fd, QFile::DontCloseHandle);
}
+/*!
+ Opens the file descriptor \a fd in \a openMode mode. Returns true
+ on success; otherwise returns false.
+
+ The \a handleFlags argument specifies whether the file handle will be
+ closed by Qt. See the QFile::FileHandleFlags documentation for more
+ information.
+*/
bool QFSFileEngine::open(QIODevice::OpenMode openMode, int fd, QFile::FileHandleFlags handleFlags)
{
Q_D(QFSFileEngine);
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index 9de282a..4961722 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -252,6 +252,14 @@ bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode)
return true;
}
+/*!
+ Opens the file descriptor specified by \a file in the mode given by
+ \a openMode. Returns true on success; otherwise returns false.
+
+ The \a handleFlags argument specifies whether the file handle will be
+ closed by Qt. See the QFile::FileHandleFlags documentation for more
+ information.
+*/
bool QFSFileEngine::open(QIODevice::OpenMode openMode, const RFile &file, QFile::FileHandleFlags handleFlags)
{
Q_D(QFSFileEngine);
diff --git a/src/corelib/io/qnoncontiguousbytedevice.cpp b/src/corelib/io/qnoncontiguousbytedevice.cpp
index 5568920..d5ce56b 100644
--- a/src/corelib/io/qnoncontiguousbytedevice.cpp
+++ b/src/corelib/io/qnoncontiguousbytedevice.cpp
@@ -501,8 +501,6 @@ QNonContiguousByteDevice* QNonContiguousByteDeviceFactory::create(QIODevice *dev
}
/*!
- \fn static QNonContiguousByteDevice* QNonContiguousByteDeviceFactory::create(QRingBuffer *ringBuffer);
-
Create a QNonContiguousByteDevice out of a QRingBuffer.
\internal
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 4226f9e..60a4ce3 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -63,8 +63,9 @@
unencoded representation is suitable for showing to users, but
the encoded representation is typically what you would send to
a web server. For example, the unencoded URL
- "http://b\uuml\c{}hler.example.com" would be sent to the server as
- "http://xn--bhler-kva.example.com/List%20of%20applicants.xml".
+ "http://b\uuml\c{}hler.example.com/List of applicants.xml" would be sent to the server as
+ "http://xn--bhler-kva.example.com/List%20of%20applicants.xml",
+ and this can be verified by calling the toEncoded() function.
A URL can also be constructed piece by piece by calling
setScheme(), setUserName(), setPassword(), setHost(), setPort(),
diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp
index eb29e6e..af63b79 100644
--- a/src/corelib/plugin/quuid.cpp
+++ b/src/corelib/plugin/quuid.cpp
@@ -387,17 +387,17 @@ QUuid::QUuid(const QByteArray &text)
#endif
/*!
- Creates a QUuid object from the binary representation of the UUID, as
- specified by RFC 4122 section 4.1.2. See toRfc4122() for a further
- explanation of the order of bytes required.
+ \since 4.8
- The byte array accepted is NOT a human readable format.
+ Creates a QUuid object from the binary representation of the UUID given
+ by \a bytes, as specified by RFC 4122 section 4.1.2. See toRfc4122() for a
+ further explanation of the order of bytes required.
- If the conversion fails, a null UUID is created.
+ The byte array accepted is \e not a human readable format.
- \since 4.8
+ If the conversion fails, a null UUID is created.
- \sa toRfc4122(), QUuid()
+ \sa toRfc4122(), QUuid()
*/
QUuid QUuid::fromRfc4122(const QByteArray &bytes)
{
diff --git a/src/corelib/tools/qlocale.qdoc b/src/corelib/tools/qlocale.qdoc
index 5d4f305..95a7165 100644
--- a/src/corelib/tools/qlocale.qdoc
+++ b/src/corelib/tools/qlocale.qdoc
@@ -806,6 +806,10 @@
\internal
*/
/*!
+ \fn QSystemLocale::CurrencyToStringArgument::CurrencyToStringArgument(const QVariant &v, const QString &s)
+ \internal
+*/
+/*!
\variable QSystemLocale::CurrencyToStringArgument::value
An input value that should be converted to its string representation.
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index 187ad67..9f68313 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -88,6 +88,7 @@ QDBusAbstractInterfacePrivate::QDBusAbstractInterfacePrivate(const QString &serv
: connection(con), service(serv), path(p), interface(iface),
lastError(checkIfValid(serv, p, iface, isDynamic, (connectionPrivate() &&
connectionPrivate()->mode == QDBusConnectionPrivate::PeerMode))),
+ timeout(-1),
isValid(!lastError.isValid())
{
if (!isValid)
@@ -144,7 +145,7 @@ void QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, QVariant &
QLatin1String("Get"));
QDBusMessagePrivate::setParametersValidated(msg, true);
msg << interface << QString::fromUtf8(mp.name());
- QDBusMessage reply = connection.call(msg, QDBus::Block);
+ QDBusMessage reply = connection.call(msg, QDBus::Block, timeout);
if (reply.type() != QDBusMessage::ReplyMessage) {
lastError = reply;
@@ -210,7 +211,7 @@ bool QDBusAbstractInterfacePrivate::setProperty(const QMetaProperty &mp, const Q
QLatin1String("Set"));
QDBusMessagePrivate::setParametersValidated(msg, true);
msg << interface << QString::fromUtf8(mp.name()) << QVariant::fromValue(QDBusVariant(value));
- QDBusMessage reply = connection.call(msg, QDBus::Block);
+ QDBusMessage reply = connection.call(msg, QDBus::Block, timeout);
if (reply.type() != QDBusMessage::ReplyMessage) {
lastError = reply;
@@ -384,6 +385,28 @@ QDBusError QDBusAbstractInterface::lastError() const
}
/*!
+ Sets the timeout in seconds for all future DBus calls to \a timeout.
+ -1 means the default DBus timeout (usually 25 seconds).
+
+ \since 4.8
+*/
+void QDBusAbstractInterface::setTimeout(int timeout)
+{
+ d_func()->timeout = timeout;
+}
+
+/*!
+ Returns the current value of the timeout in seconds.
+ -1 means the default DBus timeout (usually 25 seconds).
+
+ \since 4.8
+*/
+int QDBusAbstractInterface::timeout() const
+{
+ return d_func()->timeout;
+}
+
+/*!
Places a call to the remote method specified by \a method on this interface, using \a args as
arguments. This function returns the message that was received as a reply, which can be a normal
QDBusMessage::ReplyMessage (indicating success) or QDBusMessage::ErrorMessage (if the call
@@ -442,7 +465,7 @@ QDBusMessage QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode mode,
QDBusMessagePrivate::setParametersValidated(msg, true);
msg.setArguments(args);
- QDBusMessage reply = d->connection.call(msg, mode);
+ QDBusMessage reply = d->connection.call(msg, mode, d->timeout);
if (thread() == QThread::currentThread())
d->lastError = reply; // will clear if reply isn't an error
@@ -475,7 +498,7 @@ QDBusPendingCall QDBusAbstractInterface::asyncCallWithArgumentList(const QString
QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), interface(), method);
QDBusMessagePrivate::setParametersValidated(msg, true);
msg.setArguments(args);
- return d->connection.asyncCall(msg);
+ return d->connection.asyncCall(msg, d->timeout);
}
/*!
diff --git a/src/dbus/qdbusabstractinterface.h b/src/dbus/qdbusabstractinterface.h
index 72b922e..34ff410 100644
--- a/src/dbus/qdbusabstractinterface.h
+++ b/src/dbus/qdbusabstractinterface.h
@@ -95,6 +95,9 @@ public:
QDBusError lastError() const;
+ void setTimeout(int timeout);
+ int timeout() const;
+
QDBusMessage call(const QString &method,
const QVariant &arg1 = QVariant(),
const QVariant &arg2 = QVariant(),
diff --git a/src/dbus/qdbusabstractinterface_p.h b/src/dbus/qdbusabstractinterface_p.h
index a000daf..4f96165 100644
--- a/src/dbus/qdbusabstractinterface_p.h
+++ b/src/dbus/qdbusabstractinterface_p.h
@@ -77,6 +77,7 @@ public:
QString path;
QString interface;
mutable QDBusError lastError;
+ int timeout;
// this is set during creation and never changed
// it can't be const because QDBusInterfacePrivate has one more check
diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp
index bab991b..45995ce 100644
--- a/src/declarative/util/qdeclarativeview.cpp
+++ b/src/declarative/util/qdeclarativeview.cpp
@@ -319,6 +319,8 @@ QDeclarativeView::~QDeclarativeView()
Ensure that the URL provided is full and correct, in particular, use
\l QUrl::fromLocalFile() when loading a file from the local filesystem.
+
+ \sa {Network Transparency}{Loading Resources in QML}
*/
/*!
diff --git a/src/gui/accessible/qaccessible_win.cpp b/src/gui/accessible/qaccessible_win.cpp
index 79ac442..caabae5 100644
--- a/src/gui/accessible/qaccessible_win.cpp
+++ b/src/gui/accessible/qaccessible_win.cpp
@@ -600,6 +600,35 @@ HRESULT STDMETHODCALLTYPE QWindowsEnumerate::Skip(unsigned long celt)
return S_OK;
}
+struct AccessibleElement {
+ AccessibleElement(int entryId, QAccessibleInterface *accessible) {
+ if (entryId < 0) {
+ QPair<QObject*, int> ref = qAccessibleRecentSentEvents()->value(entryId);
+ iface = QAccessible::queryAccessibleInterface(ref.first);
+ entry = ref.second;
+ cleanupInterface = true;
+ } else {
+ iface = accessible;
+ entry = entryId;
+ cleanupInterface = false;
+ }
+ }
+
+ QString text(QAccessible::Text t) const {
+ return iface ? iface->text(t, entry) : QString();
+ }
+
+ ~AccessibleElement() {
+ if (cleanupInterface)
+ delete iface;
+ }
+
+ QAccessibleInterface *iface;
+ int entry;
+private:
+ bool cleanupInterface;
+};
+
/*
*/
class QWindowsAccessible : public IAccessible, IOleWindow, QAccessible
@@ -998,7 +1027,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accLocation(long *pxLeft, long *py
if (!accessible->isValid())
return E_FAIL;
- QRect rect = accessible->rect(varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ QRect rect = elem.iface ? elem.iface->rect(elem.entry) : QRect();
if (rect.isValid()) {
*pxLeft = rect.x();
*pyTop = rect.y();
@@ -1101,25 +1131,12 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accChild(VARIANT varChildID, I
int childIndex = varChildID.lVal;
QAccessibleInterface *acc = 0;
- if (childIndex < 0) {
- const int entry = childIndex;
- QPair<QObject*, int> ref = qAccessibleRecentSentEvents()->value(entry);
- if (ref.first) {
- acc = queryAccessibleInterface(ref.first);
- if (acc && ref.second) {
- if (ref.second) {
- QAccessibleInterface *res;
- int index = acc->navigate(Child, ref.second, &res);
- delete acc;
- if (index == -1)
- return E_INVALIDARG;
- acc = res;
- }
- }
- }
- } else {
- RelationFlag rel = childIndex ? Child : Self;
- accessible->navigate(rel, childIndex, &acc);
+ AccessibleElement elem(childIndex, accessible);
+ if (elem.iface) {
+ RelationFlag rel = elem.entry ? Child : Self;
+ int index = elem.iface->navigate(rel, elem.entry, &acc);
+ if (index == -1)
+ return E_INVALIDARG;
}
if (acc) {
@@ -1171,7 +1188,9 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accDoDefaultAction(VARIANT varID)
if (!accessible->isValid())
return E_FAIL;
- return accessible->doAction(DefaultAction, varID.lVal, QVariantList()) ? S_OK : S_FALSE;
+ AccessibleElement elem(varID.lVal, accessible);
+ const bool res = elem.iface ? elem.iface->doAction(DefaultAction, elem.entry, QVariantList()) : false;
+ return res ? S_OK : S_FALSE;
}
HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDefaultAction(VARIANT varID, BSTR* pszDefaultAction)
@@ -1180,7 +1199,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDefaultAction(VARIANT varID
if (!accessible->isValid())
return E_FAIL;
- QString def = accessible->actionText(DefaultAction, Name, varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ QString def = elem.iface ? elem.iface->actionText(DefaultAction, Name, elem.entry) : QString();
if (def.isEmpty()) {
*pszDefaultAction = 0;
return S_FALSE;
@@ -1196,7 +1216,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accDescription(VARIANT varID,
if (!accessible->isValid())
return E_FAIL;
- QString descr = accessible->text(Description, varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ QString descr = elem.text(Description);
if (descr.size()) {
*pszDescription = QStringToBSTR(descr);
return S_OK;
@@ -1212,7 +1233,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accHelp(VARIANT varID, BSTR *p
if (!accessible->isValid())
return E_FAIL;
- QString help = accessible->text(Help, varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ QString help = elem.text(Help);
if (help.size()) {
*pszHelp = QStringToBSTR(help);
return S_OK;
@@ -1233,7 +1255,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accKeyboardShortcut(VARIANT va
if (!accessible->isValid())
return E_FAIL;
- QString sc = accessible->text(Accelerator, varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ QString sc = elem.text(Accelerator);
if (sc.size()) {
*pszKeyboardShortcut = QStringToBSTR(sc);
return S_OK;
@@ -1249,7 +1272,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accName(VARIANT varID, BSTR* p
if (!accessible->isValid())
return E_FAIL;
- QString n = accessible->text(Name, varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ QString n = elem.text(Name);
if (n.size()) {
*pszName = QStringToBSTR(n);
return S_OK;
@@ -1271,7 +1295,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accRole(VARIANT varID, VARIANT
if (!accessible->isValid())
return E_FAIL;
- Role role = accessible->role(varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ Role role = elem.iface ? elem.iface->role(elem.entry) : NoRole;
if (role != NoRole) {
if (role == LayeredPane)
role = QAccessible::Pane;
@@ -1290,7 +1315,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accState(VARIANT varID, VARIAN
return E_FAIL;
(*pvarState).vt = VT_I4;
- (*pvarState).lVal = accessible->state(varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ (*pvarState).lVal = elem.iface ? elem.iface->state(elem.entry) : 0;
return S_OK;
}
@@ -1300,7 +1326,8 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::get_accValue(VARIANT varID, BSTR*
if (!accessible->isValid())
return E_FAIL;
- QString value = accessible->text(Value, varID.lVal);
+ AccessibleElement elem(varID.lVal, accessible);
+ QString value = elem.text(Value);
if (!value.isNull()) {
*pszValue = QStringToBSTR(value);
return S_OK;
@@ -1324,19 +1351,23 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accSelect(long flagsSelect, VARIAN
bool res = false;
- if (flagsSelect & SELFLAG_TAKEFOCUS)
- res = accessible->doAction(SetFocus, varID.lVal, QVariantList());
- if (flagsSelect & SELFLAG_TAKESELECTION) {
- accessible->doAction(ClearSelection, 0, QVariantList());
- res = accessible->doAction(AddToSelection, varID.lVal, QVariantList());
+ AccessibleElement elem(varID.lVal, accessible);
+ QAccessibleInterface *acc = elem.iface;
+ if (acc) {
+ const int entry = elem.entry;
+ if (flagsSelect & SELFLAG_TAKEFOCUS)
+ res = acc->doAction(SetFocus, entry, QVariantList());
+ if (flagsSelect & SELFLAG_TAKESELECTION) {
+ acc->doAction(ClearSelection, 0, QVariantList()); //### bug, 0 should be entry??
+ res = acc->doAction(AddToSelection, entry, QVariantList());
+ }
+ if (flagsSelect & SELFLAG_EXTENDSELECTION)
+ res = acc->doAction(ExtendSelection, entry, QVariantList());
+ if (flagsSelect & SELFLAG_ADDSELECTION)
+ res = acc->doAction(AddToSelection, entry, QVariantList());
+ if (flagsSelect & SELFLAG_REMOVESELECTION)
+ res = acc->doAction(RemoveSelection, entry, QVariantList());
}
- if (flagsSelect & SELFLAG_EXTENDSELECTION)
- res = accessible->doAction(ExtendSelection, varID.lVal, QVariantList());
- if (flagsSelect & SELFLAG_ADDSELECTION)
- res = accessible->doAction(AddToSelection, varID.lVal, QVariantList());
- if (flagsSelect & SELFLAG_REMOVESELECTION)
- res = accessible->doAction(RemoveSelection, varID.lVal, QVariantList());
-
return res ? S_OK : S_FALSE;
}
diff --git a/src/gui/dialogs/qfiledialog_win_p.h b/src/gui/dialogs/qfiledialog_win_p.h
index 1ff29d2..1408057 100644
--- a/src/gui/dialogs/qfiledialog_win_p.h
+++ b/src/gui/dialogs/qfiledialog_win_p.h
@@ -240,4 +240,4 @@ DECLARE_INTERFACE_(IFileOpenDialog, IFileDialog)
STDMETHOD(GetResults)(THIS_ IShellItemArray **ppenum) PURE;
STDMETHOD(GetSelectedItems)(THIS_ IShellItemArray **ppsai) PURE;
};
-#endif \ No newline at end of file
+#endif
diff --git a/src/gui/embedded/qscreen_qws.cpp b/src/gui/embedded/qscreen_qws.cpp
index 2c10357..b17ade0 100644
--- a/src/gui/embedded/qscreen_qws.cpp
+++ b/src/gui/embedded/qscreen_qws.cpp
@@ -1545,6 +1545,7 @@ QImage::Format QScreenPrivate::preferredImageFormat() const
\value SvgalibClass QSvgalibScreen
\value ProxyClass QProxyScreen
\value GLClass QGLScreen
+ \value IntfbClass QIntfbScreen
\value CustomClass Unknown QScreen subclass
\sa classId()
diff --git a/src/gui/image/qjpeghandler.cpp b/src/gui/image/qjpeghandler.cpp
index 673a6d6..8fea456 100644
--- a/src/gui/image/qjpeghandler.cpp
+++ b/src/gui/image/qjpeghandler.cpp
@@ -74,6 +74,11 @@ extern "C" {
#endif
}
+#if defined(JPEG_TRUE) && !defined(HAVE_BOOLEAN)
+// this jpeglib.h uses JPEG_boolean
+typedef JPEG_boolean boolean;
+#endif
+
QT_BEGIN_NAMESPACE
void QT_FASTCALL convert_rgb888_to_rgb32_C(quint32 *dst, const uchar *src, int len)
diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
index 5ddd53f..899b792 100644
--- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
+++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp
@@ -64,6 +64,8 @@
#define QT_EAknCursorPositionChanged MAknEdStateObserver::EAknEdwinStateEvent(6)
// MAknEdStateObserver::EAknActivatePenInputRequest
#define QT_EAknActivatePenInputRequest MAknEdStateObserver::EAknEdwinStateEvent(7)
+// MAknEdStateObserver::EAknClosePenInputRequest
+#define QT_EAknClosePenInputRequest MAknEdStateObserver::EAknEdwinStateEvent(10)
// EAknEditorFlagSelectionVisible is only valid from 3.2 onwards.
// Sym^3 AVKON FEP manager expects that this flag is used for FEP-aware editors
@@ -252,9 +254,6 @@ bool QCoeFepInputContext::needsInputPanel()
bool QCoeFepInputContext::filterEvent(const QEvent *event)
{
- // The CloseSoftwareInputPanel event is not handled here, because the VK will automatically
- // close when it discovers that the underlying widget does not have input capabilities.
-
if (!focusWidget())
return false;
@@ -318,6 +317,12 @@ bool QCoeFepInputContext::filterEvent(const QEvent *event)
if (!needsInputPanel())
return false;
+ if ((event->type() == QEvent::CloseSoftwareInputPanel)
+ && (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0)) {
+ m_fepState->ReportAknEdStateEventL(QT_EAknClosePenInputRequest);
+ return false;
+ }
+
if (event->type() == QEvent::RequestSoftwareInputPanel) {
// Only request virtual keyboard if it is not yet active or if this is the first time
// panel is requested for this application.
@@ -474,7 +479,7 @@ void QCoeFepInputContext::resetSplitViewWidget(bool keepInputWidget)
if (!alwaysResize) {
if (gv->scene()) {
- if (gv->scene()->focusItem()) {
+ if (gv->scene()->focusItem() && S60->partial_keyboardAutoTranslation) {
// Check if the widget contains cursorPositionChanged signal and disconnect from it.
QByteArray signal = QMetaObject::normalizedSignature(SIGNAL(cursorPositionChanged()));
int index = gv->scene()->focusItem()->toGraphicsObject()->metaObject()->indexOfSignal(signal.right(signal.length() - 1));
@@ -580,7 +585,7 @@ void QCoeFepInputContext::ensureFocusWidgetVisible(QWidget *widget)
if (!moveWithinVisibleArea) {
// Check if the widget contains cursorPositionChanged signal and connect to it.
QByteArray signal = QMetaObject::normalizedSignature(SIGNAL(cursorPositionChanged()));
- if (gv->scene() && gv->scene()->focusItem()) {
+ if (gv->scene() && gv->scene()->focusItem() && S60->partial_keyboardAutoTranslation) {
int index = gv->scene()->focusItem()->toGraphicsObject()->metaObject()->indexOfSignal(signal.right(signal.length() - 1));
if (index != -1)
connect(gv->scene()->focusItem()->toGraphicsObject(), SIGNAL(cursorPositionChanged()), this, SLOT(translateInputWidget()));
@@ -1080,7 +1085,18 @@ TInt QCoeFepInputContext::DocumentLengthForFep() const
return 0;
QVariant variant = w->inputMethodQuery(Qt::ImSurroundingText);
- return variant.value<QString>().size() + m_preeditString.size();
+
+ int size = variant.value<QString>().size() + m_preeditString.size();
+
+ // To fix an issue with backspaces not being generated if document size is zero,
+ // fake document length to be at least one always, except when dealing with
+ // hidden text widgets, where this faking would generate extra asterisk. Since the
+ // primary use of hidden text widgets is password fields, they are unlikely to
+ // support multiple lines anyway.
+ if (size == 0 && !(m_textCapabilities & TCoeInputCapabilities::ESecretText))
+ size = 1;
+
+ return size;
}
TInt QCoeFepInputContext::DocumentMaximumLengthForFep() const
@@ -1163,6 +1179,12 @@ void QCoeFepInputContext::GetEditorContentForFep(TDes& aEditorContent, TInt aDoc
// FEP expects the preedit string to be part of the editor content, so let's mix it in.
int cursor = w->inputMethodQuery(Qt::ImCursorPosition).toInt();
text.insert(cursor, m_preeditString);
+
+ // Add additional space to empty non-password text to compensate
+ // for the fake length we specified in DocumentLengthForFep().
+ if (text.size() == 0 && !(m_textCapabilities & TCoeInputCapabilities::ESecretText))
+ text += QChar(0x20);
+
aEditorContent.Copy(qt_QString2TPtrC(text.mid(aDocumentPosition, aLengthToRetrieve)));
}
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index cd13894..15d37c3 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -3321,7 +3321,7 @@ bool QApplication::desktopSettingsAware()
one of the above events. If no keys are being held Qt::NoModifier is
returned.
- \sa mouseButtons()
+ \sa mouseButtons(), queryKeyboardModifiers()
*/
Qt::KeyboardModifiers QApplication::keyboardModifiers()
@@ -3330,6 +3330,25 @@ Qt::KeyboardModifiers QApplication::keyboardModifiers()
}
/*!
+ \fn Qt::KeyboardModifiers QApplication::queryKeyboardModifiers()
+
+ Queries and returns the state of the modifier keys on the keyboard.
+ Unlike keyboardModifiers, this method returns the actual keys held
+ on the input device at the time of calling the method.
+
+ It does not rely on the keypress events having been received by this
+ process, which makes it possible to check the modifiers while moving
+ a window, for instance. Note that in most cases, you should use
+ keyboardModifiers(), which is faster and more accurate since it contains
+ the state of the modifiers as they were when the currently processed
+ event was received.
+
+ \sa keyboardModifiers()
+
+ \since 4.8
+*/
+
+/*!
Returns the current state of the buttons on the mouse. The current state is
updated syncronously as the event queue is emptied of events that will
spontaneously change the mouse state (QEvent::MouseButtonPress and
diff --git a/src/gui/kernel/qapplication.h b/src/gui/kernel/qapplication.h
index 01a246a..1548849 100644
--- a/src/gui/kernel/qapplication.h
+++ b/src/gui/kernel/qapplication.h
@@ -198,6 +198,7 @@ public:
static void alert(QWidget *widget, int duration = 0);
static Qt::KeyboardModifiers keyboardModifiers();
+ static Qt::KeyboardModifiers queryKeyboardModifiers();
static Qt::MouseButtons mouseButtons();
static void setDesktopSettingsAware(bool);
diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm
index c5ff799..1f75f09 100644
--- a/src/gui/kernel/qapplication_mac.mm
+++ b/src/gui/kernel/qapplication_mac.mm
@@ -1395,6 +1395,11 @@ void QApplication::restoreOverrideCursor()
}
#endif // QT_NO_CURSOR
+Qt::KeyboardModifiers QApplication::queryKeyboardModifiers()
+{
+ return qt_mac_get_modifiers(GetCurrentEventKeyModifiers());
+}
+
QWidget *QApplication::topLevelAt(const QPoint &p)
{
#ifndef QT_MAC_USE_COCOA
diff --git a/src/gui/kernel/qapplication_qws.cpp b/src/gui/kernel/qapplication_qws.cpp
index 3b6a075..193dfcd 100644
--- a/src/gui/kernel/qapplication_qws.cpp
+++ b/src/gui/kernel/qapplication_qws.cpp
@@ -2699,6 +2699,11 @@ void QApplication::alert(QWidget *, int)
{
}
+Qt::KeyboardModifiers QApplication::queryKeyboardModifiers()
+{
+ return keyboardModifiers(); // TODO proper implementation
+}
+
int QApplication::qwsProcessEvent(QWSEvent* event)
{
Q_D(QApplication);
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 5ac9803..31246f4 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -115,6 +115,8 @@ QWidget *qt_button_down = 0; // widget got last button-down
QSymbianControl *QSymbianControl::lastFocusedControl = 0;
+static Qt::KeyboardModifiers app_keyboardModifiers = Qt::NoModifier;
+
QS60Data* qGlobalS60Data()
{
return qt_s60Data();
@@ -735,6 +737,7 @@ void QSymbianControl::HandlePointerEvent(const TPointerEvent& pEvent)
Qt::MouseButton button;
mapS60MouseEventTypeToQt(&type, &button, &pEvent);
Qt::KeyboardModifiers modifiers = mapToQtModifiers(pEvent.iModifiers);
+ app_keyboardModifiers = modifiers;
QPoint widgetPos = translatePointForFixedNativeOrientation(pEvent.iPosition);
TPoint controlScreenPos = PositionRelativeToScreen();
@@ -2590,6 +2593,11 @@ void QApplication::setEffectEnabled(Qt::UIEffect /* effect */, bool /* enable */
// TODO: Implement QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable)
}
+Qt::KeyboardModifiers QApplication::queryKeyboardModifiers()
+{
+ return app_keyboardModifiers;
+}
+
TUint QApplicationPrivate::resolveS60ScanCode(TInt scanCode, TUint keysym)
{
if (!scanCode)
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index c34e75f..756cb56 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -1319,6 +1319,11 @@ Qt::KeyboardModifiers qt_win_getKeyboardModifiers()
return modifiers;
}
+Qt::KeyboardModifiers QApplication::queryKeyboardModifiers()
+{
+ return qt_win_getKeyboardModifiers();
+}
+
/*****************************************************************************
Routines to find a Qt widget from a screen position
*****************************************************************************/
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index 666fe85..ef8e2b8 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -3058,6 +3058,21 @@ void QApplicationPrivate::_q_alertTimeOut()
}
}
+Qt::KeyboardModifiers QApplication::queryKeyboardModifiers()
+{
+ Window root;
+ Window child;
+ int root_x, root_y, win_x, win_y;
+ uint keybstate;
+ for (int i = 0; i < ScreenCount(X11->display); ++i) {
+ if (XQueryPointer(X11->display, QX11Info::appRootWindow(i), &root, &child,
+ &root_x, &root_y, &win_x, &win_y, &keybstate))
+ return X11->translateModifiers(keybstate & 0x00ff);
+ }
+ return 0;
+
+}
+
/*****************************************************************************
Special lookup functions for windows that have been reparented recently
*****************************************************************************/
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index e32fdeb..0fbae59 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -66,9 +66,14 @@
#include <qdebug.h>
@interface NSEvent (Qt_Compile_Leopard_DeviceDelta)
+ // SnowLeopard:
- (CGFloat)deviceDeltaX;
- (CGFloat)deviceDeltaY;
- (CGFloat)deviceDeltaZ;
+ // Lion:
+ - (CGFloat)scrollingDeltaX;
+ - (CGFloat)scrollingDeltaY;
+ - (CGFloat)scrollingDeltaZ;
@end
@interface NSEvent (Qt_Compile_Leopard_Gestures)
@@ -614,7 +619,6 @@ static int qCocoaViewCount = 0;
int deltaX = 0;
int deltaY = 0;
- int deltaZ = 0;
const EventRef carbonEvent = (EventRef)[theEvent eventRef];
const UInt32 carbonEventKind = carbonEvent ? ::GetEventKind(carbonEvent) : 0;
@@ -627,15 +631,20 @@ static int qCocoaViewCount = 0;
// It looks like 1/4 degrees per pixel behaves most native.
// (NB: Qt expects the unit for delta to be 8 per degree):
const int pixelsToDegrees = 2; // 8 * 1/4
- deltaX = [theEvent deviceDeltaX] * pixelsToDegrees;
- deltaY = [theEvent deviceDeltaY] * pixelsToDegrees;
- deltaZ = [theEvent deviceDeltaZ] * pixelsToDegrees;
+ if (QSysInfo::MacintoshVersion <= QSysInfo::MV_10_6) {
+ // Mac OS 10.6
+ deltaX = [theEvent deviceDeltaX] * pixelsToDegrees;
+ deltaY = [theEvent deviceDeltaY] * pixelsToDegrees;
+ } else {
+ // Mac OS 10.7+
+ deltaX = [theEvent scrollingDeltaX] * pixelsToDegrees;
+ deltaY = [theEvent scrollingDeltaY] * pixelsToDegrees;
+ }
} else {
// carbonEventKind == kEventMouseWheelMoved
// Remove acceleration, and use either -120 or 120 as delta:
deltaX = qBound(-120, int([theEvent deltaX] * 10000), 120);
deltaY = qBound(-120, int([theEvent deltaY] * 10000), 120);
- deltaZ = qBound(-120, int([theEvent deltaZ] * 10000), 120);
}
#ifndef QT_NO_WHEELEVENT
@@ -654,13 +663,6 @@ static int qCocoaViewCount = 0;
qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
}
- if (deltaZ != 0) {
- // Qt doesn't explicitly support wheels with a Z component. In a misguided attempt to
- // try to be ahead of the pack, I'm adding this extra value.
- QWheelEvent qwe(qlocal, qglobal, deltaZ, buttons, keyMods, (Qt::Orientation)3);
- qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
- }
-
if (deltaX != 0 && deltaY != 0)
QMacScrollOptimization::performDelayedScroll();
#endif //QT_NO_WHEELEVENT
diff --git a/src/gui/kernel/qdnd_x11.cpp b/src/gui/kernel/qdnd_x11.cpp
index 0c683b4..5847021 100644
--- a/src/gui/kernel/qdnd_x11.cpp
+++ b/src/gui/kernel/qdnd_x11.cpp
@@ -1112,21 +1112,6 @@ void qt_xdnd_send_leave()
waiting_for_status = false;
}
-// TODO: remove and use QApplication::currentKeyboardModifiers() in Qt 4.8.
-static Qt::KeyboardModifiers currentKeyboardModifiers()
-{
- Window root;
- Window child;
- int root_x, root_y, win_x, win_y;
- uint keybstate;
- for (int i = 0; i < ScreenCount(X11->display); ++i) {
- if (XQueryPointer(X11->display, QX11Info::appRootWindow(i), &root, &child,
- &root_x, &root_y, &win_x, &win_y, &keybstate))
- return X11->translateModifiers(keybstate & 0x00ff);
- }
- return 0;
-}
-
void QX11Data::xdndHandleDrop(QWidget *, const XEvent * xe, bool passive)
{
DEBUG("xdndHandleDrop");
@@ -1183,7 +1168,7 @@ void QX11Data::xdndHandleDrop(QWidget *, const XEvent * xe, bool passive)
// Drop coming from another app? Update keyboard modifiers.
if (!qt_xdnd_dragging) {
- QApplicationPrivate::modifier_buttons = currentKeyboardModifiers();
+ QApplicationPrivate::modifier_buttons = QApplication::queryKeyboardModifiers();
}
QDropEvent de(qt_xdnd_current_position, possible_actions, dropData,
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 8e64f3b..efb016e 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5792,16 +5792,19 @@ void QPainter::drawImage(const QRectF &targetRect, const QImage &image, const QR
d->engine->drawImage(QRectF(x, y, w, h), image, QRectF(sx, sy, sw, sh), flags);
}
+#if !defined(QT_NO_RAWFONT)
/*!
- Draws the glyphs represented by \a glyphs at \a position. The \a position gives the
- edge of the baseline for the string of glyphs. The glyphs will be retrieved from the font
- selected on \a glyphs and at offsets given by the positions in \a glyphs.
+ \fn void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
+
+ Draws the specified \a glyphs at the given \a position.
+ The \a position gives the edge of the baseline for the string of glyphs.
+ The glyphs will be retrieved from the font selected by \a glyphs and at
+ offsets given by the positions in \a glyphs.
\since 4.8
\sa QGlyphRun::setRawFont(), QGlyphRun::setPositions(), QGlyphRun::setGlyphIndexes()
*/
-#if !defined(QT_NO_RAWFONT)
void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphRun)
{
Q_D(QPainter);
@@ -9251,9 +9254,9 @@ void QPainter::drawPixmapFragments(const PixmapFragment *fragments, int fragment
\since 4.8
This function is used to draw the same \a pixmap with multiple target
- and source rectangles. If \a sourceRects is 0, the whole pixmap will be
- rendered at each of the target rectangles. The \a hints parameter can be
- used to pass in drawing hints.
+ and source rectangles specified by \a targetRects. If \a sourceRects is 0,
+ the whole pixmap will be rendered at each of the target rectangles.
+ The \a hints parameter can be used to pass in drawing hints.
This function is potentially faster than multiple calls to drawPixmap(),
since the backend can optimize state changes.
diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm
index 8436856..1c1713c 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -1063,7 +1063,7 @@ bool qt_mac_buttonIsRenderedFlat(const QPushButton *pushButton, const QStyleOpti
{
QMacStyle *macStyle = qobject_cast<QMacStyle *>(pushButton->style());
if (!macStyle)
- return false;
+ return true; // revert to 'flat' behavior if not Mac style
HIThemeButtonDrawInfo bdi;
macStyle->d->initHIThemePushButton(option, pushButton, kThemeStateActive, &bdi);
return bdi.kind == kThemeBevelButton;
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index 2d6af3b..2df88e2 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -919,8 +919,9 @@ QString QFont::styleName() const
/*!
\since 4.8
- Sets the style name of the font. When set, other style properties
- like \a style() and \a weight() will be ignored for font matching.
+ Sets the style name of the font to the given \a styleName.
+ When set, other style properties like style() and weight() will be ignored
+ for font matching.
\sa styleName()
*/
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 79503f9..1d463c4 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -1943,8 +1943,9 @@ bool QFontDatabase::isScalable(const QString &family,
/*!
- Returns a list of the point sizes available for the font that has
- family \a family and style \a style. The list may be empty.
+ \fn QList<int> QFontDatabase::pointSizes(const QString &family, const QString &style)
+ Returns a list of the point sizes available for the font with the
+ given \a family and \a style. The list may be empty.
\sa smoothSizes(), standardSizes()
*/
@@ -2052,8 +2053,9 @@ QFont QFontDatabase::font(const QString &family, const QString &style,
/*!
- Returns the point sizes of a font that has family \a family and
- style \a style that will look attractive. The list may be empty.
+ \fn QList<int> QFontDatabase::smoothSizes(const QString &family, const QString &style)
+ Returns the point sizes of a font with the given \a family and \a style
+ that will look attractive. The list may be empty.
For non-scalable fonts and bitmap scalable fonts, this function
is equivalent to pointSizes().
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index f3d4107..1d93d54 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -442,9 +442,10 @@ bool QFontMetrics::inFont(QChar ch) const
}
/*!
+ \fn bool QFontMetrics::inFontUcs4(uint character) const
\since 4.8
- Returns true if the character encoded in UCS-4/UTF-32 is a valid
+ Returns true if the given \a character encoded in UCS-4/UTF-32 is a valid
character in the font; otherwise returns false.
*/
bool QFontMetrics::inFontUcs4(uint ucs4) const
diff --git a/src/gui/text/qglyphrun.cpp b/src/gui/text/qglyphrun.cpp
index 2865d91..442f7cc 100644
--- a/src/gui/text/qglyphrun.cpp
+++ b/src/gui/text/qglyphrun.cpp
@@ -175,7 +175,8 @@ QRawFont QGlyphRun::rawFont() const
}
/*!
- Sets the font in which to look up the glyph indexes to \a font.
+ Sets the font specified by \a rawFont to be the font used to look up the
+ glyph indexes.
\sa rawFont(), setGlyphIndexes()
*/
diff --git a/src/gui/text/qplatformfontdatabase_qpa.cpp b/src/gui/text/qplatformfontdatabase_qpa.cpp
index d1d1f94..e3eeca5 100644
--- a/src/gui/text/qplatformfontdatabase_qpa.cpp
+++ b/src/gui/text/qplatformfontdatabase_qpa.cpp
@@ -160,6 +160,9 @@ QSupportedWritingSystems::QSupportedWritingSystems(const QSupportedWritingSystem
d->ref.ref();
}
+/*!
+ Assigns the \a other supported writing systems object to this object.
+*/
QSupportedWritingSystems &QSupportedWritingSystems::operator=(const QSupportedWritingSystems &other)
{
if (d != other.d) {
@@ -171,6 +174,9 @@ QSupportedWritingSystems &QSupportedWritingSystems::operator=(const QSupportedWr
return *this;
}
+/*!
+ Destroys the object.
+*/
QSupportedWritingSystems::~QSupportedWritingSystems()
{
if (!d->ref.deref())
@@ -187,12 +193,26 @@ void QSupportedWritingSystems::detach()
}
}
+/*!
+ Sets the supported state of the writing system given by \a writingSystem to
+ the value specified by \a support. A value of true indicates that the
+ writing system is supported; a value of false indicates that it is
+ unsupported.
+
+ \sa supported()
+*/
void QSupportedWritingSystems::setSupported(QFontDatabase::WritingSystem writingSystem, bool support)
{
detach();
d->vector[writingSystem] = support;
}
+/*!
+ Returns true if the writing system given by \a writingSystem is supported;
+ otherwise returns false.
+
+ \sa setSupported()
+*/
bool QSupportedWritingSystems::supported(QFontDatabase::WritingSystem writingSystem) const
{
return d->vector.at(writingSystem);
@@ -295,7 +315,7 @@ QStringList QPlatformFontDatabase::addApplicationFont(const QByteArray &fontData
}
/*!
-
+ Releases the font handle and deletes any associated data loaded from a file.
*/
void QPlatformFontDatabase::releaseHandle(void *handle)
{
@@ -304,7 +324,13 @@ void QPlatformFontDatabase::releaseHandle(void *handle)
}
/*!
+ Returns the path to the font directory.
+
+ The font directory is stored in the general Qt settings unless it has been
+ overridden by the \c QT_QPA_FONTDIR environment variable.
+ When using builds of Qt that do not support settings, the \c QT_QPA_FONTDIR
+ environment variable is the only way to specify the font directory.
*/
QString QPlatformFontDatabase::fontDir() const
{
diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp
index e3e5c57..60a6cb3 100644
--- a/src/gui/text/qrawfont.cpp
+++ b/src/gui/text/qrawfont.cpp
@@ -485,7 +485,8 @@ QVector<quint32> QRawFont::glyphIndexesForString(const QString &text) const
must be at least \a numChars, if that's still not enough, this function will return
false, then you can resize \a glyphIndexes from the size returned in \a numGlyphs.
- \sa glyphIndexesForString(), advancesForGlyphIndexes(), QGlyphs, QTextLayout::glyphs(), QTextFragment::glyphs()
+ \sa glyphIndexesForString(), advancesForGlyphIndexes(), QGlyphRun,
+ QTextLayout::glyphRuns(), QTextFragment::glyphRuns()
*/
bool QRawFont::glyphIndexesForChars(const QChar *chars, int numChars, quint32 *glyphIndexes, int *numGlyphs) const
{
diff --git a/src/gui/widgets/qlinecontrol.cpp b/src/gui/widgets/qlinecontrol.cpp
index b6e2f90..a8031e7 100644
--- a/src/gui/widgets/qlinecontrol.cpp
+++ b/src/gui/widgets/qlinecontrol.cpp
@@ -60,7 +60,7 @@
QT_BEGIN_NAMESPACE
#ifdef QT_GUI_PASSWORD_ECHO_DELAY
-static int qt_passwordEchoDelay = QT_GUI_PASSWORD_ECHO_DELAY;
+static const int qt_passwordEchoDelay = QT_GUI_PASSWORD_ECHO_DELAY;
#endif
/*!
@@ -93,8 +93,8 @@ void QLineControl::updateDisplayText(bool forceUpdate)
if (m_echoMode == QLineEdit::Password) {
str.fill(m_passwordCharacter);
#ifdef QT_GUI_PASSWORD_ECHO_DELAY
- if (m_passwordEchoTimer != 0 && !str.isEmpty()) {
- int cursor = m_text.length() - 1;
+ if (m_passwordEchoTimer != 0 && m_cursor > 0 && m_cursor <= m_text.length()) {
+ int cursor = m_cursor - 1;
QChar uc = m_text.at(cursor);
str[cursor] = uc;
if (cursor > 0 && uc.unicode() >= 0xdc00 && uc.unicode() < 0xe000) {
diff --git a/src/imports/shaders/shadereffectitem.cpp b/src/imports/shaders/shadereffectitem.cpp
index 056581c..ca5c9a3 100644
--- a/src/imports/shaders/shadereffectitem.cpp
+++ b/src/imports/shaders/shadereffectitem.cpp
@@ -243,11 +243,6 @@ ShaderEffectItem::~ShaderEffectItem()
*/
-/*!
- \property ShaderEffectItem::fragmentShader
- \brief the OpenGL fragment shader code.
-*/
-
void ShaderEffectItem::setFragmentShader(const QString &code)
{
if (m_fragment_code.constData() == code.constData())
@@ -281,11 +276,6 @@ void ShaderEffectItem::setFragmentShader(const QString &code)
*/
-/*!
- \property ShaderEffectItem::vertexShader
- \brief the OpenGL vertex shader code.
-*/
-
void ShaderEffectItem::setVertexShader(const QString &code)
{
if (m_vertex_code.constData() == code.constData())
@@ -320,11 +310,6 @@ void ShaderEffectItem::setVertexShader(const QString &code)
The default value is true.
*/
-/*!
- \property ShaderEffectItem::blending
- \brief the drawing is done using blending.
-*/
-
void ShaderEffectItem::setBlending(bool enable)
{
if (m_blending == enable)
@@ -347,11 +332,6 @@ void ShaderEffectItem::setBlending(bool enable)
The default value is QSize(1,1).
*/
-/*!
- \property ShaderEffectItem::meshResolution
- \brief the amount of triangles in the mesh for both x and y-axis.
-*/
-
void ShaderEffectItem::setMeshResolution(const QSize &size)
{
if (size == m_meshResolution)
diff --git a/src/imports/shaders/shadereffectsource.cpp b/src/imports/shaders/shadereffectsource.cpp
index 6210c41..7916538 100644
--- a/src/imports/shaders/shadereffectsource.cpp
+++ b/src/imports/shaders/shadereffectsource.cpp
@@ -105,11 +105,6 @@ ShaderEffectSource::~ShaderEffectSource()
sourceItem regardless of its clipping property.
*/
-/*!
- \property ShaderEffectSource::sourceItem
- \brief the Item which is the source for the effect.
-*/
-
void ShaderEffectSource::setSourceItem(QDeclarativeItem *item)
{
if (item == m_sourceItem)
@@ -159,11 +154,6 @@ void ShaderEffectSource::setSourceItem(QDeclarativeItem *item)
The default value is Qt.rect(0,0,0,0).
*/
-/*!
- \property ShaderEffectSource::sourceRect
- \brief the relative sourceRect for the source.
-*/
-
void ShaderEffectSource::setSourceRect(const QRectF &rect)
{
if (rect == m_sourceRect)
@@ -192,11 +182,6 @@ void ShaderEffectSource::setSourceRect(const QRectF &rect)
The default value is QSize(0,0).
*/
-/*!
- \property ShaderEffectSource::textureSize
- \brief the texture size for the source.
-*/
-
void ShaderEffectSource::setTextureSize(const QSize &size)
{
if (size == m_textureSize)
@@ -227,11 +212,6 @@ void ShaderEffectSource::setTextureSize(const QSize &size)
The default value is true.
*/
-/*!
- \property ShaderEffectSource::live
- \brief the flag tells whether source item content is changing between frames.
-*/
-
void ShaderEffectSource::setLive(bool s)
{
if (s == m_live)
@@ -251,11 +231,6 @@ void ShaderEffectSource::setLive(bool s)
The default value is false.
*/
-/*!
- \property ShaderEffectSource::hideSource
- \brief the flag tells whether original source item content should be hidden.
-*/
-
void ShaderEffectSource::setHideSource(bool hide)
{
if (hide == m_hideSource)
@@ -283,11 +258,6 @@ void ShaderEffectSource::setHideSource(bool hide)
*/
-/*!
- \property ShaderEffectSource::wrapMode
- \brief the wrap parameter for the source after it has been mapped as a texture.
-*/
-
void ShaderEffectSource::setWrapMode(WrapMode mode)
{
if (mode == m_wrapMode)
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index 6d4df44..71d61a4 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -1197,6 +1197,11 @@ void QNetworkProxyQuery::setUrl(const QUrl &url)
}
#ifndef QT_NO_BEARERMANAGEMENT
+/*!
+ Returns the network configuration of the proxy query.
+
+ \sa setNetworkConfiguration()
+*/
QNetworkConfiguration QNetworkProxyQuery::networkConfiguration() const
{
return d ? d->config : QNetworkConfiguration();
@@ -1214,7 +1219,7 @@ QNetworkConfiguration QNetworkProxyQuery::networkConfiguration() const
you should first start the QNetworkSession and obtain the active
configuration from its properties.
- \sa networkConfiguration
+ \sa networkConfiguration()
*/
void QNetworkProxyQuery::setNetworkConfiguration(const QNetworkConfiguration &networkConfiguration)
{
diff --git a/src/plugins/bearer/icd/dbusdispatcher.cpp b/src/plugins/bearer/icd/dbusdispatcher.cpp
index 60e4640..62dec62 100644
--- a/src/plugins/bearer/icd/dbusdispatcher.cpp
+++ b/src/plugins/bearer/icd/dbusdispatcher.cpp
@@ -195,7 +195,7 @@ static bool appendVariantToDBusMessage(const QVariant& argument,
break;
case QVariant::String: {
- QByteArray data = argument.toString().toLatin1();
+ QByteArray data = argument.toString().toUtf8();
str_data = data.data();
dbus_message_iter_append_basic(dbus_iter, DBUS_TYPE_STRING,
&str_data);
@@ -363,7 +363,7 @@ static QVariant getVariantFromDBusMessage(DBusMessageIter *iter) {
case DBUS_TYPE_STRING:
{
dbus_message_iter_get_basic(iter, &str_data);
- QString str(str_data);
+ QString str(QString::fromUtf8(str_data));
QVariant variant(str);
return variant;
}
diff --git a/src/plugins/bearer/icd/iapconf.cpp b/src/plugins/bearer/icd/iapconf.cpp
index a29e326..e326edf 100644
--- a/src/plugins/bearer/icd/iapconf.cpp
+++ b/src/plugins/bearer/icd/iapconf.cpp
@@ -143,7 +143,7 @@ QVariant IAPConfPrivate::valueToVariant(ConnSettingsValue *value)
return QVariant(value->value.bool_val ? true : false);
case CONN_SETTINGS_VALUE_STRING:
- return QVariant(QString(value->value.string_val));
+ return QVariant(QString::fromUtf8(value->value.string_val));
case CONN_SETTINGS_VALUE_DOUBLE:
return QVariant(value->value.double_val);
diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp
index 5b0406f..0edfaf4 100644
--- a/src/sql/models/qsqlrelationaltablemodel.cpp
+++ b/src/sql/models/qsqlrelationaltablemodel.cpp
@@ -710,24 +710,32 @@ void QSqlRelationalTableModel::clear()
}
-/*! \enum QSqlRelationalTableModel::JoinMode
+/*!
+ \enum QSqlRelationalTableModel::JoinMode
+ \since 4.8
- \value InnerJoin - Inner join mode, return rows when there is at least one match in both tables.
- \value LeftJoin - Left join mode, returns all rows from the left table (table_name1), even if there are no matches in the right table (table_name2).
+ This enum specifies the type of mode to use when joining two tables.
- \see QSqlRelationalTableModel::setJoinMode
- \since 4.8
+ \value InnerJoin Inner join mode, return rows when there is at least one
+ match in both tables.
+ \value LeftJoin Left join mode, returns all rows from the left table
+ (table_name1), even if there are no matches in the right
+ table (table_name2).
+
+ \sa QSqlRelationalTableModel::setJoinMode()
*/
/*!
- Sets the SQL join mode to show or hide rows with NULL foreign keys.
- In InnerJoin mode (the default) these rows will not be showed: use the
+ \since 4.8
+ Sets the SQL join mode to the value given by \a joinMode to show or hide
+ rows with NULL foreign keys.
+
+ In InnerJoin mode (the default) these rows will not be shown; use the
LeftJoin mode if you want to show them.
- \see QSqlRelationalTableModel::JoinMode
- \since 4.8
+ \sa QSqlRelationalTableModel::JoinMode
*/
-void QSqlRelationalTableModel::setJoinMode( QSqlRelationalTableModel::JoinMode joinMode )
+void QSqlRelationalTableModel::setJoinMode(QSqlRelationalTableModel::JoinMode joinMode)
{
Q_D(QSqlRelationalTableModel);
d->joinMode = joinMode;
diff --git a/tests/auto/qabstractspinbox/tst_qabstractspinbox.cpp b/tests/auto/qabstractspinbox/tst_qabstractspinbox.cpp
index d14c75b..4e93663 100644
--- a/tests/auto/qabstractspinbox/tst_qabstractspinbox.cpp
+++ b/tests/auto/qabstractspinbox/tst_qabstractspinbox.cpp
@@ -154,7 +154,7 @@ void tst_QAbstractSpinBox::task228728_cssselector()
{
//QAbstractSpinBox does some call to stylehint into his constructor.
//so while the stylesheet want to access property, it should not crash
- qApp->setStyleSheet("[alignement=\"1\"], [text=\"foo\"] { color:black; }" );
+ qApp->setStyleSheet("[alignment=\"1\"], [text=\"foo\"] { color:black; }" );
QSpinBox box;
}
diff --git a/tests/auto/qaudioinput/tst_qaudioinput.cpp b/tests/auto/qaudioinput/tst_qaudioinput.cpp
index 6025bdb..0004c42 100644
--- a/tests/auto/qaudioinput/tst_qaudioinput.cpp
+++ b/tests/auto/qaudioinput/tst_qaudioinput.cpp
@@ -86,14 +86,14 @@ void tst_QAudioInput::initTestCase()
// Only perform tests if audio input device exists!
QList<QAudioDeviceInfo> devices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
- if(devices.size() > 0)
+ if (devices.size() > 0)
available = true;
else {
qWarning()<<"NOTE: no audio input device found, no test will be performed";
available = false;
}
- if(available)
+ if (available)
audio = new QAudioInput(format, this);
}
@@ -124,6 +124,9 @@ void tst_QAudioInput::invalidFormat_data()
void tst_QAudioInput::invalidFormat()
{
+ if (!available)
+ QSKIP("No audio input device found, no test will be performed", SkipAll);
+
QFETCH(QAudioFormat, invalidFormat);
QAudioInput audioInput(invalidFormat, this);
@@ -140,81 +143,85 @@ void tst_QAudioInput::invalidFormat()
void tst_QAudioInput::settings()
{
- if(available) {
- // Confirm the setting we added in the init function.
- QAudioFormat f = audio->format();
-
- QVERIFY(format.channels() == f.channels());
- QVERIFY(format.frequency() == f.frequency());
- QVERIFY(format.sampleSize() == f.sampleSize());
- QVERIFY(format.codec() == f.codec());
- QVERIFY(format.byteOrder() == f.byteOrder());
- QVERIFY(format.sampleType() == f.sampleType());
- }
+ if (!available)
+ QSKIP("No audio input device found, no test will be performed", SkipAll);
+
+ // Confirm the setting we added in the init function.
+ QAudioFormat f = audio->format();
+
+ QVERIFY(format.channels() == f.channels());
+ QVERIFY(format.frequency() == f.frequency());
+ QVERIFY(format.sampleSize() == f.sampleSize());
+ QVERIFY(format.codec() == f.codec());
+ QVERIFY(format.byteOrder() == f.byteOrder());
+ QVERIFY(format.sampleType() == f.sampleType());
}
void tst_QAudioInput::buffers()
{
- if(available) {
- // Should always have a buffer size greater than zero.
- int store = audio->bufferSize();
- audio->setBufferSize(4096);
- QVERIFY(audio->bufferSize() > 0);
- audio->setBufferSize(store);
- QVERIFY(audio->bufferSize() == store);
- }
+ if (!available)
+ QSKIP("No audio input device found, no test will be performed", SkipAll);
+
+ // Should always have a buffer size greater than zero.
+ int store = audio->bufferSize();
+ audio->setBufferSize(4096);
+ QVERIFY(audio->bufferSize() > 0);
+ audio->setBufferSize(store);
+ QVERIFY(audio->bufferSize() == store);
}
void tst_QAudioInput::notifyInterval()
{
- if(available) {
- QVERIFY(audio->notifyInterval() == 1000); // Default
+ if (!available)
+ QSKIP("No audio input device found, no test will be performed", SkipAll);
- audio->setNotifyInterval(500);
- QVERIFY(audio->notifyInterval() == 500); // Custom
+ QVERIFY(audio->notifyInterval() == 1000); // Default
- audio->setNotifyInterval(1000); // reset
- }
+ audio->setNotifyInterval(500);
+ QVERIFY(audio->notifyInterval() == 500); // Custom
+
+ audio->setNotifyInterval(1000); // reset
}
void tst_QAudioInput::pullFile()
{
- if(available) {
- QFile filename(SRCDIR"test.raw");
- filename.open( QIODevice::WriteOnly | QIODevice::Truncate );
-
- QSignalSpy readSignal(audio, SIGNAL(notify()));
- QSignalSpy stateSignal(audio, SIGNAL(stateChanged(QAudio::State)));
-
- // Always have default states, before start
- QVERIFY(audio->state() == QAudio::StoppedState);
- QVERIFY(audio->error() == QAudio::NoError);
- QVERIFY(audio->elapsedUSecs() == 0);
-
- audio->start(&filename);
- QTest::qWait(20);
- // Check state and periodSize() are valid non-zero values.
- QVERIFY(audio->state() == QAudio::ActiveState);
- QVERIFY(audio->error() == QAudio::NoError);
- QVERIFY(audio->elapsedUSecs() > 10000 && audio->elapsedUSecs() < 800000);
- QVERIFY(audio->periodSize() > 0);
- QVERIFY(stateSignal.count() == 1); // State changed to QAudio::ActiveState
-
- // Wait until finished...
- QTest::qWait(5000);
-
- QVERIFY(readSignal.count() > 0);
- QVERIFY(audio->processedUSecs() > 0);
-
- audio->stop();
- QTest::qWait(20);
- QVERIFY(audio->state() == QAudio::StoppedState);
- QVERIFY(audio->elapsedUSecs() == 0);
- // Can only check to make sure we got at least 1 more signal, but can be more.
- QVERIFY(stateSignal.count() > 1);
-
- filename.close();
- }
+ if (!available)
+ QSKIP("No audio input device found, no test will be performed", SkipAll);
+
+ QFile filename(SRCDIR"test.raw");
+ filename.open( QIODevice::WriteOnly | QIODevice::Truncate );
+
+ QSignalSpy readSignal(audio, SIGNAL(notify()));
+ QSignalSpy stateSignal(audio, SIGNAL(stateChanged(QAudio::State)));
+
+ // Always have default states, before start
+ QVERIFY(audio->state() == QAudio::StoppedState);
+ QVERIFY(audio->error() == QAudio::NoError);
+ QVERIFY(audio->elapsedUSecs() == 0);
+
+ audio->start(&filename);
+ QTest::qWait(20);
+ // Check state and periodSize() are valid non-zero values.
+ QVERIFY(audio->state() == QAudio::ActiveState);
+ QVERIFY(audio->error() == QAudio::NoError);
+ QVERIFY(audio->elapsedUSecs() > 10000 && audio->elapsedUSecs() < 800000);
+ QVERIFY(audio->periodSize() > 0);
+ QVERIFY(stateSignal.count() == 1); // State changed to QAudio::ActiveState
+
+ // Wait until finished...
+ QTest::qWait(5000);
+
+ QVERIFY(readSignal.count() > 0);
+ QVERIFY(audio->processedUSecs() > 0);
+
+ audio->stop();
+ QTest::qWait(20);
+ QVERIFY(audio->state() == QAudio::StoppedState);
+ QVERIFY(audio->elapsedUSecs() == 0);
+ // Can only check to make sure we got at least 1 more signal, but can be more.
+ QVERIFY(stateSignal.count() > 1);
+
+ filename.close();
}
QTEST_MAIN(tst_QAudioInput)
diff --git a/tests/auto/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml b/tests/auto/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml
index 1667591..d945ec9 100644
--- a/tests/auto/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml
+++ b/tests/auto/qdbusabstractinterface/com.trolltech.QtDBus.Pinger.xml
@@ -15,6 +15,10 @@
<annotation name="com.trolltech.QtDBus.QtTypeName.In0" value="RegisteredType"/>
</signal>
<method name="voidMethod" />
+ <method name="sleepMethod">
+ <arg type="i" />
+ <arg type="i" direction="out"/>
+ </method>
<method name="stringMethod">
<arg type="s" direction="out"/>
</method>
diff --git a/tests/auto/qdbusabstractinterface/interface.cpp b/tests/auto/qdbusabstractinterface/interface.cpp
index 0326177..849db93 100644
--- a/tests/auto/qdbusabstractinterface/interface.cpp
+++ b/tests/auto/qdbusabstractinterface/interface.cpp
@@ -40,9 +40,23 @@
****************************************************************************/
#include "interface.h"
+#include <QThread>
Interface::Interface()
{
}
+// Export the sleep function
+// TODO QT5: remove this class, QThread::msleep is now public
+class FriendlySleepyThread : public QThread {
+public:
+ using QThread::msleep;
+};
+
+int Interface::sleepMethod(int msec)
+{
+ FriendlySleepyThread::msleep(msec);
+ return 42;
+}
+
#include "moc_interface.cpp"
diff --git a/tests/auto/qdbusabstractinterface/interface.h b/tests/auto/qdbusabstractinterface/interface.h
index b840a38..0fb15fe 100644
--- a/tests/auto/qdbusabstractinterface/interface.h
+++ b/tests/auto/qdbusabstractinterface/interface.h
@@ -101,6 +101,7 @@ public:
public slots:
Q_SCRIPTABLE void voidMethod() {}
+ Q_SCRIPTABLE int sleepMethod(int);
Q_SCRIPTABLE QString stringMethod() { return "Hello, world"; }
Q_SCRIPTABLE RegisteredType complexMethod() { return RegisteredType("Hello, world"); }
Q_SCRIPTABLE QString multiOutMethod(int &value) { value = 42; return "Hello, world"; }
diff --git a/tests/auto/qdbusabstractinterface/pinger.h b/tests/auto/qdbusabstractinterface/pinger.h
index 6245a5a..739a142 100644
--- a/tests/auto/qdbusabstractinterface/pinger.h
+++ b/tests/auto/qdbusabstractinterface/pinger.h
@@ -117,6 +117,13 @@ public Q_SLOTS: // METHODS
return reply;
}
+ inline QDBusPendingReply<int> sleepMethod(int in0)
+ {
+ QList<QVariant> argumentList;
+ argumentList << qVariantFromValue(in0);
+ return asyncCallWithArgumentList(QLatin1String("sleepMethod"), argumentList);
+ }
+
inline QDBusPendingReply<QString> stringMethod()
{
QList<QVariant> argumentList;
diff --git a/tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp b/tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
index 00e3a76..994df05 100644
--- a/tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
+++ b/tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
@@ -111,6 +111,8 @@ private slots:
void makeAsyncComplexCallPeer();
void makeAsyncMultiOutCallPeer();
+ void callWithTimeout();
+
void stringPropRead();
void stringPropWrite();
void variantPropRead();
@@ -458,6 +460,96 @@ void tst_QDBusAbstractInterface::makeAsyncMultiOutCallPeer()
QCoreApplication::instance()->processEvents();
}
+static const char server_serviceName[] = "com.trolltech.autotests.dbusserver";
+static const char server_objectPath[] = "/com/trolltech/server";
+static const char server_interfaceName[] = "com.trolltech.QtDBus.Pinger";
+
+class DBusServerThread : public QThread
+{
+public:
+ DBusServerThread() {
+ start();
+ m_ready.acquire();
+ }
+ ~DBusServerThread() {
+ quit();
+ wait();
+ }
+
+ void run()
+ {
+ QDBusConnection con = QDBusConnection::connectToBus(QDBusConnection::SessionBus, "ThreadConnection");
+ if (!con.isConnected())
+ qWarning("Error registering to DBus");
+ if (!con.registerService(server_serviceName))
+ qWarning("Error registering service name");
+ Interface targetObj;
+ con.registerObject(server_objectPath, &targetObj, QDBusConnection::ExportScriptableContents);
+ m_ready.release();
+ exec();
+
+ QDBusConnection::disconnectFromBus( con.name() );
+ }
+private:
+ QSemaphore m_ready;
+};
+
+void tst_QDBusAbstractInterface::callWithTimeout()
+{
+ QDBusConnection con = QDBusConnection::sessionBus();
+ QVERIFY2(con.isConnected(), "Not connected to D-Bus");
+
+ DBusServerThread serverThread;
+
+ QDBusMessage msg = QDBusMessage::createMethodCall(server_serviceName,
+ server_objectPath, server_interfaceName, "sleepMethod");
+ msg << 100;
+
+ {
+ // Call with no timeout -> works
+ QDBusMessage reply = con.call(msg);
+ QCOMPARE((int)reply.type(), (int)QDBusMessage::ReplyMessage);
+ QCOMPARE(reply.arguments().at(0).toInt(), 42);
+ }
+
+ {
+ // Call with 1 sec timeout -> fails
+ QDBusMessage reply = con.call(msg, QDBus::Block, 1);
+ QCOMPARE(reply.type(), QDBusMessage::ErrorMessage);
+ }
+
+ // Now using QDBusInterface
+
+ QDBusInterface iface(server_serviceName, server_objectPath, server_interfaceName, con);
+ {
+ // Call with no timeout
+ QDBusMessage reply = iface.call("sleepMethod", 100);
+ QCOMPARE(reply.type(), QDBusMessage::ReplyMessage);
+ QCOMPARE(reply.arguments().at(0).toInt(), 42);
+ }
+ {
+ // Call with 1 sec timeout -> fails
+ iface.setTimeout(1);
+ QDBusMessage reply = iface.call("sleepMethod", 100);
+ QCOMPARE(reply.type(), QDBusMessage::ErrorMessage);
+ }
+
+ // Now using generated code
+ com::trolltech::QtDBus::Pinger p(server_serviceName, server_objectPath, QDBusConnection::sessionBus());
+ {
+ // Call with no timeout
+ QDBusReply<int> reply = p.sleepMethod(100);
+ QVERIFY(reply.isValid());
+ QCOMPARE(int(reply), 42);
+ }
+ {
+ // Call with 1 sec timeout -> fails
+ p.setTimeout(1);
+ QDBusReply<int> reply = p.sleepMethod(100);
+ QVERIFY(!reply.isValid());
+ }
+}
+
void tst_QDBusAbstractInterface::stringPropRead()
{
Pinger p = getPinger();
diff --git a/tests/auto/qdialog/tst_qdialog.cpp b/tests/auto/qdialog/tst_qdialog.cpp
index 6d9f798..86dde21 100644
--- a/tests/auto/qdialog/tst_qdialog.cpp
+++ b/tests/auto/qdialog/tst_qdialog.cpp
@@ -467,6 +467,22 @@ void tst_QDialog::throwInExec()
#if defined(Q_WS_MAC) || (defined(Q_WS_WINCE) && defined(_ARM_))
QSKIP("Throwing exceptions in exec() is not supported on this platform.", SkipAll);
#endif
+
+#if defined(Q_OS_LINUX)
+ // C++ exceptions can't be passed through glib callbacks. Skip the test if
+ // we're using the glib event loop.
+ QByteArray dispatcher = QAbstractEventDispatcher::instance()->metaObject()->className();
+ if (dispatcher.contains("Glib")) {
+ QSKIP(
+ qPrintable(QString(
+ "Throwing exceptions in exec() won't work if %1 event dispatcher is used.\n"
+ "Try running with QT_NO_GLIB=1 in environment."
+ ).arg(QString::fromLatin1(dispatcher))),
+ SkipAll
+ );
+ }
+#endif
+
int caughtExceptions = 0;
try {
ExceptionDialog dialog;
diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp
index 08d2e88..81da8a3 100644
--- a/tests/auto/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp
@@ -80,7 +80,9 @@
# define SRCDIR "C:/Private/" TOSTRING(SYMBIAN_SRCDIR_UID) "/"
#elif defined(Q_OS_UNIX)
#ifdef QT_BUILD_INTERNAL
+QT_BEGIN_NAMESPACE
extern Q_GUI_EXPORT QString qt_tildeExpansion(const QString &path, bool *expanded = 0);
+QT_END_NAMESPACE
#endif
#endif
diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp
index 6abbdcd..2c88561 100644
--- a/tests/auto/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/qlineedit/tst_qlineedit.cpp
@@ -1770,6 +1770,13 @@ void tst_QLineEdit::passwordEchoDelay()
QApplication::sendEvent(testWidget, &ev);
QCOMPARE(testWidget->displayText(), QString(7, fillChar) + QLatin1Char('7'));
+ testWidget->setCursorPosition(3);
+ QCOMPARE(testWidget->displayText(), QString(7, fillChar) + QLatin1Char('7'));
+ QTest::keyPress(testWidget, 'a');
+ QCOMPARE(testWidget->displayText(), QString(3, fillChar) + QLatin1Char('a') + QString(5, fillChar));
+ QTest::keyPress(testWidget, Qt::Key_Backspace);
+ QCOMPARE(testWidget->displayText(), QString(8, fillChar));
+
// restore clean state
testWidget->setEchoMode(QLineEdit::Normal);
}
diff --git a/tests/auto/qpushbutton/tst_qpushbutton.cpp b/tests/auto/qpushbutton/tst_qpushbutton.cpp
index 7742f6b..db4f385 100644
--- a/tests/auto/qpushbutton/tst_qpushbutton.cpp
+++ b/tests/auto/qpushbutton/tst_qpushbutton.cpp
@@ -91,6 +91,9 @@ private slots:
void animateClick();
void toggle();
void clicked();
+#ifdef Q_OS_MAC
+ void macClicked();
+#endif
void toggled();
void isEnabled();
void defaultAndAutoDefault();
@@ -469,6 +472,34 @@ void tst_QPushButton::clicked()
QCOMPARE( release_count, (uint)10 );
}
+#ifdef Q_OS_MAC
+// test that the corners of a mac style button are not treated as clicks.
+// but that if a style is applied, they are.
+void tst_QPushButton::macClicked()
+{
+ QPushButton *macTestWidget = new QPushButton( "Push button" );
+ macTestWidget->show();
+ connect( macTestWidget, SIGNAL(clicked()), this, SLOT(onClicked()) );
+
+ QTest::mouseClick( macTestWidget, Qt::LeftButton, 0, QPoint(1,1) );
+ QVERIFY( click_count == 0 );
+
+ QTest::mouseClick( macTestWidget, Qt::LeftButton, 0, macTestWidget->rect().center() );
+ QVERIFY( click_count == 1 );
+
+ resetCounters();
+ macTestWidget->setStyleSheet("background: white;");
+
+ QTest::mouseClick( macTestWidget, Qt::LeftButton, 0, QPoint(1,1) );
+ QVERIFY( click_count == 1 );
+
+ QTest::mouseClick( macTestWidget, Qt::LeftButton, 0, macTestWidget->rect().center() );
+ QVERIFY( click_count == 2 );
+
+ delete macTestWidget;
+}
+#endif
+
/*
void tst_QPushButton::group()
{
diff --git a/tools/macdeployqt/shared/shared.cpp b/tools/macdeployqt/shared/shared.cpp
index 1a9a6ab..156f1de 100644
--- a/tools/macdeployqt/shared/shared.cpp
+++ b/tools/macdeployqt/shared/shared.cpp
@@ -127,7 +127,7 @@ FrameworkInfo parseOtoolLibraryLine(const QString &line, bool useDebugLibs)
while (part < parts.count()) {
const QString currentPart = parts.at(part).simplified() ;
++part;
- if (currentPart == "")
+ if (currentPart.isEmpty())
continue;
if (state == QtPath) {
diff --git a/tools/macdeployqt/tests/tst_deployment_mac.cpp b/tools/macdeployqt/tests/tst_deployment_mac.cpp
index 858dc45..5921199 100644
--- a/tools/macdeployqt/tests/tst_deployment_mac.cpp
+++ b/tools/macdeployqt/tests/tst_deployment_mac.cpp
@@ -230,4 +230,4 @@ void tst_deployment_mac::testFindAppBinarty()
QTEST_MAIN(tst_deployment_mac)
-#include "tst_deployment_mac.moc" \ No newline at end of file
+#include "tst_deployment_mac.moc"
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index ae7385e..9f512d3 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -2098,9 +2098,10 @@ DitaXmlGenerator::generateClassLikeNode(const InnerNode* inner, CodeMarker* mark
generateSince(qcn, marker);
enterSection("h2","Detailed Description");
generateBody(qcn, marker);
- if (cn)
+ if (cn) {
generateQmlText(cn->doc().body(), cn, marker, qcn->name());
- generateAlsoList(cn, marker);
+ generateAlsoList(cn, marker);
+ }
leaveSection();
leaveSection(); // </apiDesc>
diff --git a/tools/qdoc3/doc/config/images/arrow_down.png b/tools/qdoc3/doc/config/images/arrow_down.png
new file mode 100644
index 0000000..9d01e97
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/arrow_down.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bg_l.png b/tools/qdoc3/doc/config/images/bg_l.png
new file mode 100755
index 0000000..90b1da1
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bg_l.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bg_l_blank.png b/tools/qdoc3/doc/config/images/bg_l_blank.png
new file mode 100755
index 0000000..5a9673d
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bg_l_blank.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bg_ll_blank.png b/tools/qdoc3/doc/config/images/bg_ll_blank.png
new file mode 100644
index 0000000..95a1c45
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bg_ll_blank.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bg_r.png b/tools/qdoc3/doc/config/images/bg_r.png
new file mode 100755
index 0000000..f0fb121
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bg_r.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bg_ul_blank.png b/tools/qdoc3/doc/config/images/bg_ul_blank.png
new file mode 100644
index 0000000..7051261
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bg_ul_blank.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/box_bg.png b/tools/qdoc3/doc/config/images/box_bg.png
new file mode 100755
index 0000000..3322f92
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/box_bg.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/breadcrumb.png b/tools/qdoc3/doc/config/images/breadcrumb.png
new file mode 100755
index 0000000..0ded551
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/breadcrumb.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bullet_dn.png b/tools/qdoc3/doc/config/images/bullet_dn.png
new file mode 100644
index 0000000..f776247
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bullet_dn.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bullet_gt.png b/tools/qdoc3/doc/config/images/bullet_gt.png
new file mode 100755
index 0000000..7561b4e
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bullet_gt.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bullet_sq.png b/tools/qdoc3/doc/config/images/bullet_sq.png
new file mode 100755
index 0000000..a84845e
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bullet_sq.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/bullet_up.png b/tools/qdoc3/doc/config/images/bullet_up.png
new file mode 100644
index 0000000..7de2f06
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/bullet_up.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/feedbackground.png b/tools/qdoc3/doc/config/images/feedbackground.png
new file mode 100755
index 0000000..3a38d99
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/feedbackground.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/header_bg.png b/tools/qdoc3/doc/config/images/header_bg.png
new file mode 100644
index 0000000..a436aa6
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/header_bg.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/horBar.png b/tools/qdoc3/doc/config/images/horBar.png
new file mode 100755
index 0000000..100fe91
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/horBar.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/page.png b/tools/qdoc3/doc/config/images/page.png
new file mode 100644
index 0000000..1db151b
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/page.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/page_bg.png b/tools/qdoc3/doc/config/images/page_bg.png
new file mode 100755
index 0000000..9b3bd99
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/page_bg.png
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/spinner.gif b/tools/qdoc3/doc/config/images/spinner.gif
new file mode 100644
index 0000000..1ed786f
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/spinner.gif
Binary files differ
diff --git a/tools/qdoc3/doc/config/images/sprites-combined.png b/tools/qdoc3/doc/config/images/sprites-combined.png
new file mode 100755
index 0000000..3a48b21
--- /dev/null
+++ b/tools/qdoc3/doc/config/images/sprites-combined.png
Binary files differ
diff --git a/tools/qdoc3/puredocparser.cpp b/tools/qdoc3/puredocparser.cpp
index c7db1bf..0f21cbc 100644
--- a/tools/qdoc3/puredocparser.cpp
+++ b/tools/qdoc3/puredocparser.cpp
@@ -55,6 +55,11 @@ PureDocParser::~PureDocParser()
{
}
+QString PureDocParser::language()
+{
+ return "qdoc";
+}
+
QStringList PureDocParser::sourceFileNameFilter()
{
return QStringList("*.qdoc");
diff --git a/tools/qdoc3/puredocparser.h b/tools/qdoc3/puredocparser.h
index 7f0434d..814c829 100644
--- a/tools/qdoc3/puredocparser.h
+++ b/tools/qdoc3/puredocparser.h
@@ -64,6 +64,7 @@ public:
PureDocParser();
virtual ~PureDocParser();
+ virtual QString language();
virtual QStringList sourceFileNameFilter();
};
diff --git a/tools/qdoc3/qmlvisitor.cpp b/tools/qdoc3/qmlvisitor.cpp
index 98e188d..a8886de 100644
--- a/tools/qdoc3/qmlvisitor.cpp
+++ b/tools/qdoc3/qmlvisitor.cpp
@@ -69,18 +69,30 @@ QmlDocVisitor::~QmlDocVisitor()
QDeclarativeJS::AST::SourceLocation QmlDocVisitor::precedingComment(quint32 offset) const
{
- QDeclarativeJS::AST::SourceLocation currentLoc;
+ QListIterator<QDeclarativeJS::AST::SourceLocation> it(engine->comments());
+ it.toBack();
- foreach (const QDeclarativeJS::AST::SourceLocation &loc, engine->comments()) {
- if (loc.begin() >= offset)
+ while (it.hasPrevious()) {
+
+ QDeclarativeJS::AST::SourceLocation loc = it.previous();
+
+ if (loc.begin() <= lastEndOffset)
+ // Return if we reach the end of the preceding structure.
break;
- else if (loc.begin() > lastEndOffset && loc.end() < offset)
- currentLoc = loc;
- }
- if (currentLoc.isValid()) {
- QString comment = document.mid(currentLoc.offset, currentLoc.length);
- if (comment.startsWith("!") || comment.startsWith("*"))
- return currentLoc;
+
+ else if (usedComments.contains(loc.begin()))
+ // Return if we encounter a previously used comment.
+ break;
+
+ else if (loc.begin() > lastEndOffset && loc.end() < offset) {
+
+ // Only examine multiline comments in order to avoid snippet markers.
+ if (document.mid(loc.offset - 1, 1) == "*") {
+ QString comment = document.mid(loc.offset, loc.length);
+ if (comment.startsWith("!") || comment.startsWith("*"))
+ return loc;
+ }
+ }
}
return QDeclarativeJS::AST::SourceLocation();
@@ -93,20 +105,18 @@ void QmlDocVisitor::applyDocumentation(QDeclarativeJS::AST::SourceLocation locat
if (loc.isValid()) {
QString source = document.mid(loc.offset, loc.length);
- if (source.startsWith(QLatin1String("!")) ||
- (source.startsWith(QLatin1String("*")) &&
- source[1] != QLatin1Char('*'))) {
-
- Location start(filePath);
- start.setLineNo(loc.startLine);
- start.setColumnNo(loc.startColumn);
- Location finish(filePath);
- finish.setLineNo(loc.startLine);
- finish.setColumnNo(loc.startColumn);
-
- Doc doc(start, finish, source.mid(1), commands);
- node->setDoc(doc);
- }
+
+ Location start(filePath);
+ start.setLineNo(loc.startLine);
+ start.setColumnNo(loc.startColumn);
+ Location finish(filePath);
+ finish.setLineNo(loc.startLine);
+ finish.setColumnNo(loc.startColumn);
+
+ Doc doc(start, finish, source.mid(1), commands);
+ node->setDoc(doc);
+
+ usedComments.insert(loc.offset);
}
}
@@ -152,6 +162,11 @@ bool QmlDocVisitor::visit(QDeclarativeJS::AST::UiImportList *imports)
return true;
}
+void QmlDocVisitor::endVisit(QDeclarativeJS::AST::UiImportList *definition)
+{
+ lastEndOffset = definition->lastSourceLocation().end();
+}
+
/*!
Visits public member declarations, such as signals and properties.
These only include custom signals and properties.
diff --git a/tools/qdoc3/qmlvisitor.h b/tools/qdoc3/qmlvisitor.h
index 1d3a401..28821a9 100644
--- a/tools/qdoc3/qmlvisitor.h
+++ b/tools/qdoc3/qmlvisitor.h
@@ -57,6 +57,7 @@ public:
virtual ~QmlDocVisitor();
bool visit(QDeclarativeJS::AST::UiImportList *imports);
+ void endVisit(QDeclarativeJS::AST::UiImportList *definition);
bool visit(QDeclarativeJS::AST::UiObjectDefinition *definition);
void endVisit(QDeclarativeJS::AST::UiObjectDefinition *definition);
@@ -77,6 +78,7 @@ private:
QString document;
QList<QPair<QString, QString> > importList;
QSet<QString> commands;
+ QSet<quint32> usedComments;
Tree *tree;
InnerNode *current;
};
diff --git a/tools/qdoc3/test/qt-cpp-ignore.qdocconf b/tools/qdoc3/test/qt-cpp-ignore.qdocconf
index 044eef4..5b41ae3 100644
--- a/tools/qdoc3/test/qt-cpp-ignore.qdocconf
+++ b/tools/qdoc3/test/qt-cpp-ignore.qdocconf
@@ -73,7 +73,8 @@ Cpp.ignoretokens = QAXFACTORY_EXPORT \
Q_DECLARATIVE_EXPORT \
Q_GADGET \
QWEBKIT_EXPORT \
- Q_INVOKABLE
+ Q_INVOKABLE \
+ Q_DECL_CONSTEXPR
Cpp.ignoredirectives = Q_DECLARE_HANDLE \
Q_DECLARE_INTERFACE \
Q_DECLARE_METATYPE \
diff --git a/tools/qdoc3/test/qt-html-templates-online.qdocconf b/tools/qdoc3/test/qt-html-templates-online.qdocconf
index 03ed6fa..3584b68 100644
--- a/tools/qdoc3/test/qt-html-templates-online.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates-online.qdocconf
@@ -181,16 +181,4 @@ HTML.footer = \
" <div id=\"blurpage\">\n" \
" </div>\n" \
"\n" \
- " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n" \
- " <script type=\"text/javascript\">\n" \
- " var _gaq = _gaq || [];\n" \
- " _gaq.push(['_setAccount', 'UA-4457116-5']);\n" \
- " _gaq.push(['_trackPageview']);\n" \
- " (function() {\n" \
- " var ga = document.createElement('script'); " \
- "ga.type = 'text/javascript'; ga.async = true;\n" \
- " ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + " \
- "'.google-analytics.com/ga.js';\n" \
- " var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n" \
- " })();\n" \
- " </script>\n"
+ " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n"
diff --git a/tools/qdoc3/test/qt-project.qdocconf b/tools/qdoc3/test/qt-project.qdocconf
index fca6545..57bf797 100644
--- a/tools/qdoc3/test/qt-project.qdocconf
+++ b/tools/qdoc3/test/qt-project.qdocconf
@@ -105,7 +105,7 @@ exampledirs = $QT_SOURCE_TREE/doc/src \
$QT_SOURCE_TREE/examples/tutorials \
$QT_SOURCE_TREE \
$QT_SOURCE_TREE/qmake/examples \
- $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs
+ $QT_SOURCE_TREE/src/3rdparty/webkit/Source/WebKit/qt/docs
imagedirs = $QT_SOURCE_TREE/doc/src/images \
$QT_SOURCE_TREE/examples \
$QT_SOURCE_TREE/doc/src/declarative/pics \
diff --git a/tools/qtconcurrent/codegenerator/src/codegenerator.cpp b/tools/qtconcurrent/codegenerator/src/codegenerator.cpp
index b8436b9..c81fe97 100644
--- a/tools/qtconcurrent/codegenerator/src/codegenerator.cpp
+++ b/tools/qtconcurrent/codegenerator/src/codegenerator.cpp
@@ -134,7 +134,7 @@ const Compound operator+(const Item &a, const char * const text)
const Compound operator+(const char * const text, const Item &b)
{
- return Compound(Text(text), b);
+ return Compound(Text(text), b);
}
-} \ No newline at end of file
+}
diff --git a/tools/qtestlib/wince/cetest/deployment.h b/tools/qtestlib/wince/cetest/deployment.h
index f3645e0..a5ef32d 100644
--- a/tools/qtestlib/wince/cetest/deployment.h
+++ b/tools/qtestlib/wince/cetest/deployment.h
@@ -72,4 +72,4 @@ private:
inline void DeploymentHandler::setConnection(AbstractRemoteConnection *connection) { m_connection = connection; }
inline AbstractRemoteConnection* DeploymentHandler::connection() const { return m_connection; }
-#endif \ No newline at end of file
+#endif