summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@theqtcompany.com>2016-03-24 20:37:33 +0100
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2016-03-24 20:37:33 +0100
commit487844fc62bdf048224d6fc3b7eaae6347d4457b (patch)
tree763dc03ad77fd5b43ef74e817423540caa015e4b /src/widgets
parent4ed048dded34dbe2ce2842f0d40d9f54cd7571b0 (diff)
parent6cacd19db56b632964c3b2453bc273dac50446c9 (diff)
Merge remote-tracking branch 'origin/5.6' into 5.7
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp9
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp24
-rw-r--r--src/widgets/styles/qfusionstyle.cpp8
-rw-r--r--src/widgets/widgets/qtextbrowser.cpp1
4 files changed, 30 insertions, 12 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index da4492a684..1bdb4352af 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -782,7 +782,13 @@ void QAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel)
return;
}
+ QItemSelection oldSelection;
+ QModelIndex oldCurrentIndex;
+
if (d->selectionModel) {
+ oldSelection = d->selectionModel->selection();
+ oldCurrentIndex = d->selectionModel->currentIndex();
+
disconnect(d->selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SLOT(selectionChanged(QItemSelection,QItemSelection)));
disconnect(d->selectionModel, SIGNAL(currentChanged(QModelIndex,QModelIndex)),
@@ -796,6 +802,9 @@ void QAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel)
this, SLOT(selectionChanged(QItemSelection,QItemSelection)));
connect(d->selectionModel, SIGNAL(currentChanged(QModelIndex,QModelIndex)),
this, SLOT(currentChanged(QModelIndex,QModelIndex)));
+
+ selectionChanged(d->selectionModel->selection(), oldSelection);
+ currentChanged(d->selectionModel->currentIndex(), oldCurrentIndex);
}
}
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index c22841dd56..3ba04e4a2a 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -162,11 +162,29 @@ QObject *QWidgetWindow::focusObject() const
return widget;
}
+static inline bool shouldBePropagatedToWidget(QEvent *event)
+{
+ switch (event->type()) {
+ // Handing show events to widgets would cause them to be triggered twice
+ case QEvent::Show:
+ case QEvent::Hide:
+ case QEvent::Timer:
+ case QEvent::DynamicPropertyChange:
+ case QEvent::ChildAdded:
+ case QEvent::ChildRemoved:
+ return false;
+ default:
+ return true;
+ }
+}
+
bool QWidgetWindow::event(QEvent *event)
{
if (m_widget->testAttribute(Qt::WA_DontShowOnScreen)) {
// \a event is uninteresting for QWidgetWindow, the event was probably
// generated before WA_DontShowOnScreen was set
+ if (!shouldBePropagatedToWidget(event))
+ return true;
return QCoreApplication::sendEvent(m_widget, event);
}
@@ -291,10 +309,6 @@ bool QWidgetWindow::event(QEvent *event)
return true;
#endif // QT_NO_CONTEXTMENU
- // Handing show events to widgets (see below) here would cause them to be triggered twice
- case QEvent::Show:
- case QEvent::Hide:
- return QWindow::event(event);
case QEvent::WindowBlocked:
qt_button_down = 0;
break;
@@ -309,7 +323,7 @@ bool QWidgetWindow::event(QEvent *event)
break;
}
- if (QCoreApplication::sendEvent(m_widget, event) && event->type() != QEvent::Timer)
+ if (shouldBePropagatedToWidget(event) && QCoreApplication::sendEvent(m_widget, event))
return true;
return QWindow::event(event);
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index 3bab2f5dbe..b15b9701d9 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -1538,13 +1538,7 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
QRect r = option->rect;
painter->fillRect(r, highlight);
painter->setPen(QPen(highlightOutline));
- const QLine lines[4] = {
- QLine(QPoint(r.left() + 1, r.bottom()), QPoint(r.right() - 1, r.bottom())),
- QLine(QPoint(r.left() + 1, r.top()), QPoint(r.right() - 1, r.top())),
- QLine(QPoint(r.left(), r.top()), QPoint(r.left(), r.bottom())),
- QLine(QPoint(r.right() , r.top()), QPoint(r.right(), r.bottom())),
- };
- painter->drawLines(lines, 4);
+ painter->drawRect(QRectF(r).adjusted(0.5, 0.5, -0.5, -0.5));
}
bool checkable = menuItem->checkType != QStyleOptionMenuItem::NotCheckable;
bool checked = menuItem->checked;
diff --git a/src/widgets/widgets/qtextbrowser.cpp b/src/widgets/widgets/qtextbrowser.cpp
index db66d39089..45da34c383 100644
--- a/src/widgets/widgets/qtextbrowser.cpp
+++ b/src/widgets/widgets/qtextbrowser.cpp
@@ -659,6 +659,7 @@ void QTextBrowserPrivate::init()
#ifndef QT_NO_CURSOR
viewport->setCursor(oldCursor);
#endif
+ q->setAttribute(Qt::WA_InputMethodEnabled, !q->isReadOnly());
q->setUndoRedoEnabled(false);
viewport->setMouseTracking(true);
QObject::connect(q->document(), SIGNAL(contentsChanged()), q, SLOT(_q_documentModified()));