X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/94815093253e5db99aa100f0834cd6c74c96a91a..a058c64eba30f11bfa87ac097371c04437d0471e:/src/dolphindockwidget.cpp diff --git a/src/dolphindockwidget.cpp b/src/dolphindockwidget.cpp index f7ee16fdc..32d25702a 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() {} + explicit DolphinDockTitleBar(QWidget* parent = nullptr) : QWidget(parent) {} + ~DolphinDockTitleBar() override {} - virtual QSize minimumSizeHint() const + QSize minimumSizeHint() const override { const int border = style()->pixelMetric(QStyle::PM_DockWidgetTitleBarButtonMargin); return QSize(border, border); } - virtual QSize sizeHint() const + QSize sizeHint() const override { return minimumSizeHint(); } @@ -43,15 +53,9 @@ public: DolphinDockWidget::DolphinDockWidget(const QString& title, QWidget* parent, Qt::WindowFlags flags) : QDockWidget(title, parent, flags), m_locked(false), - m_dockTitleBar(0) -{ -} - -DolphinDockWidget::DolphinDockWidget(QWidget* parent, Qt::WindowFlags flags) : - QDockWidget(parent, flags), - m_locked(false), - m_dockTitleBar(0) + m_dockTitleBar(nullptr) { + setFeatures(DefaultDockWidgetFeatures); } DolphinDockWidget::~DolphinDockWidget() @@ -64,12 +68,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); + setTitleBarWidget(nullptr); + setFeatures(DefaultDockWidgetFeatures); } } }