summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-5.0.05
-rw-r--r--src/widgets/kernel/qwidget.cpp44
-rw-r--r--src/widgets/kernel/qwidget.h1
-rw-r--r--src/widgets/kernel/qwidget_p.h1
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp13
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp10
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp26
-rw-r--r--tests/auto/qinputcontext/tst_qinputcontext.cpp66
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp14
9 files changed, 43 insertions, 137 deletions
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0
index ca63359b54..803e16ac46 100644
--- a/dist/changes-5.0.0
+++ b/dist/changes-5.0.0
@@ -58,6 +58,11 @@ QtCore
QtGui
-----
+QtWidgets
+---------
+* QWidget::setInputContext() is removed. Input contexts are now platform
+ specific.
+
QtNetwork
---------
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 4cb01b9e72..f8d5e68da7 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -372,24 +372,9 @@ void QWidgetPrivate::updateWidgetTransform()
}
}
-QInputContext *QWidgetPrivate::assignedInputContext() const
-{
-#ifndef QT_NO_IM
- const QWidget *widget = q_func();
- while (widget) {
- if (QInputContext *qic = widget->d_func()->ic)
- return qic;
- widget = widget->parentWidget();
- }
-#endif
- return 0;
-}
-
QInputContext *QWidgetPrivate::inputContext() const
{
#ifndef QT_NO_IM
- if (QInputContext *qic = assignedInputContext())
- return qic;
return qApp->inputContext();
#else
return 0;
@@ -415,31 +400,6 @@ QInputContext *QWidget::inputContext()
return d->inputContext();
}
-/*!
- This function sets the input context \a context
- on this widget.
-
- Qt takes ownership of the given input \a context.
-
- \sa inputContext()
-*/
-void QWidget::setInputContext(QInputContext *context)
-{
- Q_D(QWidget);
- if (!testAttribute(Qt::WA_InputMethodEnabled))
- return;
-#ifndef QT_NO_IM
- if (context == d->ic)
- return;
- if (d->ic)
- delete d->ic;
- d->ic = context;
- if (d->ic)
- d->ic->setParent(this);
-#endif
-}
-
-
#ifdef QT_KEYPAD_NAVIGATION
QPointer<QWidget> QWidgetPrivate::editingWidget;
@@ -10415,9 +10375,7 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
case Qt::WA_InputMethodEnabled: {
#ifndef QT_NO_IM
QWidget *focusWidget = d->effectiveFocusWidget();
- QInputContext *ic = focusWidget->d_func()->assignedInputContext();
- if (!ic && (!on || hasFocus()))
- ic = focusWidget->d_func()->inputContext();
+ QInputContext *ic = qApp->inputContext();
if (ic) {
if (on && hasFocus() && ic->focusWidget() != focusWidget && isEnabled()
&& focusWidget->testAttribute(Qt::WA_InputMethodEnabled)) {
diff --git a/src/widgets/kernel/qwidget.h b/src/widgets/kernel/qwidget.h
index 3db0408bbd..365d995b4f 100644
--- a/src/widgets/kernel/qwidget.h
+++ b/src/widgets/kernel/qwidget.h
@@ -616,7 +616,6 @@ public:
void ensurePolished() const;
QInputContext *inputContext();
- void setInputContext(QInputContext *);
bool isAncestorOf(const QWidget *child) const;
diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h
index 6e1568e0fa..775152bf0f 100644
--- a/src/widgets/kernel/qwidget_p.h
+++ b/src/widgets/kernel/qwidget_p.h
@@ -573,7 +573,6 @@ public:
// sub-classes that their internals are about to be released.
virtual void aboutToDestroy() {}
- QInputContext *assignedInputContext() const;
QInputContext *inputContext() const;
inline QWidget *effectiveFocusWidget() {
QWidget *w = q_func();
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 79dd2bdd7d..2d629176f3 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -10411,10 +10411,8 @@ void tst_QGraphicsItem::updateMicroFocus()
QGraphicsView view2(&scene);
layout.addWidget(&view, 0, 0);
layout.addWidget(&view2, 0, 1);
- MyInputContext ic2;
- view2.setInputContext(&ic2);
- MyInputContext ic;
- view.setInputContext(&ic);
+ MyInputContext *ic = new MyInputContext;
+ qApp->setInputContext(ic);
MyInputWidget input;
input.setPos(0, 0);
input.resize(150, 150);
@@ -10427,13 +10425,10 @@ void tst_QGraphicsItem::updateMicroFocus()
QTest::qWaitForWindowShown(&parent);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&parent));
//We reset the number of updates that happened previously (initialisation)
- ic.nbUpdates = 0;
- ic2.nbUpdates = 0;
+ ic->nbUpdates = 0;
input.doUpdateMicroFocus();
QApplication::processEvents();
- QTRY_COMPARE(ic.nbUpdates, 1);
- //No update since view2 does not have the focus.
- QTRY_COMPARE(ic2.nbUpdates, 0);
+ QTRY_COMPARE(ic->nbUpdates, 1);
}
void tst_QGraphicsItem::textItem_shortcuts()
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 910f0bb688..b4c419a4f6 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -3867,21 +3867,21 @@ void tst_QGraphicsScene::inputMethod()
QGraphicsScene scene;
QGraphicsView view(&scene);
- TestInputContext inputContext;
- view.setInputContext(&inputContext);
+ TestInputContext *inputContext = new TestInputContext;
+ qApp->setInputContext(inputContext);
view.show();
QApplication::setActiveWindow(&view);
view.setFocus();
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
- inputContext.resetCalls = 0;
+ inputContext->resetCalls = 0;
scene.addItem(item);
QInputMethodEvent event;
scene.setFocusItem(item);
QCOMPARE(!!(item->flags() & QGraphicsItem::ItemIsFocusable), scene.focusItem() == item);
- QCOMPARE(inputContext.resetCalls, 0);
+ QCOMPARE(inputContext->resetCalls, 0);
item->eventCalls = 0;
qApp->sendEvent(&scene, &event);
@@ -3894,7 +3894,7 @@ void tst_QGraphicsScene::inputMethod()
scene.setFocusItem(0);
// the input context is reset twice, once because an item has lost focus and again because
// the Qt::WA_InputMethodEnabled flag is cleared because no item has focus.
- QCOMPARE(inputContext.resetCalls, callFocusItem ? 2 : 0);
+ QCOMPARE(inputContext->resetCalls, callFocusItem ? 2 : 0);
QCOMPARE(item->eventCalls, callFocusItem ? 2 : 0); // verify correct delivery of "reset" event
QCOMPARE(item->queryCalls, callFocusItem ? 1 : 0); // verify that value is unaffected
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index d6bc8ff3e8..d1ccd7cae5 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -4124,8 +4124,8 @@ void tst_QGraphicsView::inputContextReset()
QGraphicsView view(&scene);
QVERIFY(view.testAttribute(Qt::WA_InputMethodEnabled));
- InputContextTester inputContext;
- view.setInputContext(&inputContext);
+ InputContextTester *inputContext = new InputContextTester;
+ qApp->setInputContext(inputContext);
view.show();
QTest::qWaitForWindowShown(&view);
@@ -4135,39 +4135,39 @@ void tst_QGraphicsView::inputContextReset()
QGraphicsItem *item1 = new QGraphicsRectItem;
item1->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemAcceptsInputMethod);
- inputContext.resets = 0;
+ inputContext->resets = 0;
scene.addItem(item1);
- QCOMPARE(inputContext.resets, 0);
+ QCOMPARE(inputContext->resets, 0);
- inputContext.resets = 0;
+ inputContext->resets = 0;
scene.setFocusItem(item1);
QCOMPARE(scene.focusItem(), (QGraphicsItem *)item1);
QVERIFY(view.testAttribute(Qt::WA_InputMethodEnabled));
- QCOMPARE(inputContext.resets, 0);
+ QCOMPARE(inputContext->resets, 0);
- inputContext.resets = 0;
+ inputContext->resets = 0;
scene.setFocusItem(0);
// the input context is reset twice, once because an item has lost focus and again because
// the Qt::WA_InputMethodEnabled flag is cleared because no item has focus.
- QCOMPARE(inputContext.resets, 2);
+ QCOMPARE(inputContext->resets, 2);
// introduce another item that is focusable but does not accept input methods
QGraphicsItem *item2 = new QGraphicsRectItem;
item2->setFlags(QGraphicsItem::ItemIsFocusable);
scene.addItem(item2);
- inputContext.resets = 0;
+ inputContext->resets = 0;
scene.setFocusItem(item2);
- QCOMPARE(inputContext.resets, 0);
+ QCOMPARE(inputContext->resets, 0);
- inputContext.resets = 0;
+ inputContext->resets = 0;
scene.setFocusItem(item1);
- QCOMPARE(inputContext.resets, 0);
+ QCOMPARE(inputContext->resets, 0);
// test changing between between items that accept input methods.
item2->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemAcceptsInputMethod);
scene.setFocusItem(item2);
- QCOMPARE(inputContext.resets, 1);
+ QCOMPARE(inputContext->resets, 1);
}
void tst_QGraphicsView::indirectPainting()
diff --git a/tests/auto/qinputcontext/tst_qinputcontext.cpp b/tests/auto/qinputcontext/tst_qinputcontext.cpp
index 27aea904f2..2f74988954 100644
--- a/tests/auto/qinputcontext/tst_qinputcontext.cpp
+++ b/tests/auto/qinputcontext/tst_qinputcontext.cpp
@@ -88,7 +88,6 @@ private slots:
void closeSoftwareInputPanel();
void selections();
void focusProxy();
- void contextInheritance();
void symbianTestCoeFepInputContext_data();
void symbianTestCoeFepInputContext();
void symbianTestCoeFepAutoCommit_data();
@@ -306,12 +305,10 @@ void tst_QInputContext::filterMouseEvents()
QApplication::setActiveWindow(&le);
QFilterInputContext *ic = new QFilterInputContext;
- le.setInputContext(ic);
+ qApp->setInputContext(ic);
QTest::mouseClick(&le, Qt::LeftButton);
QVERIFY(ic->lastTypes.indexOf(QEvent::MouseButtonRelease) >= 0);
-
- le.setInputContext(0);
}
class RequestSoftwareInputPanelStyle : public QWindowsStyle
@@ -357,11 +354,8 @@ void tst_QInputContext::requestSoftwareInputPanel()
layout->addWidget(le2);
w.setLayout(layout);
- QFilterInputContext *ic1, *ic2;
- ic1 = new QFilterInputContext;
- ic2 = new QFilterInputContext;
- le1->setInputContext(ic1);
- le2->setInputContext(ic2);
+ QFilterInputContext *ic = new QFilterInputContext;
+ qApp->setInputContext(ic);
w.show();
QApplication::setActiveWindow(&w);
@@ -369,20 +363,20 @@ void tst_QInputContext::requestSoftwareInputPanel()
// Testing single click panel activation.
newStyle->m_rsipBehavior = QStyle::RSIP_OnMouseClick;
QTest::mouseClick(le2, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
- QVERIFY(ic2->lastTypes.indexOf(QEvent::RequestSoftwareInputPanel) >= 0);
- ic2->lastTypes.clear();
+ QVERIFY(ic->lastTypes.indexOf(QEvent::RequestSoftwareInputPanel) >= 0);
+ ic->lastTypes.clear();
// Testing double click panel activation.
newStyle->m_rsipBehavior = QStyle::RSIP_OnMouseClickAndAlreadyFocused;
QTest::mouseClick(le1, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
- QVERIFY(ic1->lastTypes.indexOf(QEvent::RequestSoftwareInputPanel) < 0);
+ QVERIFY(ic->lastTypes.indexOf(QEvent::RequestSoftwareInputPanel) < 0);
QTest::mouseClick(le1, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
- QVERIFY(ic1->lastTypes.indexOf(QEvent::RequestSoftwareInputPanel) >= 0);
- ic1->lastTypes.clear();
+ QVERIFY(ic->lastTypes.indexOf(QEvent::RequestSoftwareInputPanel) >= 0);
+ ic->lastTypes.clear();
// Testing right mouse button
QTest::mouseClick(le1, Qt::RightButton, Qt::NoModifier, QPoint(5, 5));
- QVERIFY(ic1->lastTypes.indexOf(QEvent::RequestSoftwareInputPanel) < 0);
+ QVERIFY(ic->lastTypes.indexOf(QEvent::RequestSoftwareInputPanel) < 0);
qApp->setStyle(oldStyle);
oldStyle->setParent(qApp);
@@ -402,11 +396,8 @@ void tst_QInputContext::closeSoftwareInputPanel()
layout->addWidget(rb);
w.setLayout(layout);
- QFilterInputContext *ic1, *ic2;
- ic1 = new QFilterInputContext;
- ic2 = new QFilterInputContext;
- le1->setInputContext(ic1);
- le2->setInputContext(ic2);
+ QFilterInputContext *ic = new QFilterInputContext;
+ qApp->setInputContext(ic);
w.show();
QApplication::setActiveWindow(&w);
@@ -414,11 +405,11 @@ void tst_QInputContext::closeSoftwareInputPanel()
// Testing that panel doesn't close between two input methods aware widgets.
QTest::mouseClick(le1, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
QTest::mouseClick(le2, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
- QVERIFY(ic2->lastTypes.indexOf(QEvent::CloseSoftwareInputPanel) < 0);
+ QVERIFY(ic->lastTypes.indexOf(QEvent::CloseSoftwareInputPanel) < 0);
// Testing that panel closes when focusing non-aware widget.
QTest::mouseClick(rb, Qt::LeftButton, Qt::NoModifier, QPoint(5, 5));
- QVERIFY(ic2->lastTypes.indexOf(QEvent::CloseSoftwareInputPanel) >= 0);
+ QVERIFY(ic->lastTypes.indexOf(QEvent::CloseSoftwareInputPanel) >= 0);
}
void tst_QInputContext::selections()
@@ -474,37 +465,6 @@ void tst_QInputContext::focusProxy()
QCOMPARE(gic->focusWidget(), &proxy);
}
-void tst_QInputContext::contextInheritance()
-{
- QWidget parent;
- QWidget child(&parent);
-
- parent.setAttribute(Qt::WA_InputMethodEnabled, true);
- child.setAttribute(Qt::WA_InputMethodEnabled, true);
-
- QCOMPARE(parent.inputContext(), qApp->inputContext());
- QCOMPARE(child.inputContext(), qApp->inputContext());
-
- QInputContext *qic = new QFilterInputContext;
- parent.setInputContext(qic);
- QCOMPARE(parent.inputContext(), qic);
- QCOMPARE(child.inputContext(), qic);
-
- parent.setAttribute(Qt::WA_InputMethodEnabled, false);
- QVERIFY(!parent.inputContext());
- QCOMPARE(child.inputContext(), qic);
- parent.setAttribute(Qt::WA_InputMethodEnabled, true);
-
- parent.setInputContext(0);
- QCOMPARE(parent.inputContext(), qApp->inputContext());
- QCOMPARE(child.inputContext(), qApp->inputContext());
-
- qic = new QFilterInputContext;
- qApp->setInputContext(qic);
- QCOMPARE(parent.inputContext(), qic);
- QCOMPARE(child.inputContext(), qic);
-}
-
#ifdef QT_WEBKIT_LIB
class AutoWebView : public QWebView
{
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 1414123296..f7d3e465df 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -589,21 +589,11 @@ void tst_QWidget::getSetCheck()
QCOMPARE(true, obj1.acceptDrops());
// QInputContext * QWidget::inputContext()
- // void QWidget::setInputContext(QInputContext *)
MyInputContext *var13 = new MyInputContext;
- obj1.setInputContext(var13);
+ qApp->setInputContext(var13);
QCOMPARE((QInputContext *)0, obj1.inputContext()); // The widget by default doesn't have the WA_InputMethodEnabled attribute
obj1.setAttribute(Qt::WA_InputMethodEnabled);
- obj1.setInputContext(var13);
QCOMPARE(static_cast<QInputContext *>(var13), obj1.inputContext());
- // QWidget takes ownership, so check parent
- QCOMPARE(var13->parent(), static_cast<QObject *>(&obj1));
- // Check self assignment
- obj1.setInputContext(obj1.inputContext());
- QCOMPARE(static_cast<QInputContext *>(var13), obj1.inputContext());
- obj1.setInputContext((QInputContext *)0);
- QCOMPARE(qApp->inputContext(), obj1.inputContext());
- QVERIFY(qApp->inputContext() != var13);
// bool QWidget::autoFillBackground()
// void QWidget::setAutoFillBackground(bool)
@@ -9937,7 +9927,7 @@ void tst_QWidget::focusProxyAndInputMethods()
InputContextTester *inputContext = new InputContextTester;
QWidget *toplevel = new QWidget(0, Qt::X11BypassWindowManagerHint);
toplevel->setAttribute(Qt::WA_InputMethodEnabled, true);
- toplevel->setInputContext(inputContext); // ownership is transferred
+ qApp->setInputContext(inputContext); // ownership is transferred
QWidget *child = new QWidget(toplevel);
child->setFocusProxy(toplevel);