18 InPlaceWidgetHelper::InPlaceWidgetHelper(QWidget *editorWidget, QWidget *parentWidget, QDesignerFormWindowInterface *fw)
20 m_editorWidget(editorWidget),
21 m_parentWidget(parentWidget),
22 m_noChildEvent(m_parentWidget->testAttribute(Qt::WA_NoChildEventsForParent))
24 m_editorWidget->setAttribute(Qt::WA_DeleteOnClose);
25 m_editorWidget->setParent(m_parentWidget->window());
26 m_parentWidget->installEventFilter(
this);
27 m_editorWidget->installEventFilter(
this);
28 connect(m_editorWidget, &QObject::destroyed,
29 fw->mainContainer(), QOverload<>::of(&QWidget::setFocus));
52 if (object == m_parentWidget) {
53 if (e->type() == QEvent::Resize) {
54 const QResizeEvent *event =
static_cast<
const QResizeEvent*>(e);
55 const QPoint localPos = m_parentWidget->geometry().topLeft();
56 const QPoint globalPos = m_parentWidget->parentWidget() ? m_parentWidget->parentWidget()->mapToGlobal(localPos) : localPos;
57 const QPoint newPos = (m_editorWidget->parentWidget() ? m_editorWidget->parentWidget()->mapFromGlobal(globalPos) : globalPos)
59 const QSize newSize = event->size() + m_sizeOffset;
60 m_editorWidget->setGeometry(QRect(newPos, newSize));
62 }
else if (object == m_editorWidget) {
63 if (e->type() == QEvent::ShortcutOverride) {
64 if (
static_cast<QKeyEvent*>(e)->key() == Qt::Key_Escape) {
68 }
else if (e->type() == QEvent::KeyPress) {
69 if (
static_cast<QKeyEvent*>(e)->key() == Qt::Key_Escape) {
71 m_editorWidget->close();
74 }
else if (e->type() == QEvent::Show) {
75 const QPoint localPos = m_parentWidget->geometry().topLeft();
76 const QPoint globalPos = m_parentWidget->parentWidget() ? m_parentWidget->parentWidget()->mapToGlobal(localPos) : localPos;
77 const QPoint newPos = m_editorWidget->parentWidget() ? m_editorWidget->parentWidget()->mapFromGlobal(globalPos) : globalPos;
78 m_posOffset = m_editorWidget->geometry().topLeft() - newPos;
79 m_sizeOffset = m_editorWidget->size() - m_parentWidget->size();
83 return QObject::eventFilter(object, e);