diff --git a/src/Config.cpp b/src/Config.cpp index db6af5a0..4ca94359 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -56,6 +56,7 @@ public: FrameworkWidgetFactory *m_frameworkWidgetFactory = nullptr; Flags m_flags = Flag_Default; InternalFlags m_internalFlags = InternalFlag_None; + CustomizableWidgets m_disabledPaintEvents = CustomizableWidget_None; qreal m_draggedWindowOpacity = Q_QNAN; }; @@ -292,4 +293,14 @@ void Config::Private::fixFlags() } } +void Config::setDisabledPaintEvents(CustomizableWidgets widgets) +{ + d->m_disabledPaintEvents = widgets; +} + +Config::CustomizableWidgets Config::disabledPaintEvents() const +{ + return d->m_disabledPaintEvents; +} + } diff --git a/src/Config.h b/src/Config.h index 5b565294..4893d32b 100644 --- a/src/Config.h +++ b/src/Config.h @@ -220,6 +220,13 @@ public: void setAbsoluteWidgetMaxSize(QSize size); QSize absoluteWidgetMaxSize() const; + ///@brief Disables our internal widget's paint events + /// By default, KDDockWidget's internal widgets reimplement paintEvent(). Disabling them + /// (which makes the base-class, QWidget::paintEvent() be called instead) can be useful if you want to style + // via CSS stylesheets. + void setDisabledPaintEvents(CustomizableWidgets); + Config::CustomizableWidgets disabledPaintEvents() const; + ///@internal ///@brief returns the internal flags. ///@warning Not for public consumption, support will be limited. diff --git a/src/private/multisplitter/Separator_qwidget.cpp b/src/private/multisplitter/Separator_qwidget.cpp index ecb1ac62..a09f70fa 100644 --- a/src/private/multisplitter/Separator_qwidget.cpp +++ b/src/private/multisplitter/Separator_qwidget.cpp @@ -12,6 +12,7 @@ #include "Separator_qwidget.h" #include "Widget_qwidget.h" #include "Logging_p.h" +#include "Config.h" #include #include @@ -28,8 +29,13 @@ SeparatorWidget::SeparatorWidget(Layouting::Widget *parent) setMouseTracking(true); } -void SeparatorWidget::paintEvent(QPaintEvent *) +void SeparatorWidget::paintEvent(QPaintEvent *ev) { + if (KDDockWidgets::Config::self().disabledPaintEvents() & KDDockWidgets::Config::CustomizableWidget_Separator) { + QWidget::paintEvent(ev); + return; + } + QPainter p(this); QStyleOption opt; diff --git a/src/private/widgets/FloatingWindowWidget.cpp b/src/private/widgets/FloatingWindowWidget.cpp index 05112307..21cca67b 100644 --- a/src/private/widgets/FloatingWindowWidget.cpp +++ b/src/private/widgets/FloatingWindowWidget.cpp @@ -36,8 +36,13 @@ FloatingWindowWidget::FloatingWindowWidget(Frame *frame, MainWindowBase *parent) init(); } -void FloatingWindowWidget::paintEvent(QPaintEvent *) +void FloatingWindowWidget::paintEvent(QPaintEvent *ev) { + if (Config::self().disabledPaintEvents() & Config::CustomizableWidget_FloatingWindow) { + QWidget::paintEvent(ev); + return; + } + QPainter p(this); QPen pen(0x666666); pen.setWidth(1);