qml: Wire up some events for DockWidget
Some events like QEvent::Show, Hide and Close are for QWidget only, so we have to synthetize them, as KDDW expects them
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
|
||||
#include <Config.h>
|
||||
#include <QQuickItem>
|
||||
#include <QCloseEvent>
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief Represents a dock widget.
|
||||
@@ -62,8 +64,7 @@ void DockWidgetQuick::setWidget(const QString &qmlFilename)
|
||||
DockWidgetBase::setWidget(adapter);
|
||||
}
|
||||
|
||||
/* TODO_QUICK
|
||||
bool DockWidget::event(QEvent *e)
|
||||
bool DockWidgetQuick::event(QEvent *e)
|
||||
{
|
||||
if (e->type() == QEvent::ParentChange) {
|
||||
onParentChanged();
|
||||
@@ -71,13 +72,9 @@ bool DockWidget::event(QEvent *e)
|
||||
onShown(e->spontaneous());
|
||||
} else if (e->type() == QEvent::Hide) {
|
||||
onHidden(e->spontaneous());
|
||||
} else if (e->type() == QEvent::Close) {
|
||||
onClosed(static_cast<QCloseEvent*>(e));
|
||||
}
|
||||
|
||||
return QWidget::event(e);
|
||||
return DockWidgetBase::event(e);
|
||||
}
|
||||
|
||||
void DockWidget::closeEvent(QCloseEvent *e)
|
||||
{
|
||||
onClosed(e);
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -54,6 +54,9 @@ public:
|
||||
/// Similar to DockWidgetBase::setWidget(QQuickItem*)
|
||||
void setWidget(const QString &qmlFilename);
|
||||
|
||||
protected:
|
||||
bool event(QEvent *e) override;
|
||||
|
||||
private:
|
||||
class Private;
|
||||
Private *const d;
|
||||
|
||||
@@ -66,10 +66,20 @@ void QWidgetAdapter::itemChange(QQuickItem::ItemChange change, const QQuickItem:
|
||||
{
|
||||
QQuickItem::itemChange(change, data);
|
||||
|
||||
if (change == QQuickItem::ItemParentHasChanged) {
|
||||
// Emulate the QWidget behaviour as QQuickItem doesn't emit parentChange event.
|
||||
// Emulate the QWidget behaviour as QQuickItem doesn't receive some QEvents.
|
||||
switch (change) {
|
||||
case QQuickItem::ItemVisibleHasChanged: {
|
||||
QEvent ev(QEvent::ParentChange);
|
||||
event(&ev);
|
||||
break;
|
||||
}
|
||||
case QQuickItem::ItemParentHasChanged: {
|
||||
QEvent ev(isVisible() ? QEvent::Show : QEvent::Hide);
|
||||
event(&ev);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user