Skip to content

Commit cf33536

Browse files
authored
Feature transparency (#260)
Fix transparency in systemsettings Fix transparency in inline messages
1 parent 983f363 commit cf33536

File tree

2 files changed

+63
-20
lines changed

2 files changed

+63
-20
lines changed

kstyle/CMakeLists.txt

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
################# includes #################
22
include_directories(
3-
animations
4-
debug
3+
animations
4+
debug
5+
${CMAKE_SOURCE_DIR}/libdarklycommon
6+
${CMAKE_BINARY_DIR}/libdarklycommon
57
)
68

7-
include_directories(${CMAKE_SOURCE_DIR}/libdarklycommon)
8-
include_directories(${CMAKE_BINARY_DIR}/libdarklycommon)
9-
109
################# configuration #################
1110
configure_file(config-darkly.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-darkly.h)
1211

@@ -59,21 +58,34 @@ kconfig_add_kcfg_files(darkly_PART_SRCS darklystyleconfigdata.kcfgc)
5958

6059
add_library(darkly${QT_MAJOR_VERSION} MODULE ${darkly_PART_SRCS})
6160

61+
################# find Qt modules #################
62+
if(QT_MAJOR_VERSION EQUAL 6)
63+
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Quick QuickWidgets)
64+
else()
65+
find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Quick QuickWidgets)
66+
endif()
67+
68+
################# link Qt libraries #################
6269
target_link_libraries(darkly${QT_MAJOR_VERSION}
70+
PRIVATE
6371
Qt${QT_MAJOR_VERSION}::Core
6472
Qt${QT_MAJOR_VERSION}::Gui
6573
Qt${QT_MAJOR_VERSION}::Widgets
6674
Qt${QT_MAJOR_VERSION}::DBus
75+
Qt${QT_MAJOR_VERSION}::Quick
6776
)
6877

6978
if( DARKLY_HAVE_QTQUICK )
7079
target_link_libraries(darkly${QT_MAJOR_VERSION}
71-
Qt${QT_MAJOR_VERSION}::Quick
72-
KF${QT_MAJOR_VERSION}::CoreAddons
80+
PRIVATE
81+
Qt${QT_MAJOR_VERSION}::QuickWidgets
82+
KF${QT_MAJOR_VERSION}::CoreAddons
7383
)
7484
endif()
7585

