summaryrefslogtreecommitdiffstats
path: root/kicker
diff options
context:
space:
mode:
authorPhilippe Mavridis <philippe.mavridis@yandex.com>2025-12-18 12:00:54 +0200
committerPhilippe Mavridis <philippe.mavridis@yandex.com>2025-12-18 12:00:54 +0200
commit5a959099b1dafcb82c2cb3f4c5088bb24166abe7 (patch)
tree24cbf0d9c6f5ed0fb3e96b978d8825558bd92537 /kicker
parentd62fa1e145dbd61f2619ad86bc0a5cc671edfca7 (diff)
downloadtdebase-feat/kicker-3d-border.tar.gz
tdebase-feat/kicker-3d-border.zip
Add 3D border optionfeat/kicker-3d-border
Kicker does not draw a border by default, resulting in a flat look. Only under specific conditions (e.g. a panel background) a little 1px border gets drawn above the panel to improve its visibility. This commit adds the option to manually enable a 3D border around the panel. This makes the panel better stand out from the background and fits better with classic styles. Signed-off-by: Philippe Mavridis <philippe.mavridis@yandex.com>
Diffstat (limited to 'kicker')
-rw-r--r--kicker/kicker/core/container_extension.cpp57
-rw-r--r--kicker/libkicker/kickerSettings.kcfg6
2 files changed, 49 insertions, 14 deletions
diff --git a/kicker/kicker/core/container_extension.cpp b/kicker/kicker/core/container_extension.cpp
index a58b006ee..a70acfab7 100644
--- a/kicker/kicker/core/container_extension.cpp
+++ b/kicker/kicker/core/container_extension.cpp
@@ -233,9 +233,13 @@ TQSize ExtensionContainer::sizeHint(KPanelExtension::Position p, const TQSize &m
int height = 0;
if (p == KPanelExtension::Top || p == KPanelExtension::Bottom)
{
- if (needsBorder())
+ if (KickerSettings::showPanelBorder())
+ {
+ height += 2;
+ }
+ else if (needsBorder())
{
- height += 1; // border
+ height += 1;
}
if (KickerSettings::useResizeHandle())
@@ -258,9 +262,13 @@ TQSize ExtensionContainer::sizeHint(KPanelExtension::Position p, const TQSize &m
}
else
{
- if (needsBorder())
+ if (KickerSettings::showPanelBorder())
+ {
+ width += 2;
+ }
+ else if (needsBorder())
{
- width += 1; // border
+ width += 1;
}
if (KickerSettings::useResizeHandle())
@@ -1212,9 +1220,13 @@ int ExtensionContainer::arrangeHideButtons()
{
int maxWidth = width();
+ if (KickerSettings::showPanelBorder())
+ {
+ maxWidth -= 2;
+ }
if (needsBorder())
{
- --maxWidth;
+ maxWidth -= 1;
}
if (KickerSettings::useResizeHandle())
@@ -1242,9 +1254,13 @@ int ExtensionContainer::arrangeHideButtons()
{
int maxHeight = height();
- if (needsBorder())
+ if (KickerSettings::showPanelBorder())
+ {
+ maxHeight -= 2;
+ }
+ else if (needsBorder())
{
- --maxHeight;
+ maxHeight -= 1;
}
if (KickerSettings::useResizeHandle())
@@ -1302,12 +1318,12 @@ int ExtensionContainer::setupBorderSpace()
_layout->setColSpacing(0, 0);
_layout->setColSpacing(2, 0);
- if (!needsBorder() && !KickerSettings::useResizeHandle())
+ if (!(KickerSettings::showPanelBorder() || needsBorder()) && !KickerSettings::useResizeHandle())
{
return 0;
}
- int borderWidth = 1;
+ int borderWidth = KickerSettings::showPanelBorder() ? 2 : 1;
if (KickerSettings::useResizeHandle())
borderWidth = PANEL_RESIZE_HANDLE_WIDTH + PANEL_BOTTOM_SPACING_W_RESIZE_HANDLE;
@@ -1396,7 +1412,12 @@ void ExtensionContainer::paintEvent(TQPaintEvent *e)
{
TQFrame::paintEvent(e);
- if (needsBorder())
+ if (KickerSettings::showPanelBorder())
+ {
+ TQPainter p(this);
+ style().drawPrimitive(TQStyle::PE_Panel, &p, rect(), colorGroup());
+ }
+ else if (needsBorder())
{
// draw border
TQPainter p(this);
@@ -1547,7 +1568,7 @@ void ExtensionContainer::arrange(KPanelExtension::Position p,
{
m_settings.setPosition(p);
}
- else if (!needsBorder() && !KickerSettings::useResizeHandle())
+ else if (!(KickerSettings::showPanelBorder() || needsBorder()) && !KickerSettings::useResizeHandle())
{
// this ensures that the layout gets rejigged
// even if position doesn't change
@@ -1570,7 +1591,7 @@ void ExtensionContainer::arrange(KPanelExtension::Position p,
}
actuallyUpdateLayout();
-
+
if (positionChanged)
{
positionChange(p);
@@ -1727,7 +1748,11 @@ void ExtensionContainer::resetLayout()
m_extension->setMaximumWidth(maxWidth);
- if (needsBorder())
+ if (KickerSettings::showPanelBorder())
+ {
+ m_extension->setFixedHeight(height() - 2);
+ }
+ else if (needsBorder())
{
m_extension->setFixedHeight(height() - 1);
}
@@ -1757,7 +1782,11 @@ void ExtensionContainer::resetLayout()
m_extension->setMaximumHeight(maxHeight);
- if (needsBorder())
+ if (KickerSettings::showPanelBorder())
+ {
+ m_extension->setFixedWidth(width() - 2);
+ }
+ else if (needsBorder())
{
m_extension->setFixedWidth(width() - 1);
}
diff --git a/kicker/libkicker/kickerSettings.kcfg b/kicker/libkicker/kickerSettings.kcfg
index 9c38534c5..0ecde36b2 100644
--- a/kicker/libkicker/kickerSettings.kcfg
+++ b/kicker/libkicker/kickerSettings.kcfg
@@ -37,6 +37,12 @@
<default>false</default>
</entry>
+<entry name="ShowPanelBorder" type="Bool" >
+ <label>Show panel border</label>
+ <whatsthis>Draw 3D border around panel</whatsthis>
+ <default>false</default>
+</entry>
+
<entry name="MenubarPanelTransparent" type="Bool" >
<label>Enable transparency for menubar panel</label>
<whatsthis>When this option is enabled, the panel containing the menubar will become pseudo-transparent as well</whatsthis>