diff options
-rw-r--r-- | src/gui/widgets/qcalendarwidget.cpp | 20 | ||||
-rw-r--r-- | tests/auto/qmessagebox/tst_qmessagebox.cpp | 11 | ||||
-rw-r--r-- | tests/auto/qtextdocument/tst_qtextdocument.cpp | 10 |
3 files changed, 28 insertions, 13 deletions
diff --git a/src/gui/widgets/qcalendarwidget.cpp b/src/gui/widgets/qcalendarwidget.cpp index 71588c4..08ed7f6 100644 --- a/src/gui/widgets/qcalendarwidget.cpp +++ b/src/gui/widgets/qcalendarwidget.cpp @@ -3022,11 +3022,21 @@ bool QCalendarWidget::event(QEvent *event) bool QCalendarWidget::eventFilter(QObject *watched, QEvent *event) { Q_D(QCalendarWidget); - if (event->type() == QEvent::MouseButtonPress && d->yearEdit->hasFocus() && !QRect(d->yearEdit->mapToGlobal(QPoint(0, 0)), d->yearEdit->size()).contains(static_cast<QMouseEvent *>(event)->globalPos())) { - event->accept(); - d->_q_yearEditingFinished(); - setFocus(); - return true; + if (event->type() == QEvent::MouseButtonPress && d->yearEdit->hasFocus()) { + QWidget *tlw = window(); + QWidget *widget = static_cast<QWidget*>(watched); + //as we have a event filter on the whole application we first make sure that the top level widget + //of both this and the watched widget are the same to decide if we should finish the year edition. + if (widget->window() == tlw) { + QPoint mousePos = widget->mapTo(tlw, static_cast<QMouseEvent *>(event)->pos()); + QRect geom = QRect(d->yearEdit->mapTo(tlw, QPoint(0, 0)), d->yearEdit->size()); + if (!geom.contains(mousePos)) { + event->accept(); + d->_q_yearEditingFinished(); + setFocus(); + return true; + } + } } return QWidget::eventFilter(watched, event); } diff --git a/tests/auto/qmessagebox/tst_qmessagebox.cpp b/tests/auto/qmessagebox/tst_qmessagebox.cpp index 64e5a9c..5607fbd 100644 --- a/tests/auto/qmessagebox/tst_qmessagebox.cpp +++ b/tests/auto/qmessagebox/tst_qmessagebox.cpp @@ -130,7 +130,7 @@ private slots: void testSymbols(); void incorrectDefaultButton(); void updateSize(); - + void setInformativeText(); void iconPixmap(); @@ -683,7 +683,13 @@ void tst_QMessageBox::incorrectDefaultButton() void tst_QMessageBox::updateSize() { QMessageBox box; +#ifdef Q_WS_S60 + // In S60 messagebox is always occupies maximum width, i.e. screen width + // so we need to have long enough text to split over several line + box.setText("This is awesome long text"); +#else box.setText("This is awesome"); +#endif box.show(); QSize oldSize = box.size(); QString longText; @@ -693,9 +699,12 @@ void tst_QMessageBox::updateSize() QVERIFY(box.size() != oldSize); // should have grown QVERIFY(box.width() > oldSize.width() || box.height() > oldSize.height()); oldSize = box.size(); +#ifndef Q_WS_S60 + // In S60 dialogs buttons are in softkey area -> message box size does not change box.setStandardButtons(QMessageBox::StandardButtons(0xFFFF)); QVERIFY(box.size() != oldSize); // should have grown QVERIFY(box.width() > oldSize.width() || box.height() > oldSize.height()); +#endif } void tst_QMessageBox::setInformativeText() diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp index c0d7ed3..f393393 100644 --- a/tests/auto/qtextdocument/tst_qtextdocument.cpp +++ b/tests/auto/qtextdocument/tst_qtextdocument.cpp @@ -1787,21 +1787,17 @@ void tst_QTextDocument::cursorPositionChangedOnSetText() { CursorPosSignalSpy spy(doc); - cursor = QTextCursor(); + // doc has one QTextCursor stored in the + // cursor member variable, thus the signal + // gets emitted once. doc->setPlainText("Foo\nBar\nBaz\nBlub\nBlah"); - // the signal should still be emitted once for the QTextCursor that - // QTextDocument::setPlainText creates temporarily. But the signal - // should not be emitted more often. QCOMPARE(spy.calls, 1); spy.calls = 0; doc->setHtml("<p>Foo<p>Bar<p>Baz<p>Blah"); - // the signal should still be emitted once for the QTextCursor that - // QTextDocument::setPlainText creates temporarily. But the signal - // should not be emitted more often. QCOMPARE(spy.calls, 1); } |