X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/94815093253e5db99aa100f0834cd6c74c96a91a..8be1e2aa07333ffbc4555f89e20461f580dc465c:/src/dolphindockwidget.cpp diff --git a/src/dolphindockwidget.cpp b/src/dolphindockwidget.cpp index f7ee16fdc..ccbecb0d6 100644 --- a/src/dolphindockwidget.cpp +++ b/src/dolphindockwidget.cpp @@ -21,20 +21,30 @@ #include +namespace { + // Disable the 'Floatable' feature, i.e., the possibility to drag the + // dock widget out of the main window. This works around problems like + // https://bugs.kde.org/show_bug.cgi?id=288629 + // https://bugs.kde.org/show_bug.cgi?id=322299 + const QDockWidget::DockWidgetFeatures DefaultDockWidgetFeatures = QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable; +} + // Empty titlebar for the dock widgets when "Lock Layout" has been activated. class DolphinDockTitleBar : public QWidget { + Q_OBJECT + public: DolphinDockTitleBar(QWidget* parent = 0) : QWidget(parent) {} virtual ~DolphinDockTitleBar() {} - virtual QSize minimumSizeHint() const + QSize minimumSizeHint() const Q_DECL_OVERRIDE { const int border = style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin); return QSize(border, border); } - virtual QSize sizeHint() const + QSize sizeHint() const Q_DECL_OVERRIDE { return minimumSizeHint(); } @@ -45,6 +55,7 @@ DolphinDockWidget::DolphinDockWidget(const QString& title, QWidget* parent, Qt:: m_locked(false), m_dockTitleBar(0) { + setFeatures(DefaultDockWidgetFeatures); } DolphinDockWidget::DolphinDockWidget(QWidget* parent, Qt::WindowFlags flags) : @@ -52,6 +63,7 @@ DolphinDockWidget::DolphinDockWidget(QWidget* parent, Qt::WindowFlags flags) : m_locked(false), m_dockTitleBar(0) { + setFeatures(DefaultDockWidgetFeatures); } DolphinDockWidget::~DolphinDockWidget() @@ -64,12 +76,14 @@ void DolphinDockWidget::setLocked(bool lock) m_locked = lock; if (lock) { - if (m_dockTitleBar == 0) { + if (!m_dockTitleBar) { m_dockTitleBar = new DolphinDockTitleBar(this); } setTitleBarWidget(m_dockTitleBar); + setFeatures(QDockWidget::NoDockWidgetFeatures); } else { setTitleBarWidget(0); + setFeatures(DefaultDockWidgetFeatures); } } }