diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-05-03 10:39:12 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-07 16:52:21 +0200 |
commit | f2fcf75381b08f9bac247fde66604fed685dabb1 (patch) | |
tree | 5144cedacec91316e767a1af9c4adf3fa75bde21 /src/widgets | |
parent | eb11f67dd9d61e0d83506bce0f700330cba4e434 (diff) |
Enable non-client-area mouse events by default for widgets.
Task-number: QTBUG-30530
Task-number: QTBUG-29012
Change-Id: Iaddbb89bbb198e2b04419407e0871951650552ce
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/kernel/qwidget_qpa.cpp | 3 | ||||
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 14 |
2 files changed, 3 insertions, 14 deletions
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index 6547bfdf76..590ebed5eb 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -137,6 +137,9 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO qt_window_private(win)->positionPolicy = topData()->posIncludesFrame ? QWindowPrivate::WindowFrameInclusive : QWindowPrivate::WindowFrameExclusive; win->create(); + // Enable nonclient-area events for QDockWidget and other NonClientArea-mouse event processing. + if ((flags & Qt::Desktop) == Qt::Window) + win->handle()->setFrameStrutEventsEnabled(true); data.window_flags = win->flags(); diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 7485644a08..a3c331aa2b 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -55,7 +55,6 @@ #include <qtoolbutton.h> #include <qdebug.h> -#include <qpa/qplatformwindow.h> #include <private/qwidgetresizehandler_p.h> #include "qdockwidget_p.h" @@ -1000,14 +999,6 @@ void QDockWidgetPrivate::plug(const QRect &rect) setWindowState(false, false, rect); } -static void setFrameStrutEventsEnabled(const QWidget *w, bool enabled) -{ - if (const QWindow *window = w->windowHandle()) - if (QPlatformWindow *platformWindow = window->handle()) - if (platformWindow->frameStrutEventsEnabled() != enabled) - platformWindow->setFrameStrutEventsEnabled(enabled); -} - void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect &rect) { Q_Q(QDockWidget); @@ -1060,9 +1051,6 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect } } - if (floating && nativeDeco) - setFrameStrutEventsEnabled(q, true); - resizer->setActive(QWidgetResizeHandler::Resize, !unplug && floating && !nativeDeco); } @@ -1397,8 +1385,6 @@ bool QDockWidget::event(QEvent *event) emit visibilityChanged(false); break; case QEvent::Show: - if (static_cast<QDockWidgetLayout *>(QDockWidget::layout())->nativeWindowDeco(isFloating())) - setFrameStrutEventsEnabled(this, true); d->toggleViewAction->setChecked(true); emit visibilityChanged(geometry().right() >= 0 && geometry().bottom() >= 0); break; |