diff options
| author | Philippe Mavridis <philippe.mavridis@yandex.com> | 2025-12-18 12:00:54 +0200 |
|---|---|---|
| committer | Philippe Mavridis <philippe.mavridis@yandex.com> | 2025-12-18 12:00:54 +0200 |
| commit | 5a959099b1dafcb82c2cb3f4c5088bb24166abe7 (patch) | |
| tree | 24cbf0d9c6f5ed0fb3e96b978d8825558bd92537 /kicker | |
| parent | d62fa1e145dbd61f2619ad86bc0a5cc671edfca7 (diff) | |
| download | tdebase-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.cpp | 57 | ||||
| -rw-r--r-- | kicker/libkicker/kickerSettings.kcfg | 6 |
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> |
