diff --git a/src/declarativeimports/core/dialog.cpp b/src/declarativeimports/core/dialog.cpp index 33d66516c..3c4cdb02d 100644 --- a/src/declarativeimports/core/dialog.cpp +++ b/src/declarativeimports/core/dialog.cpp @@ -36,8 +36,6 @@ //#include #include -int DialogProxy::offscreenX = 0; -int DialogProxy::offscreenY = 0; DialogMargins::DialogMargins(QQuickWindow *dialog, QObject *parent) : QObject(parent), @@ -175,9 +173,8 @@ bool DialogProxy::isVisible() const void DialogProxy::setVisible(const bool visible) { - if (isVisible() != visible) { + if (visible) { syncToMainItemSize(); - const QRect workArea(KWindowSystem::workArea()); if (!workArea.contains(geometry())) { @@ -186,11 +183,9 @@ void DialogProxy::setVisible(const bool visible) ); } - QQuickWindow::setVisible(visible); - if (visible) { - raise(); - } + raise(); } + QQuickWindow::setVisible(visible); } QPoint DialogProxy::popupPosition(QQuickItem *item, int alignment) @@ -424,5 +419,19 @@ void DialogProxy::setAttribute(int attribute, bool on) } } +void DialogProxy::focusInEvent(QFocusEvent *ev) +{ + Q_UNUSED(ev) + m_activeWindow = true; + emit activeWindowChanged(); +} + +void DialogProxy::focusOutEvent(QFocusEvent *ev) +{ + Q_UNUSED(ev) + m_activeWindow = false; + emit activeWindowChanged(); +} + #include "moc_dialog.cpp" diff --git a/src/declarativeimports/core/dialog.h b/src/declarativeimports/core/dialog.h index 2dc5f507c..0fb80c081 100644 --- a/src/declarativeimports/core/dialog.h +++ b/src/declarativeimports/core/dialog.h @@ -190,10 +190,6 @@ public: Q_SIGNALS: void mainItemChanged(); void visibleChanged(); -// void xChanged(); -// void yChanged(); -// void widthChanged(); -// void heightChanged(); void activeWindowChanged(); void locationChanged(); @@ -203,17 +199,16 @@ private Q_SLOTS: protected: // bool eventFilter(QObject *watched, QEvent *event); void resizeEvent(QResizeEvent *re); + void focusInEvent(QFocusEvent *ev); + void focusOutEvent(QFocusEvent *ev); private: Qt::WindowFlags m_flags; - QQuickItem *m_declarativeItemContainer; QTimer *m_syncTimer; QWeakPointer m_mainItem; DialogMargins *m_margins; bool m_activeWindow; Plasma::Location m_location; - static int offscreenX; - static int offscreenY; }; #endif