summaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--kcontrol/kicker/advancedDialog.cpp8
-rw-r--r--kcontrol/kicker/advancedOptions.ui13
-rw-r--r--kicker/kicker/core/container_extension.cpp57
-rw-r--r--kicker/libkicker/kickerSettings.kcfg6
4 files changed, 69 insertions, 15 deletions
diff --git a/kcontrol/kicker/advancedDialog.cpp b/kcontrol/kicker/advancedDialog.cpp
index e9ed08b0a..ef163ae28 100644
--- a/kcontrol/kicker/advancedDialog.cpp
+++ b/kcontrol/kicker/advancedDialog.cpp
@@ -69,6 +69,8 @@ advancedDialog::advancedDialog(TQWidget* parent, const char* name)
this, TQ_SLOT(changed()));
connect(m_advancedWidget->kickerDeepButtons, TQ_SIGNAL(clicked()),
this, TQ_SLOT(changed()));
+ connect(m_advancedWidget->kickerBorder, TQ_SIGNAL(clicked()),
+ this, TQ_SLOT(changed()));
load();
}
@@ -117,6 +119,8 @@ void advancedDialog::load()
m_advancedWidget->kickerResizeHandle->setChecked( useKickerResizeHandle );
bool usekickerDeepButtons = c.readBoolEntry("ShowDeepButtons", false);
m_advancedWidget->kickerDeepButtons->setChecked( usekickerDeepButtons );
+ bool usekickerBorder = c.readBoolEntry("ShowPanelBorder", false);
+ m_advancedWidget->kickerBorder->setChecked( usekickerBorder );
enableButtonApply(false);
}
@@ -144,6 +148,8 @@ void advancedDialog::save()
m_advancedWidget->kickerResizeHandle->isChecked());
c.writeEntry("ShowDeepButtons",
m_advancedWidget->kickerDeepButtons->isChecked());
+ c.writeEntry("ShowPanelBorder",
+ m_advancedWidget->kickerBorder->isChecked());
TQStringList elist = c.readListEntry("Extensions2");
for (TQStringList::Iterator it = elist.begin(); it != elist.end(); ++it)
@@ -180,6 +186,8 @@ void advancedDialog::save()
m_advancedWidget->kickerResizeHandle->isChecked());
extConfig.writeEntry("ShowDeepButtons",
m_advancedWidget->kickerDeepButtons->isChecked());
+ extConfig.writeEntry("ShowPanelBorder",
+ m_advancedWidget->kickerBorder->isChecked());
extConfig.sync();
}
diff --git a/kcontrol/kicker/advancedOptions.ui b/kcontrol/kicker/advancedOptions.ui
index 0e65401db..ddedd1eaa 100644
--- a/kcontrol/kicker/advancedOptions.ui
+++ b/kcontrol/kicker/advancedOptions.ui
@@ -495,7 +495,18 @@
<string>Enabling this option will show a resize handle on the resizable end of each panel.</string>
</property>
</widget>
- <widget class="TQCheckBox" row="0" column="1">
+ <widget class="TQCheckBox" row="1" column="0">
+ <property name="name">
+ <cstring>kickerBorder</cstring>
+ </property>
+ <property name="text">
+ <string>Show panel border</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Enabling this option will draw a 3D border around the panel. Use this for a more classic look.</string>
+ </property>
+ </widget>
+ <widget class="TQCheckBox" row="2" column="0">
<property name="name">
<cstring>kickerDeepButtons</cstring>
</property>
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>