86+
################# link KDE Frameworks #################
7687
target_link_libraries(darkly${QT_MAJOR_VERSION}
88+
PRIVATE
7789
KF${QT_MAJOR_VERSION}::CoreAddons
7890
KF${QT_MAJOR_VERSION}::ConfigCore
7991
KF${QT_MAJOR_VERSION}::ConfigGui
@@ -83,29 +95,29 @@ target_link_libraries(darkly${QT_MAJOR_VERSION}
8395
)
8496

8597
if(QT_MAJOR_VERSION STREQUAL "5")
86-
target_link_libraries(darkly5 KF5::ConfigWidgets)
87-
if (DARKLY_HAVE_QTQUICK)
88-
target_link_libraries(darkly5 KF5::Kirigami2)
98+
target_link_libraries(darkly${QT_MAJOR_VERSION} PRIVATE KF5::ConfigWidgets)
99+
if(DARKLY_HAVE_QTQUICK)
100+
target_link_libraries(darkly${QT_MAJOR_VERSION} PRIVATE KF5::Kirigami2)
89101
endif()
90102
else()
91-
target_link_libraries(darkly6 KF6::ColorScheme)
92-
if (DARKLY_HAVE_QTQUICK)
93-
target_link_libraries(darkly6 KF6::KirigamiPlatform)
103+
target_link_libraries(darkly${QT_MAJOR_VERSION} PRIVATE KF6::ColorScheme)
104+
if(DARKLY_HAVE_QTQUICK)
105+
target_link_libraries(darkly${QT_MAJOR_VERSION} PRIVATE KF6::KirigamiPlatform)
94106
endif()
95107
endif()
96108

109+
################# link internal library #################
110+
target_link_libraries(darkly${QT_MAJOR_VERSION} PRIVATE darklycommon${QT_MAJOR_VERSION})
97111

98-
target_link_libraries(darkly${QT_MAJOR_VERSION} darklycommon${QT_MAJOR_VERSION})
99-
112+
################# KDE style integration #################
100113
if(KF${QT_MAJOR_VERSION}FrameworkIntegration_FOUND)
101-
target_link_libraries(darkly${QT_MAJOR_VERSION} KF${QT_MAJOR_VERSION}::Style)
114+
target_link_libraries(darkly${QT_MAJOR_VERSION} PRIVATE KF${QT_MAJOR_VERSION}::Style)
102115
endif()
103116

104-
105117
if (WIN32)
106118
# As stated in https://docs.microsoft.com/en-us/cpp/c-runtime-library/math-constants M_PI only gets defined
107119
# when if _USE_MATH_DEFINES is defined
108-
target_compile_definitions(darkly PRIVATE _USE_MATH_DEFINES _BSD_SOURCE)
120+
target_compile_definitions(darkly${QT_MAJOR_VERSION} PRIVATE _USE_MATH_DEFINES _BSD_SOURCE)
109121
endif()
110122

111123

kstyle/darklystyle.cpp

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
#include <QTreeView>
7171
#include <QWidgetAction>
7272
#include <QWindow>
73+
#include <QQuickWidget>
7374

7475
#if DARKLY_HAVE_QTQUICK
7576
#include <QQuickWindow>
@@ -323,6 +324,12 @@ class RoundedOuterOutlineOverlay : public QWidget {
323324
path.addRoundedRect(innerRect, m_radius, m_radius);
324325
path.setFillRule(Qt::OddEvenFill);
325326

327+
if (outlineColor.alpha() < 255)
328+
{
329+
painter.setCompositionMode(QPainter::CompositionMode_Clear);
330+
painter.drawPath(path);
331+
}
332+
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
326333
painter.drawPath(path);
327334
}
328335

@@ -493,12 +500,36 @@ void Style::polish(QWidget *widget)
493500
}
494501

495502
// hack Dolphin's view
496-
if (_isDolphin && qobject_cast<QAbstractScrollArea *>(getParent(widget, 2))
497-
&& !qobject_cast<QAbstractScrollArea *>(getParent(widget, 3))) {
503+
if ((_isDolphin && qobject_cast<QAbstractScrollArea *>(getParent(widget, 2))
504+
&& !qobject_cast<QAbstractScrollArea *>(getParent(widget, 3))))
505+
{
498506
if (widget->autoFillBackground())
499507
widget->setAutoFillBackground(false);
500508
}
501509

510+
if (widget->inherits("QQuickWidget")) {
511+
// Check if it is a child of FocusHackWidget
512+
QWidget* parent = widget->parentWidget();
513+
bool isChildOfFocusHack = false;
514+
while (parent) {
515+
if (parent->inherits("FocusHackWidget")) {
516+
isChildOfFocusHack = true;
517+
break;
518+
}
519+
parent = parent->parentWidget();
520+
}
521+
522+
if (isChildOfFocusHack) {
523+
auto quickWidget = qobject_cast<QQuickWidget*>(widget);
524+
if (quickWidget) {
525+
quickWidget->setClearColor(Qt::transparent);
526+
}
527+
528+
widget->setAttribute(Qt::WA_TranslucentBackground);
529+
widget->setAttribute(Qt::WA_OpaquePaintEvent, false);
530+
}
531+
}
532+
502533
// scrollarea polishing is somewhat complex. It is moved to a dedicated method
503534
polishScrollArea(qobject_cast<QAbstractScrollArea *>(widget));
504535

0 commit comments

Comments
 (0)