View Issue Details

IDProjectCategoryView StatusLast Update
0017835ScribusUser Interfacepublic2026-06-12 00:22
Reporterqirat Assigned Tonitramr  
PrioritylowSeverityminorReproducibilityhave not tried
Status assignedResolutionopen 
PlatformLinuxOSFedora WorkstationOS Version44
Product Version1.7.4.svn 
Target Version1.7 milestone 
Summary0017835: Table Style editor UI suggestions (minor)
Description1. Should it be "Custom"--a better description (instead of "Other...")?
2. And, should "Custom" be at the bottom (after 100%)
3. Also, should "Use Parent Value" be the first option?
4. Should the section be called "Colour" (instead of "Colours")?
TagsNo tags attached.
Attached Files
table_style_shade_setting.png (80,078 bytes)   
table_style_shade_setting.png (80,078 bytes)   
PatchNo

Activities

qirat

2026-06-06 14:01

reporter   ~0053779

5. [TYPO] Number of Total Rows (instead of "Totals")

nitramr

2026-06-06 19:39

developer   ~0053780

We will redesign the dialog after all features are implemented.
It could look like this:
TableStyle.png (49,555 bytes)   
TableStyle.png (49,555 bytes)   

qirat

2026-06-07 00:45

reporter   ~0053785

That is really cool. Please carry on. :)

cbradney

2026-06-07 19:10

administrator   ~0053793

Number of Totals Rows makes sense... the rest of the other suggestions are not related to tables specifically though. Waiting to receive the updates from @nitramr for the UI layout.

nitramr

2026-06-08 18:55

developer   ~0053797

@cbradney Done. The reset buttons for paragraph styles and borders haven't been implemented yet; further changes are required for that.
table_style.png (98,336 bytes)   
table_style.png (98,336 bytes)   
tablestyleui_2026-06-08_01.diff (85,334 bytes)   
diff --git a/resources/iconsets/1_7_0/16/table-area.svg b/resources/iconsets/1_7_0/16/table-area.svg
new file mode 100644
index 000000000..387356a8d
--- /dev/null
+++ b/resources/iconsets/1_7_0/16/table-area.svg
@@ -0,0 +1,4 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><style>@import '../colors.css';</style>
+<rect x="6" y="6" width="9" height="7" fill-opacity="0.4"/>
+<path d="M16 14H0V1H16V14ZM1 13H5V10H1V13ZM6 13H10V10H6V13ZM11 13H15V10H11V13ZM1 9H5V6H1V9ZM6 9H10V6H6V9ZM11 9H15V6H11V9ZM1 2V5H5V2H1ZM6 5H10V2H6V5ZM11 5H15V2H11V5Z"/>
+</svg>
diff --git a/resources/iconsets/1_7_0/1_7_0.xml b/resources/iconsets/1_7_0/1_7_0.xml
index 310a06f17..6880d7635 100644
--- a/resources/iconsets/1_7_0/1_7_0.xml
+++ b/resources/iconsets/1_7_0/1_7_0.xml
@@ -478,6 +478,7 @@ On Dark:  #e580ff; rgb(229, 128, 255); hsl(288, 100, 75)
 		<icon id="insert-table-rows" file="16/table-row-insert.svg" />		
 		<icon id="merge-table-cells" file="16/table-merge-cells.svg" />
 		<icon id="split-table-cells" file="16/table-split-cell.svg" />
+		<icon id="table-area" file="16/table-area.svg" />
 		<icon id="table-cell-style" file="16/table-cell-style.svg" />
 		<icon id="table-style" file="16/table-style.svg" />
 		
diff --git a/scribus/ui/colorpicker/colorpicker.cpp b/scribus/ui/colorpicker/colorpicker.cpp
index b093ef131..dd80efcfa 100644
--- a/scribus/ui/colorpicker/colorpicker.cpp
+++ b/scribus/ui/colorpicker/colorpicker.cpp
@@ -304,6 +304,8 @@ void ColorPicker::setContext(Context config)
 	case Context::Text:
 	case Context::TextBackground:
 	case Context::TextOutline:
+	case Context::TableCellFill:
+	case Context::TableCellStroke:
 		buttonSolid->setVisible(false);
 		buttonGradient->setVisible(false);
 		buttonHatch->setVisible(false);
diff --git a/scribus/ui/colorpicker/colorpicker_color.cpp b/scribus/ui/colorpicker/colorpicker_color.cpp
index ac0907a1c..75715845b 100644
--- a/scribus/ui/colorpicker/colorpicker_color.cpp
+++ b/scribus/ui/colorpicker/colorpicker_color.cpp
@@ -88,24 +88,11 @@ void ColorPickerColor::setContext(Context config)
 	case Context::Text:
 	case Context::TextBackground:
 	case Context::TextOutline:
-		sectionSwatches->setVisible(true);
-		numberShade->setVisible(true);
-		labelShade->setVisible(true);
-		sliderShade->setVisible(true);
-		numberAlpha->setVisible(false);
-		labelAlpha->setVisible(false);
-		sliderAlpha->setVisible(false);
-		break;
+	case Context::TableCellFill:
+	case Context::TableCellStroke:
 	case Context::Fill:
-		sectionSwatches->setVisible(true);
-		numberShade->setVisible(true);
-		labelShade->setVisible(true);
-		sliderShade->setVisible(true);
-		numberAlpha->setVisible(false);
-		labelAlpha->setVisible(false);
-		sliderAlpha->setVisible(false);
-		break;
 	case Context::Line:
+	case Context::DropShadow:
 		sectionSwatches->setVisible(true);
 		numberShade->setVisible(true);
 		labelShade->setVisible(true);
@@ -125,15 +112,6 @@ void ColorPickerColor::setContext(Context config)
 		sliderAlpha->setVisible(true);
 		isMask = true;
 		break;
-	case Context::DropShadow:
-		sectionSwatches->setVisible(true);
-		numberShade->setVisible(true);
-		labelShade->setVisible(true);
-		sliderShade->setVisible(true);
-		numberAlpha->setVisible(false);
-		labelAlpha->setVisible(false);
-		sliderAlpha->setVisible(false);
-		break;
 	}
 
 	updateSize();
diff --git a/scribus/ui/smcellstyle.cpp b/scribus/ui/smcellstyle.cpp
index cca89255b..4d2be5dba 100644
--- a/scribus/ui/smcellstyle.cpp
+++ b/scribus/ui/smcellstyle.cpp
@@ -422,8 +422,8 @@ void SMCellStyle::setupConnections()
 {
 	if (!m_page)
 		return;
-	connect(m_page->fillColor, SIGNAL(currentTextChanged(QString)), this, SLOT(slotFillColor()));
-	connect(m_page->fillShade, SIGNAL(clicked()), this, SLOT(slotFillShade()));
+	connect(m_page->buttonFillColor->colorButton, SIGNAL(changed()), this, SLOT(slotFillColor()));
+	connect(m_page->buttonFillColor->parentButton, SIGNAL(clicked()), this, SLOT(slotFillColor()));
 	connect(m_page->parentCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(slotParentChanged(QString)));
 	connect(m_page->cellPaddingWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(slotCellPaddingChanged(MarginStruct)));
 	connect(m_page, SIGNAL(bordersChanged(TableSides, TableBorder)), this, SLOT(slotBordersChanged(TableSides, TableBorder)));
@@ -433,8 +433,8 @@ void SMCellStyle::removeConnections()
 {
 	if (!m_page)
 		return;
-	disconnect(m_page->fillColor, SIGNAL(currentTextChanged(QString)), this, SLOT(slotFillColor()));
-	disconnect(m_page->fillShade, SIGNAL(clicked()), this, SLOT(slotFillShade()));
+	disconnect(m_page->buttonFillColor->colorButton, SIGNAL(changed()), this, SLOT(slotFillColor()));
+	disconnect(m_page->buttonFillColor->parentButton, SIGNAL(clicked()), this, SLOT(slotFillColor()));
 	disconnect(m_page->parentCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(slotParentChanged(QString)));
 	disconnect(m_page->cellPaddingWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(slotCellPaddingChanged(MarginStruct)));
 	disconnect(m_page, SIGNAL(bordersChanged(TableSides, TableBorder)), this, SLOT(slotBordersChanged(TableSides, TableBorder)));
@@ -442,40 +442,21 @@ void SMCellStyle::removeConnections()
 
 void SMCellStyle::slotFillColor()
 {
-	if (m_page->fillColor->useParentValue())
-	{
-		for (int i = 0; i < m_selection.count(); ++i)
-			m_selection[i]->resetFillColor();
-	}
-	else
-	{
-		QString col(m_page->fillColor->currentText());
-		for (int i = 0; i < m_selection.count(); ++i)
-		{
-			m_selection[i]->setFillColor(col);
-		}
-	}
-	if (!m_selectionIsDirty)
-	{
-		m_selectionIsDirty = true;
-		emit selectionDirty();
-	}
-}
-
-void SMCellStyle::slotFillShade()
-{
-	if (m_page->fillShade->useParentValue())
+	if (m_page->buttonFillColor->useParentValue())
 	{
 		for (int i = 0; i < m_selection.count(); ++i)
 		{
+			m_selection[i]->resetFillColor();
 			m_selection[i]->resetFillShade();
 		}
 	}
 	else
 	{
-		int fs = m_page->fillShade->getValue();
+		QString col = m_page->buttonFillColor->colorButton->colorName();
+		int fs = m_page->buttonFillColor->colorButton->colorData().Shade;
 		for (int i = 0; i < m_selection.count(); ++i)
 		{
+			m_selection[i]->setFillColor(col);
 			m_selection[i]->setFillShade(fs);
 		}
 	}
diff --git a/scribus/ui/smcellstyle.h b/scribus/ui/smcellstyle.h
index 1e7637c94..006bd8bff 100644
--- a/scribus/ui/smcellstyle.h
+++ b/scribus/ui/smcellstyle.h
@@ -94,7 +94,6 @@ private:
 
 private slots:
 	void slotFillColor();
-	void slotFillShade();
 	void slotParentChanged(const QString &parent);
 	void slotCellPaddingChanged(const MarginStruct &padding);
 	void slotBordersChanged(TableSides sides, const TableBorder& border);
diff --git a/scribus/ui/smcellstylewidget.cpp b/scribus/ui/smcellstylewidget.cpp
index 6a2689a41..daf58c24c 100644
--- a/scribus/ui/smcellstylewidget.cpp
+++ b/scribus/ui/smcellstylewidget.cpp
@@ -21,10 +21,13 @@ SMCellStyleWidget::SMCellStyleWidget(QWidget *parent)
 {
 	setupUi(this);
 
-	fillColor->setPixmapType(ColorCombo::fancyPixmaps);
-	fillColor->addItem(CommonStrings::tr_NoneColor);
-	borderLineColor->setPixmapType(ColorCombo::fancyPixmaps);
-	borderLineColor->addItem(CommonStrings::tr_NoneColor);
+	buttonLineColor->colorButton->setContext(Context::TableCellStroke);
+	buttonLineColor->setColor(CommonStrings::tr_NoneColor);
+	buttonLineColor->setText(tr("Color"));
+
+	buttonFillColor->colorButton->setContext(Context::TableCellFill);
+	buttonFillColor->setColor(CommonStrings::tr_NoneColor);
+	buttonFillColor->setText(tr("Color"));
 
 	sideSelector->setInnerActive(false);
 	sideSelector->setStyle(TableSideSelector::CellStyle);
@@ -36,6 +39,7 @@ SMCellStyleWidget::SMCellStyleWidget(QWidget *parent)
 	iconSetChange();
 
 	connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
+	connect(buttonLineColor->colorButton, &ColorButton::changed, this, &SMCellStyleWidget::borderLineColorChanged);
 }
 
 void SMCellStyleWidget::changeEvent(QEvent *e)
@@ -49,8 +53,8 @@ void SMCellStyleWidget::changeEvent(QEvent *e)
 void SMCellStyleWidget::iconSetChange()
 {
 	IconManager& iconManager = IconManager::instance();
-	fillColorIcon->setPixmap(iconManager.loadPixmap("color-fill"));
-	fillShadeLabel->setPixmap(iconManager.loadPixmap("shade") );
+	buttonFillColor->setPixmap(iconManager.loadPixmap("color-fill"));
+	buttonLineColor->setPixmap(iconManager.loadPixmap("color-stroke"));
 	addBorderLineButton->setIcon(iconManager.loadIcon("stroke-add"));
 	removeBorderLineButton->setIcon(iconManager.loadIcon("stroke-remove"));
 }
@@ -59,18 +63,14 @@ void SMCellStyleWidget::languageChange()
 {
 	retranslateUi(this);
 
-	if (fillColor->count() > 0)
-	{
-		bool fillColorBlocked = fillColor->blockSignals(true);
-		fillColor->setItemText(0, CommonStrings::tr_NoneColor);
-		fillColor->blockSignals(fillColorBlocked);
-	}
-	if (borderLineColor->count() > 0)
-	{
-		bool borderColorBlocked = borderLineColor->blockSignals(true);
-		borderLineColor->setItemText(0, CommonStrings::tr_NoneColor);
-		borderLineColor->blockSignals(borderColorBlocked);
-	}
+	buttonLineColor->colorButton->setPersistentToolTip( tr("Border color of table cell"));
+	buttonLineColor->setText(tr("Color"));
+
+	buttonFillColor->colorButton->setPersistentToolTip( tr("Fill color of table cell"));
+	buttonFillColor->setText(tr("Color"));
+
+	borderLineStyleLabel->setText(tr("Type"));
+	borderLineWidthLabel->setText(tr("Width"));
 }
 
 void SMCellStyleWidget::updateBorderLineList()
@@ -99,9 +99,9 @@ void SMCellStyleWidget::updateBorderLineListItem()
 		return;
 
 	QString text = QString(" %1%2 %3").arg(borderLineWidth->getValue()).arg(borderLineWidth->suffix(), CommonStrings::translatePenStyleName(static_cast<Qt::PenStyle>(borderLineStyle->currentIndex() + 1)));
-	if (borderLineColor->currentColor() != CommonStrings::None)
+	if (buttonLineColor->colorButton->colorName() != CommonStrings::None)
 	{
-		QPixmap icon = getWidePixmap(getColor(borderLineColor->currentColor(), borderLineShade->value()));
+		QPixmap icon = getWidePixmap(getColor(buttonLineColor->colorButton->colorName(), buttonLineColor->colorButton->colorData().Shade));
 		item->setIcon(icon);
 	}
 	item->setText(text);
@@ -131,8 +131,6 @@ void SMCellStyleWidget::handleUpdateRequest(int updateFlags)
 {
 	if (!m_Doc)
 		return;
-	if (updateFlags & reqColorsUpdate)
-		fillFillColorCombo(m_Doc->PageColors);
 }
 
 void SMCellStyleWidget::setDoc(ScribusDoc* doc)
@@ -148,7 +146,9 @@ void SMCellStyleWidget::setDoc(ScribusDoc* doc)
 	m_unitIndex = m_Doc->unitIndex();
 	cellPaddingWidget->setNewUnit(m_unitIndex);
 
-	fillFillColorCombo(m_Doc->PageColors);
+	buttonLineColor->colorButton->setDoc(m_Doc);
+	buttonFillColor->colorButton->setDoc(m_Doc);
+
 	connect(m_Doc->scMW(), SIGNAL(UpdateRequest(int)), this , SLOT(handleUpdateRequest(int)));
 }
 
@@ -163,17 +163,9 @@ void SMCellStyleWidget::show(CellStyle *cellStyle, QList<CellStyle> &cellStyles,
 	const CellStyle *parent = dynamic_cast<const CellStyle*>(cellStyle->parentStyle());
 	bool hasParent =  cellStyle->hasParent() && parent != nullptr && parent->hasName() && cellStyle->parent() != "";
 	if (hasParent)
-	{
-		fillColor->setCurrentText(cellStyle->fillColor(), cellStyle->isInhFillColor());
-		fillColor->setParentText(parent->fillColor());
-		fillShade->setValue(qRound(cellStyle->fillShade()), cellStyle->isInhFillShade());
-		fillShade->setParentValue(qRound(parent->fillShade()));
-	}
+		buttonFillColor->setColor(cellStyle->fillColor(), qRound(cellStyle->fillShade()), parent->fillColor(), qRound(parent->fillShade()), cellStyle->isInhFillColor() && cellStyle->isInhFillShade());
 	else
-	{
-		fillColor->setCurrentText(cellStyle->fillColor());
-		fillShade->setValue(qRound(cellStyle->fillShade()));
-	}
+		buttonFillColor->setColor(cellStyle->fillColor(), qRound(cellStyle->fillShade()));
 
 	setBorders(cellStyle->leftBorder(), cellStyle->rightBorder(), cellStyle->topBorder(), cellStyle->bottomBorder());
 
@@ -234,10 +226,6 @@ void SMCellStyleWidget::showColors(const QList<CellStyle*> &cellStyles)
 		}
 		d = cellStyles[i]->fillShade();
 	}
-	if (d == -30000)
-		fillShade->setText( tr("Shade"));
-	else
-		fillShade->setValue(qRound(d));
 	QString s;
 	for (int i = 0; i < cellStyles.count(); ++i)
 	{
@@ -248,14 +236,8 @@ void SMCellStyleWidget::showColors(const QList<CellStyle*> &cellStyles)
 		}
 		s = cellStyles[i]->fillColor();
 	}
-	if (s.isEmpty())
-	{
-		if (fillColor->itemText(fillColor->count() - 1) != "")
-			fillColor->addItem("");
-		fillColor->setCurrentIndex(fillColor->count() - 1);
-	}
-	else
-		fillColor->setCurrentText(s);
+
+	buttonFillColor->setColor(s, qRound(d));
 }
 
 void SMCellStyleWidget::setBorders(const TableBorder& left, const TableBorder& right,
@@ -268,15 +250,6 @@ void SMCellStyleWidget::setBorders(const TableBorder& left, const TableBorder& r
 	on_sideSelector_selectionChanged();
 }
 
-void SMCellStyleWidget::fillFillColorCombo(const ColorList &colors)
-{
-	fillColor->clear();
-	fillColor->setColors(colors, true);
-	borderLineColor->clear();
-	borderLineColor->setColors(colors, true);
-}
-
-
 void SMCellStyleWidget::on_sideSelector_selectionChanged()
 {
 	TableSides newSelection = sideSelector->selection();
@@ -353,12 +326,9 @@ void SMCellStyleWidget::on_borderLineList_currentRowChanged(int row)
 	{
 		borderLineWidth->setEnabled(false);
 		borderLineWidthLabel->setEnabled(false);
-		borderLineColor->setEnabled(false);
-		borderLineColorLabel->setEnabled(false);
+		buttonLineColor->setEnabled(false);
 		borderLineStyle->setEnabled(false);
 		borderLineStyleLabel->setEnabled(false);
-		borderLineShade->setEnabled(false);
-		borderLineShadeLabel->setEnabled(false);
 		return;
 	}
 
@@ -369,17 +339,13 @@ void SMCellStyleWidget::on_borderLineList_currentRowChanged(int row)
 
 	borderLineWidth->setEnabled(true);
 	borderLineWidthLabel->setEnabled(true);
-	borderLineColor->setEnabled(true);
-	borderLineColorLabel->setEnabled(true);
+	buttonLineColor->setEnabled(true);
 	borderLineStyle->setEnabled(true);
 	borderLineStyleLabel->setEnabled(true);
-	borderLineShade->setEnabled(true);
-	borderLineShadeLabel->setEnabled(true);
 
 	borderLineWidth->showValue(line.width());
-	setCurrentComboItem(borderLineColor, line.color());
+	buttonLineColor->setColor(line.color(), line.shade());
 	borderLineStyle->setCurrentIndex(static_cast<int>(line.style()) - 1);
-	borderLineShade->setValue(line.shade());
 }
 
 void SMCellStyleWidget::on_addBorderLineButton_clicked()
@@ -414,29 +380,17 @@ void SMCellStyleWidget::on_borderLineWidth_valueChanged(double width)
 	emit bordersChanged(sideSelector->selection(), m_currentBorder);
 }
 
-void SMCellStyleWidget::on_borderLineShade_valueChanged(double shade)
-{
-	int index = borderLineList->currentRow();
-	if (index < 0)
-		return;
-	TableBorderLine line = m_currentBorder.borderLines().at(index);
-	line.setShade(shade);
-	m_currentBorder.replaceBorderLine(index, line);
-	mirrorCurrentBorderToSelectedSides();
-	updateBorderLineListItem();
-	emit bordersChanged(sideSelector->selection(), m_currentBorder);
-}
-
-void SMCellStyleWidget::on_borderLineColor_textActivated(const QString& colorName)
+void SMCellStyleWidget::borderLineColorChanged()
 {
 	int index = borderLineList->currentRow();
 	if (index < 0)
 		return;
 	TableBorderLine line = m_currentBorder.borderLines().at(index);
-	QString color = colorName;
-	if (colorName == CommonStrings::tr_NoneColor)
+	QString color = buttonLineColor->colorButton->colorName();
+	if (color == CommonStrings::tr_NoneColor)
 		color = CommonStrings::None;
 	line.setColor(color);
+	line.setShade(buttonLineColor->colorButton->colorData().Shade);
 	m_currentBorder.replaceBorderLine(index, line);
 	mirrorCurrentBorderToSelectedSides();
 	updateBorderLineListItem();
diff --git a/scribus/ui/smcellstylewidget.h b/scribus/ui/smcellstylewidget.h
index 1944ceb92..a723a002c 100644
--- a/scribus/ui/smcellstylewidget.h
+++ b/scribus/ui/smcellstylewidget.h
@@ -60,13 +60,6 @@ class SMCellStyleWidget : public QWidget, public Ui::SMCellStyleWidget
 		 * This function is called when the language is changed.
 		 */
 		void languageChange();
-
-		/**
-		 * Populates the fill color combo with the given color list.
-		 *
-		 * @param colors list of colors to populate the combo with.
-		 */
-		void fillFillColorCombo(const ColorList &colors);
 		void showColors(const QList<CellStyle*> &cellStyles);
 		void setBorders(const TableBorder& left, const TableBorder& right, const TableBorder& top, const TableBorder& bottom);
 
@@ -107,8 +100,7 @@ class SMCellStyleWidget : public QWidget, public Ui::SMCellStyleWidget
 		void on_addBorderLineButton_clicked();
 		void on_removeBorderLineButton_clicked();
 		void on_borderLineWidth_valueChanged(double width);
-		void on_borderLineShade_valueChanged(double shade);
-		void on_borderLineColor_textActivated(const QString& colorName);
+		void borderLineColorChanged();
 		void on_borderLineStyle_activated(int style);
 };
 
diff --git a/scribus/ui/smcellstylewidget.ui b/scribus/ui/smcellstylewidget.ui
index 94cb585ef..02ab68107 100644
--- a/scribus/ui/smcellstylewidget.ui
+++ b/scribus/ui/smcellstylewidget.ui
@@ -6,11 +6,26 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>364</width>
-    <height>418</height>
+    <width>485</width>
+    <height>392</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_3">
+   <property name="spacing">
+    <number>8</number>
+   </property>
+   <property name="leftMargin">
+    <number>8</number>
+   </property>
+   <property name="topMargin">
+    <number>8</number>
+   </property>
+   <property name="rightMargin">
+    <number>8</number>
+   </property>
+   <property name="bottomMargin">
+    <number>8</number>
+   </property>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
@@ -30,85 +45,57 @@
        </property>
       </widget>
      </item>
+     <item>
+      <spacer name="horizontalSpacer_4">
+       <property name="orientation">
+        <enum>Qt::Orientation::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
     </layout>
    </item>
    <item>
-    <widget class="QGroupBox" name="smColorGroup">
-     <property name="title">
-      <string>Colors</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout">
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout">
-        <item>
-         <widget class="QLabel" name="fillColorIcon">
-          <property name="minimumSize">
-           <size>
-            <width>0</width>
-            <height>0</height>
-           </size>
-          </property>
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-          <property name="buddy">
-           <cstring>fillColor</cstring>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="SMColorCombo" name="fillColor">
-          <property name="toolTip">
-           <string>Fill Color</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLabel" name="fillShadeLabel">
-          <property name="minimumSize">
-           <size>
-            <width>0</width>
-            <height>0</height>
-           </size>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="SMShadeButton" name="fillShade">
-          <property name="toolTip">
-           <string>Fill Shade</string>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
+    <layout class="QHBoxLayout" name="horizontalLayout_8">
+     <item>
+      <widget class="QGroupBox" name="smColorGroup">
+       <property name="title">
+        <string>Fill</string>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout">
         <item>
-         <spacer>
-          <property name="orientation">
-           <enum>Qt::Orientation::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
+         <layout class="QHBoxLayout" name="horizontalLayout">
+          <item>
+           <widget class="SMColorButton" name="buttonFillColor">
+            <property name="text">
+             <string/>
+            </property>
+           </widget>
+          </item>
+         </layout>
         </item>
        </layout>
-      </item>
-     </layout>
-    </widget>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Orientation::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
    </item>
    <item>
     <widget class="QGroupBox" name="bordersLayout">
@@ -117,19 +104,19 @@
      </property>
      <layout class="QVBoxLayout" name="verticalLayout_2">
       <property name="spacing">
-       <number>3</number>
+       <number>8</number>
       </property>
       <property name="leftMargin">
-       <number>6</number>
+       <number>8</number>
       </property>
       <property name="topMargin">
-       <number>6</number>
+       <number>8</number>
       </property>
       <property name="rightMargin">
-       <number>6</number>
+       <number>8</number>
       </property>
       <property name="bottomMargin">
-       <number>6</number>
+       <number>8</number>
       </property>
       <item>
        <layout class="QHBoxLayout" name="bordesLayout1">
@@ -177,7 +164,7 @@
             </property>
             <property name="sizeHint" stdset="0">
              <size>
-              <width>20</width>
+              <width>0</width>
               <height>40</height>
              </size>
             </property>
@@ -229,172 +216,124 @@
        </layout>
       </item>
       <item>
-       <layout class="QHBoxLayout" name="bordersLayout2" stretch="0,0">
+       <layout class="QHBoxLayout" name="horizontalLayout_5">
         <property name="spacing">
-         <number>3</number>
+         <number>4</number>
         </property>
         <item>
-         <layout class="QFormLayout" name="bordersLayout2_1">
-          <property name="fieldGrowthPolicy">
-           <enum>QFormLayout::FieldGrowthPolicy::ExpandingFieldsGrow</enum>
+         <widget class="SMColorButton" name="buttonLineColor">
+          <property name="enabled">
+           <bool>false</bool>
           </property>
-          <property name="horizontalSpacing">
-           <number>3</number>
+          <property name="text">
+           <string/>
           </property>
-          <property name="verticalSpacing">
-           <number>3</number>
+         </widget>
+        </item>
+        <item>
+         <widget class="FormWidget" name="borderLineWidthLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <item row="0" column="0">
-           <widget class="QLabel" name="borderLineWidthLabel">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="text">
-             <string>Width:</string>
-            </property>
-            <property name="buddy">
-             <cstring>borderLineWidth</cstring>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="0">
-           <widget class="QLabel" name="borderLineColorLabel">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="text">
-             <string>Color:</string>
-            </property>
-            <property name="buddy">
-             <cstring>borderLineColor</cstring>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="1">
-           <widget class="ColorCombo" name="borderLineColor">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="minimumSize">
-             <size>
-              <width>100</width>
-              <height>0</height>
-             </size>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="1">
-           <widget class="ScrSpinBox" name="borderLineWidth">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="minimumSize">
-             <size>
-              <width>100</width>
-              <height>0</height>
-             </size>
-            </property>
-           </widget>
-          </item>
-         </layout>
+          <property name="label" stdset="0">
+           <string>Width</string>
+          </property>
+          <layout class="QHBoxLayout" name="horizontalLayout_6">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="ScrSpinBox" name="borderLineWidth">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>100</width>
+               <height>0</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
         </item>
         <item>
-         <layout class="QFormLayout" name="bordersLayout2_2">
-          <property name="horizontalSpacing">
-           <number>3</number>
+         <widget class="FormWidget" name="borderLineStyleLabel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
           </property>
-          <property name="verticalSpacing">
-           <number>3</number>
+          <property name="label" stdset="0">
+           <string>Type</string>
           </property>
-          <item row="0" column="0">
-           <widget class="QLabel" name="borderLineStyleLabel">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="text">
-             <string>Type:</string>
-            </property>
-            <property name="buddy">
-             <cstring>borderLineStyle</cstring>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="1">
-           <widget class="LineCombo" name="borderLineStyle">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="minimumSize">
-             <size>
-              <width>100</width>
-              <height>0</height>
-             </size>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="0">
-           <widget class="QLabel" name="borderLineShadeLabel">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="text">
-             <string>Shade:</string>
-            </property>
-            <property name="buddy">
-             <cstring>borderLineShade</cstring>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="1">
-           <widget class="ScrSpinBox" name="borderLineShade">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="minimumSize">
-             <size>
-              <width>100</width>
-              <height>0</height>
-             </size>
-            </property>
-            <property name="suffix">
-             <string> %</string>
-            </property>
-            <property name="decimals">
-             <number>0</number>
-            </property>
-            <property name="maximum">
-             <double>100.000000000000000</double>
-            </property>
-            <property name="value">
-             <double>100.000000000000000</double>
-            </property>
-           </widget>
-          </item>
-         </layout>
+          <layout class="QHBoxLayout" name="horizontalLayout_7">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="LineCombo" name="borderLineStyle">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>100</width>
+               <height>0</height>
+              </size>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item>
+         <spacer name="horizontalSpacer_3">
+          <property name="orientation">
+           <enum>Qt::Orientation::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>0</width>
+            <height>0</height>
+           </size>
+          </property>
+         </spacer>
         </item>
        </layout>
       </item>
@@ -443,7 +382,7 @@
      </property>
      <property name="sizeHint" stdset="0">
       <size>
-       <width>20</width>
+       <width>0</width>
        <height>0</height>
       </size>
      </property>
@@ -452,6 +391,12 @@
   </layout>
  </widget>
  <customwidgets>
+  <customwidget>
+   <class>FormWidget</class>
+   <extends>QWidget</extends>
+   <header>ui/widgets/form_widget.h</header>
+   <container>1</container>
+  </customwidget>
   <customwidget>
    <class>ScrSpinBox</class>
    <extends>QDoubleSpinBox</extends>
@@ -469,9 +414,9 @@
    <container>1</container>
   </customwidget>
   <customwidget>
-   <class>ColorCombo</class>
-   <extends>QComboBox</extends>
-   <header>ui/colorcombo.h</header>
+   <class>SMColorButton</class>
+   <extends>QToolButton</extends>
+   <header>ui/smcolorbutton.h</header>
   </customwidget>
   <customwidget>
    <class>NewMarginWidget</class>
@@ -479,16 +424,6 @@
    <header>ui/newmarginwidget.h</header>
    <container>1</container>
   </customwidget>
-  <customwidget>
-   <class>SMColorCombo</class>
-   <extends>QComboBox</extends>
-   <header>ui/smcolorcombo.h</header>
-  </customwidget>
-  <customwidget>
-   <class>SMShadeButton</class>
-   <extends>QPushButton</extends>
-   <header>ui/smshadebutton.h</header>
-  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
diff --git a/scribus/ui/smtablestyle.cpp b/scribus/ui/smtablestyle.cpp
index ad6a30093..3d652229f 100644
--- a/scribus/ui/smtablestyle.cpp
+++ b/scribus/ui/smtablestyle.cpp
@@ -427,8 +427,8 @@ void SMTableStyle::setupConnections()
 {
 	if (!m_page)
 		return;
-	connect(m_page->fillColor, SIGNAL(currentTextChanged(QString)), this, SLOT(slotFillColor()));
-	connect(m_page->fillShade, SIGNAL(clicked()), this, SLOT(slotFillShade()));
+	connect(m_page->buttonFillColor->colorButton, SIGNAL(changed()), this, SLOT(slotFillColor()));
+	connect(m_page->buttonFillColor->parentButton, SIGNAL(clicked()), this, SLOT(slotFillColor()));
 	connect(m_page->parentCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(slotParentChanged(QString)));
 	connect(m_page, SIGNAL(bordersChanged(TableSides, TableBorder)), this, SLOT(slotBordersChanged(TableSides, TableBorder)));
 	connect(m_page->headerRowsSpinBox, SIGNAL(valueChanged(int)), this, SLOT(slotHeaderRows()));
@@ -447,8 +447,8 @@ void SMTableStyle::removeConnections()
 {
 	if (!m_page)
 		return;
-	disconnect(m_page->fillColor, SIGNAL(currentTextChanged(QString)), this, SLOT(slotFillColor()));
-	disconnect(m_page->fillShade, SIGNAL(clicked()), this, SLOT(slotFillShade()));
+	disconnect(m_page->buttonFillColor->colorButton, SIGNAL(changed()), this, SLOT(slotFillColor()));
+	disconnect(m_page->buttonFillColor->parentButton, SIGNAL(clicked()), this, SLOT(slotFillColor()));
 	disconnect(m_page->parentCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(slotParentChanged(QString)));
 	disconnect(m_page, SIGNAL(bordersChanged(TableSides, TableBorder)), this, SLOT(slotBordersChanged(TableSides, TableBorder)));
 	disconnect(m_page->headerRowsSpinBox, SIGNAL(valueChanged(int)), this, SLOT(slotHeaderRows()));
@@ -466,49 +466,36 @@ void SMTableStyle::removeConnections()
 void SMTableStyle::slotFillColor()
 {
 	TableArea area = m_page->currentArea();
-	QString col = m_page->fillColor->currentText();
+	QString col = m_page->buttonFillColor->colorButton->colorName();
+	int fs = m_page->buttonFillColor->colorButton->colorData().Shade;
 
 	for (int i = 0; i < m_selection.count(); ++i)
 	{
 		if (area == TableArea::WholeTable)
 		{
-			if (m_page->fillColor->useParentValue())
+			if (m_page->buttonFillColor->useParentValue())
+			{
 				m_selection[i]->resetFillColor();
+				m_selection[i]->resetFillShade();
+			}
 			else
+			{
 				m_selection[i]->setFillColor(col);
+				m_selection[i]->setFillShade(fs);
+			}
 		}
 		else
 		{
 			CellStyle cs = m_selection[i]->conditionalStyle(area);
 			cs.setFillColor(col);
-			m_selection[i]->setConditionalStyle(area, cs);
-		}
-	}
-	if (!m_selectionIsDirty)
-	{
-		m_selectionIsDirty = true;
-		emit selectionDirty();
-	}
-}
+			cs.setFillShade(fs);
 
-void SMTableStyle::slotFillShade()
-{
-	TableArea area = m_page->currentArea();
-	int fs = m_page->fillShade->getValue();
+			if (m_page->buttonFillColor->useParentValue())
+			{
+				cs.resetFillColor();
+				cs.resetFillShade();
+			}
 
-	for (int i = 0; i < m_selection.count(); ++i)
-	{
-		if (area == TableArea::WholeTable)
-		{
-			if (m_page->fillShade->useParentValue())
-				m_selection[i]->resetFillShade();
-			else
-				m_selection[i]->setFillShade(fs);
-		}
-		else
-		{
-			CellStyle cs = m_selection[i]->conditionalStyle(area);
-			cs.setFillShade(fs);
 			m_selection[i]->setConditionalStyle(area, cs);
 		}
 	}
diff --git a/scribus/ui/smtablestyle.h b/scribus/ui/smtablestyle.h
index 65dbd0fd8..daa6cd0d0 100644
--- a/scribus/ui/smtablestyle.h
+++ b/scribus/ui/smtablestyle.h
@@ -93,7 +93,6 @@ private:
 
 private slots:
 	void slotFillColor();
-	void slotFillShade();
 	void slotParentChanged(const QString &parent);
 	void slotBordersChanged(TableSides sides, const TableBorder& border);
 	void slotHeaderRows();
diff --git a/scribus/ui/smtablestylewidget.cpp b/scribus/ui/smtablestylewidget.cpp
index 7ac3763e6..36bb9f0cb 100644
--- a/scribus/ui/smtablestylewidget.cpp
+++ b/scribus/ui/smtablestylewidget.cpp
@@ -21,17 +21,21 @@ SMTableStyleWidget::SMTableStyleWidget(QWidget *parent)
 {
 	setupUi(this);
 
-	fillColor->setPixmapType(ColorCombo::fancyPixmaps);
-	fillColor->addItem(CommonStrings::tr_NoneColor);
-	borderLineColor->setPixmapType(ColorCombo::fancyPixmaps);
-	borderLineColor->addItem(CommonStrings::tr_NoneColor);
-
 	sideSelector->setInnerActive(false);
 	sideSelector->setStyle(TableSideSelector::TableStyle);
 
+	buttonLineColor->colorButton->setContext(Context::TableCellStroke);
+	buttonLineColor->setColor(CommonStrings::tr_NoneColor);
+	buttonLineColor->setText(tr("Color"));
+
+	buttonFillColor->colorButton->setContext(Context::TableCellFill);
+	buttonFillColor->setColor(CommonStrings::tr_NoneColor);
+	buttonFillColor->setText(tr("Color"));
+
 	iconSetChange();
 
 	connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
+	connect(buttonLineColor->colorButton, &ColorButton::changed, this, &SMTableStyleWidget::borderLineColorChanged);
 }
 
 void SMTableStyleWidget::changeEvent(QEvent *e)
@@ -45,19 +49,20 @@ void SMTableStyleWidget::changeEvent(QEvent *e)
 void SMTableStyleWidget::iconSetChange()
 {
 	IconManager& iconManager = IconManager::instance();
-	fillColorIcon->setPixmap(iconManager.loadPixmap("color-fill"));
-	fillShadeLabel->setPixmap(iconManager.loadPixmap("shade") );
 	addBorderLineButton->setIcon(iconManager.loadIcon("stroke-add"));
 	removeBorderLineButton->setIcon(iconManager.loadIcon("stroke-remove"));
 	cellStyleClearButton->setIcon(iconManager.loadIcon("reset"));
+	buttonFillColor->setPixmap(iconManager.loadPixmap("color-fill"));
+	buttonLineColor->setPixmap(iconManager.loadPixmap("color-stroke"));
+	labelCellStyle->setPixmap(iconManager.loadPixmap("table-cell-style"));
+	labelParagraphStyle->setPixmap(iconManager.loadPixmap("paragraph-style"));
+	editingAreaLabel->setPixmap(iconManager.loadPixmap("table-area"));
 }
 
 void SMTableStyleWidget::handleUpdateRequest(int updateFlags)
 {
 	if (!m_Doc)
 		return;
-	if (updateFlags & reqColorsUpdate)
-		fillFillColorCombo(m_Doc->PageColors);
 	if (updateFlags & reqTextStylesUpdate)
 	{
 		paragraphStyleComboBox->updateStyleList();
@@ -74,7 +79,8 @@ void SMTableStyleWidget::setDoc(ScribusDoc* doc)
 	if (!m_Doc)
 		return;
 
-	fillFillColorCombo(m_Doc->PageColors);
+	buttonLineColor->colorButton->setDoc(m_Doc);
+	buttonFillColor->colorButton->setDoc(m_Doc);
 	paragraphStyleComboBox->setDoc(m_Doc);
 	basedOnComboBox->setDoc(m_Doc);
 	connect(m_Doc->scMW(), SIGNAL(UpdateRequest(int)), this , SLOT(handleUpdateRequest(int)));
@@ -119,7 +125,9 @@ void SMTableStyleWidget::show(TableStyle *tableStyle, QList<TableStyle> &tableSt
 	}
 
 	if (tableStyle->isDefaultStyle() || !hasParent)
+	{
 		parentCombo->setCurrentIndex(0);
+	}
 	else if (hasParent)
 	{
 		int index = parentCombo->findText(tableStyle->parentStyle()->name());
@@ -152,10 +160,6 @@ void SMTableStyleWidget::showColors(const QList<TableStyle*> &tableStyles)
 		}
 		d = tableStyles[i]->fillShade();
 	}
-	if (d == -30000)
-		fillShade->setText( tr("Shade"));
-	else
-		fillShade->setValue(qRound(d));
 	QString s;
 	for (int i = 0; i < tableStyles.count(); ++i)
 	{
@@ -166,26 +170,22 @@ void SMTableStyleWidget::showColors(const QList<TableStyle*> &tableStyles)
 		}
 		s = tableStyles[i]->fillColor();
 	}
-	if (s.isEmpty())
-	{
-		if (fillColor->itemText(fillColor->count() - 1) != "")
-			fillColor->addItem("");
-		fillColor->setCurrentIndex(fillColor->count() - 1);
-	}
-	else
-		fillColor->setCurrentText(s);
+
+	buttonFillColor->setColor(s, qRound(d));
 }
 
 void SMTableStyleWidget::languageChange()
 {
 	retranslateUi(this);
 
-	if (fillColor->count() > 0)
-	{
-		bool fillColorBlocked = fillColor->blockSignals(true);
-		fillColor->setItemText(0, CommonStrings::tr_NoneColor);
-		fillColor->blockSignals(fillColorBlocked);
-	}
+	buttonLineColor->colorButton->setPersistentToolTip( tr("Border color of table"));
+	buttonLineColor->setText(tr("Color"));
+
+	buttonFillColor->colorButton->setPersistentToolTip( tr("Fill color of table"));
+	buttonFillColor->setText(tr("Color"));
+
+	borderLineStyleLabel->setText(tr("Type"));
+	borderLineWidthLabel->setText(tr("Width"));
 }
 
 void SMTableStyleWidget::setBorders(const TableBorder& left, const TableBorder& right,
@@ -220,14 +220,6 @@ void SMTableStyleWidget::setBorders(const TableBorder& left, const TableBorder&
 	on_sideSelector_selectionChanged();
 }
 
-void SMTableStyleWidget::fillFillColorCombo(ColorList &colors)
-{
-	fillColor->clear();
-	fillColor->setColors(colors, true);
-	borderLineColor->clear();
-	borderLineColor->setColors(colors, true);
-}
-
 void SMTableStyleWidget::on_sideSelector_selectionChanged()
 {
 	TableSides newSelection = sideSelector->selection();
@@ -301,12 +293,9 @@ void SMTableStyleWidget::on_borderLineList_currentRowChanged(int row)
 	{
 		borderLineWidth->setEnabled(false);
 		borderLineWidthLabel->setEnabled(false);
-		borderLineColor->setEnabled(false);
-		borderLineColorLabel->setEnabled(false);
+		buttonLineColor->setEnabled(false);
 		borderLineStyle->setEnabled(false);
 		borderLineStyleLabel->setEnabled(false);
-		borderLineShade->setEnabled(false);
-		borderLineShadeLabel->setEnabled(false);
 		return;
 	}
 
@@ -317,17 +306,13 @@ void SMTableStyleWidget::on_borderLineList_currentRowChanged(int row)
 
 	borderLineWidth->setEnabled(true);
 	borderLineWidthLabel->setEnabled(true);
-	borderLineColor->setEnabled(true);
-	borderLineColorLabel->setEnabled(true);
+	buttonLineColor->setEnabled(true);
 	borderLineStyle->setEnabled(true);
 	borderLineStyleLabel->setEnabled(true);
-	borderLineShade->setEnabled(true);
-	borderLineShadeLabel->setEnabled(true);
 
 	borderLineWidth->showValue(line.width());
-	setCurrentComboItem(borderLineColor, line.color());
+	buttonLineColor->setColor(line.color(), line.shade());
 	borderLineStyle->setCurrentIndex(static_cast<int>(line.style()) - 1);
-	borderLineShade->setValue(line.shade());
 }
 
 void SMTableStyleWidget::on_addBorderLineButton_clicked()
@@ -362,29 +347,17 @@ void SMTableStyleWidget::on_borderLineWidth_valueChanged(double width)
 	emit bordersChanged(sideSelector->selection(), m_currentBorder);
 }
 
-void SMTableStyleWidget::on_borderLineShade_valueChanged(double shade)
+void SMTableStyleWidget::borderLineColorChanged()
 {
 	int index = borderLineList->currentRow();
 	if (index < 0)
 		return;
 	TableBorderLine line = m_currentBorder.borderLines().at(index);
-	line.setShade(shade);
-	m_currentBorder.replaceBorderLine(index, line);
-	mirrorCurrentBorderToSelectedSides();
-	updateBorderLineListItem();
-	emit bordersChanged(sideSelector->selection(), m_currentBorder);
-}
-
-void SMTableStyleWidget::on_borderLineColor_textActivated(const QString& colorName)
-{
-	int index = borderLineList->currentRow();
-	if (index < 0)
-		return;
-	TableBorderLine line = m_currentBorder.borderLines().at(index);
-	QString color = colorName;
-	if (colorName == CommonStrings::tr_NoneColor)
+	QString color = buttonLineColor->colorButton->colorName();
+	if (color == CommonStrings::tr_NoneColor)
 		color = CommonStrings::None;
 	line.setColor(color);
+	line.setShade(buttonLineColor->colorButton->colorData().Shade);
 	m_currentBorder.replaceBorderLine(index, line);
 	mirrorCurrentBorderToSelectedSides();
 	updateBorderLineListItem();
@@ -447,9 +420,9 @@ void SMTableStyleWidget::updateBorderLineListItem()
 		return;
 
 	QString text = QString(" %1%2 %3").arg(borderLineWidth->getValue()).arg(borderLineWidth->suffix(), CommonStrings::translatePenStyleName(static_cast<Qt::PenStyle>(borderLineStyle->currentIndex() + 1)));
-	if (borderLineColor->currentColor() != CommonStrings::None)
+	if (buttonLineColor->colorButton->colorName() != CommonStrings::None)
 	{
-		QPixmap icon = getWidePixmap(getColor(borderLineColor->currentColor(), borderLineShade->value()));
+		QPixmap icon = getWidePixmap(getColor(buttonLineColor->colorButton->colorName(), buttonLineColor->colorButton->colorData().Shade));
 		item->setIcon(icon);
 	}
 	item->setText(text);
@@ -529,17 +502,9 @@ void SMTableStyleWidget::showFillForCurrentArea(TableStyle *tableStyle)
 		const TableStyle *parent = dynamic_cast<const TableStyle*>(tableStyle->parentStyle());
 		bool hasParent = tableStyle->hasParent() && parent && parent->hasName() && tableStyle->parent() != "";
 		if (hasParent)
-		{
-			fillColor->setCurrentText(tableStyle->fillColor(), tableStyle->isInhFillColor());
-			fillColor->setParentText(parent->fillColor());
-			fillShade->setValue(qRound(tableStyle->fillShade()), tableStyle->isInhFillShade());
-			fillShade->setParentValue(qRound(parent->fillShade()));
-		}
+			buttonFillColor->setColor(tableStyle->fillColor(), qRound(tableStyle->fillShade()), parent->fillColor(), qRound(parent->fillShade()), tableStyle->isInhFillColor() && tableStyle->isInhFillShade());
 		else
-		{
-			fillColor->setCurrentText(tableStyle->fillColor());
-			fillShade->setValue(qRound(tableStyle->fillShade()));
-		}
+			buttonFillColor->setColor(tableStyle->fillColor(), qRound(tableStyle->fillShade()));
 		return;
 	}
 
@@ -549,10 +514,14 @@ void SMTableStyleWidget::showFillForCurrentArea(TableStyle *tableStyle)
 	// the real inherited state rather than hardcoding "not inherited".
 	CellStyle cs = tableStyle->conditionalStyle(m_currentArea);
 	cs.setContext(&m_Doc->cellStyles());
-	fillColor->setCurrentText(cs.fillColor(), cs.isInhFillColor());
-	fillColor->setParentText(QString());
-	fillShade->setValue(qRound(cs.fillShade()), cs.isInhFillShade());
-	fillShade->setParentValue(0);
+
+	const CellStyle *parent = dynamic_cast<const CellStyle*>(cs.parentStyle());
+	bool hasParent =  cs.hasParent() && parent != nullptr && parent->hasName() && cs.parent() != "";
+	if (hasParent)
+		buttonFillColor->setColor(cs.fillColor(), qRound(cs.fillShade()), parent->fillColor(), qRound(parent->fillShade()), cs.isInhFillColor() && cs.isInhFillShade());
+	else
+		buttonFillColor->setColor(cs.fillColor(), qRound(cs.fillShade()));
+
 }
 
 void SMTableStyleWidget::showBordersForCurrentArea(TableStyle *tableStyle)
diff --git a/scribus/ui/smtablestylewidget.h b/scribus/ui/smtablestylewidget.h
index bb3cef10d..180bd87b7 100644
--- a/scribus/ui/smtablestylewidget.h
+++ b/scribus/ui/smtablestylewidget.h
@@ -66,7 +66,7 @@ class SMTableStyleWidget : public QWidget, public Ui::SMTableStyleWidget
 		 *
 		 * @param colors list of colors to populate the combo with.
 		 */
-		void fillFillColorCombo(ColorList &colors);
+		// void fillFillColorCombo(ColorList &colors);
 		void showColors(const QList<TableStyle*> &tableStyles);
 		void setBorders(const TableBorder& left, const TableBorder& right, const TableBorder& top, const TableBorder& bottom);
 		TableArea currentArea() const { return m_currentArea; }
@@ -115,8 +115,7 @@ class SMTableStyleWidget : public QWidget, public Ui::SMTableStyleWidget
 		void on_addBorderLineButton_clicked();
 		void on_removeBorderLineButton_clicked();
 		void on_borderLineWidth_valueChanged(double width);
-		void on_borderLineShade_valueChanged(double shade);
-		void on_borderLineColor_textActivated(const QString& colorName);
+		void borderLineColorChanged();
 		void on_borderLineStyle_activated(int style);
 		void on_conditionalAreaComboBox_currentIndexChanged(int index);
 };
diff --git a/scribus/ui/smtablestylewidget.ui b/scribus/ui/smtablestylewidget.ui
index 603d9cd1b..b3447e5ea 100644
--- a/scribus/ui/smtablestylewidget.ui
+++ b/scribus/ui/smtablestylewidget.ui
@@ -6,12 +6,27 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>613</width>
-    <height>740</height>
+    <width>633</width>
+    <height>424</height>
    </rect>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_3">
-   <item>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="leftMargin">
+    <number>8</number>
+   </property>
+   <property name="topMargin">
+    <number>8</number>
+   </property>
+   <property name="rightMargin">
+    <number>8</number>
+   </property>
+   <property name="bottomMargin">
+    <number>8</number>
+   </property>
+   <property name="spacing">
+    <number>8</number>
+   </property>
+   <item row="0" column="0" colspan="2">
     <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
       <widget class="QLabel" name="parentLabel">
@@ -30,174 +45,110 @@
        </property>
       </widget>
      </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_5">
-     <item>
-      <widget class="QLabel" name="editingAreaLabel">
-       <property name="text">
-        <string>Editing Area:</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QComboBox" name="conditionalAreaComboBox">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_6">
      <item>
-      <widget class="QLabel" name="parentLabel_2">
-       <property name="text">
-        <string>Cell Style Based On:</string>
+      <spacer name="horizontalSpacer_3">
+       <property name="orientation">
+        <enum>Qt::Orientation::Horizontal</enum>
        </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="CellStyleComboBox" name="basedOnComboBox">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="cellStyleClearButton">
-       <property name="text">
-        <string/>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
        </property>
-      </widget>
+      </spacer>
      </item>
     </layout>
    </item>
-   <item>
-    <widget class="QGroupBox" name="smColorGroup">
-     <property name="title">
-      <string>Colors</string>
+   <item row="1" column="1">
+    <layout class="QVBoxLayout" name="verticalLayout_6">
+     <property name="spacing">
+      <number>8</number>
      </property>
-     <layout class="QVBoxLayout" name="verticalLayout">
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout">
-        <item>
-         <widget class="QLabel" name="fillColorIcon">
-          <property name="maximumSize">
-           <size>
-            <width>22</width>
-            <height>22</height>
-           </size>
-          </property>
-          <property name="text">
-           <string/>
-          </property>
-          <property name="buddy">
-           <cstring>fillColor</cstring>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="SMColorCombo" name="fillColor">
-          <property name="toolTip">
-           <string>Fill Color</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLabel" name="fillShadeLabel">
-          <property name="text">
-           <string/>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="SMShadeButton" name="fillShade">
-          <property name="toolTip">
-           <string>Fill Shade</string>
-          </property>
-          <property name="text">
-           <string/>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_5">
+       <item>
+        <widget class="FormWidget" name="editingAreaLabel">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="label" stdset="0">
+          <string/>
+         </property>
+         <layout class="QHBoxLayout" name="horizontalLayout_3">
+          <property name="leftMargin">
+           <number>0</number>
           </property>
-         </widget>
-        </item>
-        <item>
-         <spacer>
-          <property name="orientation">
-           <enum>Qt::Orientation::Horizontal</enum>
+          <property name="topMargin">
+           <number>0</number>
           </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
+          <property name="rightMargin">
+           <number>0</number>
           </property>
-         </spacer>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="bordersLayout">
-     <property name="title">
-      <string>Borders</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_2">
-      <property name="spacing">
-       <number>3</number>
-      </property>
-      <property name="leftMargin">
-       <number>6</number>
-      </property>
-      <property name="topMargin">
-       <number>6</number>
-      </property>
-      <property name="rightMargin">
-       <number>6</number>
-      </property>
-      <property name="bottomMargin">
-       <number>6</number>
-      </property>
-      <item>
-       <layout class="QHBoxLayout" name="bordesLayout1">
-        <property name="spacing">
-         <number>3</number>
-        </property>
-        <item>
-         <layout class="QVBoxLayout" name="bordersLayout1_1">
-          <property name="spacing">
-           <number>3</number>
+          <property name="bottomMargin">
+           <number>0</number>
           </property>
           <item>
-           <widget class="QToolButton" name="addBorderLineButton">
-            <property name="enabled">
-             <bool>true</bool>
-            </property>
+           <widget class="QComboBox" name="conditionalAreaComboBox">
             <property name="sizePolicy">
-             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
            </widget>
           </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_4">
+         <property name="orientation">
+          <enum>Qt::Orientation::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>0</width>
+           <height>0</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_6">
+       <item>
+        <widget class="FormWidget" name="labelCellStyle">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="label" stdset="0">
+          <string/>
+         </property>
+         <layout class="QHBoxLayout" name="horizontalLayout_14">
+          <property name="leftMargin">
+           <number>0</number>
+          </property>
+          <property name="topMargin">
+           <number>0</number>
+          </property>
+          <property name="rightMargin">
+           <number>0</number>
+          </property>
+          <property name="bottomMargin">
+           <number>0</number>
+          </property>
           <item>
-           <widget class="QToolButton" name="removeBorderLineButton">
-            <property name="enabled">
-             <bool>true</bool>
-            </property>
+           <widget class="CellStyleComboBox" name="basedOnComboBox">
             <property name="sizePolicy">
-             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
@@ -205,371 +156,516 @@
            </widget>
           </item>
           <item>
-           <spacer name="buttonSpacer">
-            <property name="orientation">
-             <enum>Qt::Orientation::Vertical</enum>
-            </property>
-            <property name="sizeType">
-             <enum>QSizePolicy::Policy::Minimum</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>20</width>
-              <height>40</height>
-             </size>
+           <widget class="QToolButton" name="cellStyleClearButton">
+            <property name="text">
+             <string/>
             </property>
-           </spacer>
+           </widget>
           </item>
          </layout>
-        </item>
-        <item>
-         <widget class="QListWidget" name="borderLineList">
-          <property name="enabled">
-           <bool>true</bool>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_5">
+         <property name="orientation">
+          <enum>Qt::Orientation::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>0</width>
+           <height>0</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_7">
+       <item>
+        <widget class="QGroupBox" name="smColorGroup">
+         <property name="title">
+          <string>Fill</string>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout">
+          <property name="spacing">
+           <number>4</number>
           </property>
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
+          <property name="leftMargin">
+           <number>8</number>
           </property>
-          <property name="minimumSize">
-           <size>
-            <width>0</width>
-            <height>50</height>
-           </size>
+          <property name="topMargin">
+           <number>8</number>
           </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="TableSideSelector" name="sideSelector">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
+          <property name="rightMargin">
+           <number>8</number>
           </property>
-          <property name="minimumSize">
-           <size>
-            <width>80</width>
-            <height>80</height>
-           </size>
+          <property name="bottomMargin">
+           <number>8</number>
           </property>
-          <property name="frameShape">
-           <enum>QFrame::Shape::StyledPanel</enum>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout">
+            <item>
+             <widget class="SMColorButton" name="buttonFillColor">
+              <property name="text">
+               <string/>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="groupBox">
+         <property name="title">
+          <string>Text</string>
+         </property>
+         <layout class="QVBoxLayout" name="verticalLayout_5">
+          <property name="spacing">
+           <number>4</number>
           </property>
-          <property name="frameShadow">
-           <enum>QFrame::Shadow::Sunken</enum>
+          <property name="leftMargin">
+           <number>8</number>
           </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="bordersLayout2" stretch="0,0">
-        <property name="spacing">
-         <number>3</number>
-        </property>
-        <item>
-         <layout class="QFormLayout" name="bordersLayout2_1">
-          <property name="fieldGrowthPolicy">
-           <enum>QFormLayout::FieldGrowthPolicy::ExpandingFieldsGrow</enum>
+          <property name="topMargin">
+           <number>8</number>
           </property>
-          <property name="horizontalSpacing">
-           <number>3</number>
+          <property name="rightMargin">
+           <number>8</number>
           </property>
-          <property name="verticalSpacing">
-           <number>3</number>
+          <property name="bottomMargin">
+           <number>8</number>
           </property>
-          <item row="0" column="0">
-           <widget class="QLabel" name="borderLineWidthLabel">
-            <property name="enabled">
-             <bool>false</bool>
+          <item>
+           <widget class="FormWidget" name="labelParagraphStyle">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
             </property>
-            <property name="text">
-             <string>Width:</string>
+            <property name="label" stdset="0">
+             <string/>
             </property>
-            <property name="buddy">
-             <cstring>borderLineWidth</cstring>
+            <property name="preserveLabelSpace">
+             <bool>true</bool>
             </property>
+            <layout class="QHBoxLayout" name="horizontalLayout_9">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="ParaStyleComboBox" name="paragraphStyleComboBox">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="toolTip">
+                <string>Paragraph style of currently selected text or paragraph</string>
+               </property>
+              </widget>
+             </item>
+            </layout>
            </widget>
           </item>
-          <item row="1" column="0">
-           <widget class="QLabel" name="borderLineColorLabel">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="text">
-             <string>Color:</string>
-            </property>
-            <property name="buddy">
-             <cstring>borderLineColor</cstring>
-            </property>
-           </widget>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_6">
+         <property name="orientation">
+          <enum>Qt::Orientation::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>0</width>
+           <height>0</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QGroupBox" name="bordersLayout">
+       <property name="title">
+        <string>Borders</string>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_2">
+        <property name="spacing">
+         <number>8</number>
+        </property>
+        <property name="leftMargin">
+         <number>8</number>
+        </property>
+        <property name="topMargin">
+         <number>8</number>
+        </property>
+        <property name="rightMargin">
+         <number>8</number>
+        </property>
+        <property name="bottomMargin">
+         <number>8</number>
+        </property>
+        <item>
+         <layout class="QHBoxLayout" name="bordesLayout1">
+          <property name="spacing">
+           <number>4</number>
+          </property>
+          <item>
+           <layout class="QVBoxLayout" name="bordersLayout1_1">
+            <property name="spacing">
+             <number>4</number>
+            </property>
+            <item>
+             <widget class="QToolButton" name="addBorderLineButton">
+              <property name="enabled">
+               <bool>true</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QToolButton" name="removeBorderLineButton">
+              <property name="enabled">
+               <bool>true</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <spacer name="buttonSpacer">
+              <property name="orientation">
+               <enum>Qt::Orientation::Vertical</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Policy::Minimum</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>0</width>
+                <height>40</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
           </item>
-          <item row="1" column="1">
-           <widget class="ColorCombo" name="borderLineColor">
+          <item>
+           <widget class="QListWidget" name="borderLineList">
             <property name="enabled">
-             <bool>false</bool>
+             <bool>true</bool>
             </property>
             <property name="sizePolicy">
-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+             <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
             <property name="minimumSize">
              <size>
-              <width>100</width>
-              <height>0</height>
+              <width>0</width>
+              <height>50</height>
              </size>
             </property>
            </widget>
           </item>
-          <item row="0" column="1">
-           <widget class="ScrSpinBox" name="borderLineWidth">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
+          <item>
+           <widget class="TableSideSelector" name="sideSelector">
             <property name="sizePolicy">
-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
             <property name="minimumSize">
              <size>
-              <width>100</width>
-              <height>0</height>
+              <width>80</width>
+              <height>80</height>
              </size>
             </property>
+            <property name="frameShape">
+             <enum>QFrame::Shape::StyledPanel</enum>
+            </property>
+            <property name="frameShadow">
+             <enum>QFrame::Shadow::Sunken</enum>
+            </property>
            </widget>
           </item>
          </layout>
         </item>
         <item>
-         <layout class="QFormLayout" name="bordersLayout2_2">
-          <property name="horizontalSpacing">
-           <number>3</number>
-          </property>
-          <property name="verticalSpacing">
-           <number>3</number>
+         <layout class="QHBoxLayout" name="horizontalLayout_10">
+          <property name="spacing">
+           <number>4</number>
           </property>
-          <item row="0" column="0">
-           <widget class="QLabel" name="borderLineStyleLabel">
+          <item>
+           <widget class="SMColorButton" name="buttonLineColor">
             <property name="enabled">
              <bool>false</bool>
             </property>
             <property name="text">
-             <string>Type:</string>
-            </property>
-            <property name="buddy">
-             <cstring>borderLineStyle</cstring>
+             <string/>
             </property>
            </widget>
           </item>
-          <item row="0" column="1">
-           <widget class="LineCombo" name="borderLineStyle">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
+          <item>
+           <widget class="FormWidget" name="borderLineWidthLabel">
             <property name="sizePolicy">
-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+             <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
-            <property name="minimumSize">
-             <size>
-              <width>100</width>
-              <height>0</height>
-             </size>
-            </property>
-           </widget>
-          </item>
-          <item row="1" column="0">
-           <widget class="QLabel" name="borderLineShadeLabel">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="text">
-             <string>Shade:</string>
-            </property>
-            <property name="buddy">
-             <cstring>borderLineShade</cstring>
-            </property>
+            <property name="label" stdset="0">
+             <string>Width</string>
+            </property>
+            <layout class="QHBoxLayout" name="horizontalLayout_11">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="ScrSpinBox" name="borderLineWidth">
+               <property name="enabled">
+                <bool>false</bool>
+               </property>
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="minimumSize">
+                <size>
+                 <width>100</width>
+                 <height>0</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+            </layout>
            </widget>
           </item>
-          <item row="1" column="1">
-           <widget class="ScrSpinBox" name="borderLineShade">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
+          <item>
+           <widget class="FormWidget" name="borderLineStyleLabel">
             <property name="sizePolicy">
-             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+             <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
               <horstretch>0</horstretch>
               <verstretch>0</verstretch>
              </sizepolicy>
             </property>
-            <property name="minimumSize">
+            <property name="label" stdset="0">
+             <string>Type</string>
+            </property>
+            <layout class="QHBoxLayout" name="horizontalLayout_12">
+             <property name="leftMargin">
+              <number>0</number>
+             </property>
+             <property name="topMargin">
+              <number>0</number>
+             </property>
+             <property name="rightMargin">
+              <number>0</number>
+             </property>
+             <property name="bottomMargin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="LineCombo" name="borderLineStyle">
+               <property name="enabled">
+                <bool>false</bool>
+               </property>
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="minimumSize">
+                <size>
+                 <width>100</width>
+                 <height>0</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_9">
+            <property name="orientation">
+             <enum>Qt::Orientation::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
              <size>
-              <width>100</width>
+              <width>0</width>
               <height>0</height>
              </size>
             </property>
-            <property name="suffix">
-             <string> %</string>
-            </property>
-            <property name="decimals">
-             <number>0</number>
-            </property>
-            <property name="maximum">
-             <double>100.000000000000000</double>
-            </property>
-            <property name="value">
-             <double>100.000000000000000</double>
-            </property>
-           </widget>
+           </spacer>
           </item>
          </layout>
         </item>
        </layout>
-      </item>
-     </layout>
-    </widget>
+      </widget>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Orientation::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
    </item>
-   <item>
-    <widget class="QGroupBox" name="conditionalFormattingGroupBox">
-     <property name="title">
-      <string>Conditional Formatting</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_4">
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_4">
+   <item row="1" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout_3">
+     <item>
+      <widget class="QGroupBox" name="conditionalFormattingGroupBox">
+       <property name="title">
+        <string>Conditional Formatting</string>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_4">
+        <property name="spacing">
+         <number>4</number>
+        </property>
+        <property name="leftMargin">
+         <number>8</number>
+        </property>
+        <property name="topMargin">
+         <number>8</number>
+        </property>
+        <property name="rightMargin">
+         <number>8</number>
+        </property>
+        <property name="bottomMargin">
+         <number>8</number>
+        </property>
         <item>
-         <widget class="QLabel" name="label">
+         <widget class="QCheckBox" name="bandedRowsCheckBox">
           <property name="text">
-           <string>Number of Header Rows:</string>
+           <string>Banded Rows</string>
           </property>
          </widget>
         </item>
         <item>
-         <widget class="QSpinBox" name="headerRowsSpinBox">
-          <property name="maximum">
-           <number>10</number>
+         <widget class="QCheckBox" name="bandedColumnsCheckBox">
+          <property name="text">
+           <string>Banded Columns</string>
           </property>
          </widget>
         </item>
         <item>
-         <spacer name="horizontalSpacer">
-          <property name="orientation">
-           <enum>Qt::Orientation::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_3">
-        <item>
-         <widget class="QLabel" name="label_2">
+         <widget class="QCheckBox" name="firstColumnCheckBox">
           <property name="text">
-           <string>Number of Totals Rows:</string>
+           <string>First Column</string>
           </property>
          </widget>
         </item>
         <item>
-         <widget class="QSpinBox" name="totalRowsSpinBox">
-          <property name="maximum">
-           <number>10</number>
+         <widget class="QCheckBox" name="lastColumnCheckBox">
+          <property name="text">
+           <string>Last Column</string>
           </property>
          </widget>
         </item>
         <item>
-         <spacer name="horizontalSpacer_2">
-          <property name="orientation">
-           <enum>Qt::Orientation::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
+         <layout class="QGridLayout" name="gridLayout_2">
+          <item row="0" column="1">
+           <widget class="QSpinBox" name="headerRowsSpinBox">
+            <property name="maximum">
+             <number>10</number>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="0">
+           <widget class="QLabel" name="label_2">
+            <property name="text">
+             <string>Number of Total Rows:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="0">
+           <widget class="QLabel" name="label">
+            <property name="text">
+             <string>Number of Header Rows:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="1" column="1">
+           <widget class="QSpinBox" name="totalRowsSpinBox">
+            <property name="maximum">
+             <number>10</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
         </item>
        </layout>
-      </item>
-      <item>
-       <widget class="QCheckBox" name="bandedRowsCheckBox">
-        <property name="text">
-         <string>Banded Rows</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QCheckBox" name="bandedColumnsCheckBox">
-        <property name="text">
-         <string>Banded Columns</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QCheckBox" name="firstColumnCheckBox">
-        <property name="text">
-         <string>First Column</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QCheckBox" name="lastColumnCheckBox">
-        <property name="text">
-         <string>Last Column</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox">
-     <property name="title">
-      <string>Text</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_5">
-      <item>
-       <widget class="ParaStyleComboBox" name="paragraphStyleComboBox">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="toolTip">
-         <string>Paragraph style of currently selected text or paragraph</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
+      </widget>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Orientation::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
    </item>
-   <item>
-    <spacer>
+   <item row="1" column="2">
+    <spacer name="horizontalSpacer">
      <property name="orientation">
-      <enum>Qt::Orientation::Vertical</enum>
-     </property>
-     <property name="sizeType">
-      <enum>QSizePolicy::Policy::MinimumExpanding</enum>
+      <enum>Qt::Orientation::Horizontal</enum>
      </property>
      <property name="sizeHint" stdset="0">
       <size>
-       <width>20</width>
+       <width>0</width>
        <height>0</height>
       </size>
      </property>
@@ -578,6 +674,12 @@
   </layout>
  </widget>
  <customwidgets>
+  <customwidget>
+   <class>FormWidget</class>
+   <extends>QWidget</extends>
+   <header>ui/widgets/form_widget.h</header>
+   <container>1</container>
+  </customwidget>
   <customwidget>
    <class>ScrSpinBox</class>
    <extends>QDoubleSpinBox</extends>
@@ -594,21 +696,6 @@
    <header>ui/tablesideselector.h</header>
    <container>1</container>
   </customwidget>
-  <customwidget>
-   <class>ColorCombo</class>
-   <extends>QComboBox</extends>
-   <header>ui/colorcombo.h</header>
-  </customwidget>
-  <customwidget>
-   <class>SMColorCombo</class>
-   <extends>QComboBox</extends>
-   <header>ui/smcolorcombo.h</header>
-  </customwidget>
-  <customwidget>
-   <class>SMShadeButton</class>
-   <extends>QPushButton</extends>
-   <header>ui/smshadebutton.h</header>
-  </customwidget>
   <customwidget>
    <class>ParaStyleComboBox</class>
    <extends>QComboBox</extends>
@@ -619,6 +706,11 @@
    <extends>QComboBox</extends>
    <header>ui/stylecombos.h</header>
   </customwidget>
+  <customwidget>
+   <class>SMColorButton</class>
+   <extends>QToolButton</extends>
+   <header>ui/smcolorbutton.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
tablestyleui_2026-06-08_01.diff (85,334 bytes)   

cbradney

2026-06-08 19:20

administrator   ~0053798

Thanks @nitramr
There's some issues with the way the widgets are currently working in this patch. I think there's something about widget activation. Something feels like selection of styles is not always represented in the comboboxes, but I am not 100% sure which.
Also, the colour selector is launching below the window for me. That doesnt happen elsewhere in the app for me though.

ale

2026-06-09 19:45

manager   ~0053800

I could not try out the new dialog, but from the screenshot, I don't have the feeling that the order of the widgets is intuitive...
But you might have good reasons for placing the sections that way...

Without trying to optimize the spaces, I came up with a very rough reordering that seems more natural to me...
but I might be missing something...
table_style_reordered.png (96,375 bytes)   
table_style_reordered.png (96,375 bytes)   

nitramr

2026-06-09 21:52

developer   ~0053801

@cbradney could you please also apply the new patch? I’ve implemented a new "sticky" mode for the color button that anchors the color picker to the button, making it immovable. It now behaves like a context menu.
stickycolorpicker_2026-06-09_01.diff (5,260 bytes)   
diff --git a/scribus/ui/smcolorbutton.cpp b/scribus/ui/smcolorbutton.cpp
index a675be7ac..46638bd06 100644
--- a/scribus/ui/smcolorbutton.cpp
+++ b/scribus/ui/smcolorbutton.cpp
@@ -6,7 +6,7 @@
 SMColorButton::SMColorButton(QWidget *parent) : FormWidget(parent)
 {
 	colorButton = new ColorButton(this);
-	colorButton->setMenuContextType(ColorButton::Floating);
+	colorButton->setMenuContextType(ColorButton::Sticky);
 	addWidget( colorButton );
 
 	parentButton = new QToolButton(this);
diff --git a/scribus/ui/widgets/color_button.cpp b/scribus/ui/widgets/color_button.cpp
index 1b7403df2..27917d7d9 100644
--- a/scribus/ui/widgets/color_button.cpp
+++ b/scribus/ui/widgets/color_button.cpp
@@ -49,7 +49,10 @@ void ColorButton::setMenuContextType(MenuContextType type)
 	switch (m_contextType)
 	{
 	case MenuContextType::None:
+		setMenu(nullptr);
+		disconnect(this, &QToolButton::pressed, this, &ColorButton::toggleFloatingContext);
 		break;
+	case MenuContextType::Sticky:
 	case MenuContextType::Floating:
 		setPopupMode(QToolButton::InstantPopup);
 		setContextMenuPolicy(Qt::ContextMenuPolicy::NoContextMenu);
@@ -653,6 +656,11 @@ void ColorButton::toggleFloatingContext()
 	connect(colorPicker, &ColorPicker::patternChanged, this, &ColorButton::updatePattern, Qt::UniqueConnection);
 	connect(colorPicker, &ColorPicker::colorListChanged, this, &ColorButton::updateFloatingContext, Qt::UniqueConnection);
 
+	if (m_contextType == MenuContextType::Floating)
+		floatingWidget->setIsMovable(true);
+	else if (m_contextType == MenuContextType::Sticky)
+		floatingWidget->setIsMovable(false);
+
 	floatingWidget->show(this);
 }
 
diff --git a/scribus/ui/widgets/color_button.h b/scribus/ui/widgets/color_button.h
index cc0e2041c..fdbe6a4d5 100644
--- a/scribus/ui/widgets/color_button.h
+++ b/scribus/ui/widgets/color_button.h
@@ -27,7 +27,8 @@ public:
 	{
 		None = 0,
 		Floating = 1,
-		List = 2
+		Sticky = 2,
+		List = 3
 	};
 
 	enum InfoType
diff --git a/scribus/ui/widgets/floatingwindow.cpp b/scribus/ui/widgets/floatingwindow.cpp
index 2808413ee..59373c9d8 100644
--- a/scribus/ui/widgets/floatingwindow.cpp
+++ b/scribus/ui/widgets/floatingwindow.cpp
@@ -24,13 +24,15 @@ FloatingWindow::FloatingWindow(QWidget *child, QWidget *parent)
 	buttonClose->setFixedSize(16, 16);
 	buttonClose->setAutoRaise(true);
 
-	QHBoxLayout *layoutHeader = new QHBoxLayout();
+	m_header = new QWidget();
+
+	QHBoxLayout *layoutHeader = new QHBoxLayout(m_header);
 	layoutHeader->addWidget(m_handle);
 	layoutHeader->addWidget(buttonClose);
 	layoutHeader->setContentsMargins(8, 8, 8, 8);
 
 	m_layout = new QVBoxLayout();
-	m_layout->addLayout(layoutHeader);
+	m_layout->addWidget(m_header);
 	m_layout->addWidget(m_child);
 	m_layout->setSpacing(0);
 	m_layout->setContentsMargins(1, 1, 1, 1);
@@ -52,6 +54,19 @@ QWidget *FloatingWindow::reference()
 	return m_reference;
 }
 
+void FloatingWindow::setIsMovable(bool movable)
+{
+	m_isMovable = movable;
+
+	m_header->setVisible(m_isMovable);
+
+	if(m_isMovable)
+		setWindowFlags(Qt::Popup | Qt::FramelessWindowHint);
+	else
+		setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
+
+}
+
 void FloatingWindow::iconSetChange()
 {
 	IconManager &iconManager = IconManager::instance();
@@ -64,7 +79,7 @@ bool FloatingWindow::eventFilter(QObject *obj, QEvent *event)
 	if (!wdg)
 		return QWidget::eventFilter(obj, event);
 
-	if (m_handle && (m_handle == wdg))
+	if (m_handle && (m_handle == wdg) && m_isMovable)
 	{
 		switch (event->type())
 		{
@@ -102,6 +117,22 @@ void FloatingWindow::hideEvent(QHideEvent *event)
 	QWidget::hideEvent(event);
 }
 
+void FloatingWindow::showEvent(QShowEvent *event)
+{
+	QWidget::showEvent(event);
+
+	this->raise();
+	this->activateWindow();
+}
+
+bool FloatingWindow::event(QEvent *event)
+{
+	if (!m_isMovable && event->type() == QEvent::WindowDeactivate)
+		hide();
+
+	return QWidget::event(event);
+}
+
 QSize FloatingWindow::screenSize() const
 {
 	QList<QScreen*> screens = QGuiApplication::screens();
@@ -187,9 +218,8 @@ void FloatingWindow::calculatePosition()
 void FloatingWindow::show(QWidget *reference)
 {
 	m_reference = reference;
-	calculatePosition();	
+	calculatePosition();
 	QWidget::show();
-	QWidget::activateWindow();
 }
 
 void FloatingWindow::updateSize()
diff --git a/scribus/ui/widgets/floatingwindow.h b/scribus/ui/widgets/floatingwindow.h
index 8f542c255..453bdec75 100644
--- a/scribus/ui/widgets/floatingwindow.h
+++ b/scribus/ui/widgets/floatingwindow.h
@@ -15,6 +15,9 @@ public:
 	QWidget *child();
 	QWidget *reference();
 
+	void setIsMovable(bool movable);
+	bool isMovable() { return m_isMovable; };
+
 public slots:
 	void iconSetChange();
 
@@ -22,15 +25,19 @@ protected:
 	bool eventFilter(QObject *obj, QEvent *event) override;
 	void keyPressEvent(QKeyEvent *event) override;
 	void hideEvent(QHideEvent *event) override;
+	void showEvent(QShowEvent *event) override;
+	bool event(QEvent *event) override;
 
 private:
 	QWidget * m_child { nullptr };
 	QWidget * m_reference { nullptr };
 	QWidget * m_handle { nullptr };
+	QWidget * m_header { nullptr };
 	QVBoxLayout * m_layout { nullptr };
 	QToolButton* buttonClose { nullptr };
 
 	QPoint m_mousePos;
+	bool m_isMovable {true};
 
 	/*!
 	 * \brief Screen size of all screens

nitramr

2026-06-09 21:56

developer   ~0053802

@ale

>> But you might have good reasons for placing the sections that way...

Yes, there actually are. Conditional formatting extends the "Area" combo box to include additional areas for which cell styles can be edited. Consequently, the properties for fills, borders, and paragraph styles always apply to the selected area.
It therefore makes sense to place the area selection before the properties.

qirat

2026-06-10 01:10

reporter   ~0053803

@ale, @nitramr's layout makes more sense to me too (as of now, bcz it is just a layout screenshot for me yet, no way for me to see it in action until the patch is applied and things are actually in the svn).

cbradney

2026-06-10 18:16

administrator   ~0053805

I've committed all of that. I think the UI still needs some tidying up before the next release. Please continue to play around and evolve it from current state. Thanks

ale

2026-06-11 14:32

manager   ~0053810

Ok, I got the current code and could play with the current table styles definition.

My impression has not changed much, but now I think I understand better the reasons why the dialog is how it is : - )

Since today is my free day, I have the time to write down a few ideas.
(And while doing that, I'll also create ticket for other things I notice... of course!)

The main point: the simplest thing to do should be: just define a simple style for a table. Mainly the borders.

Currently, the user is presented with lot of information that is not trivial to navigate.

I'd like to suggest that by default only the widgets that are active for "Whole Table" are shown.

Below it we could have a row of buttons for activating:

- Header
- Total
- Vertical Header (currently "First Column")
- Vertical Total (currently Last Column)
- Banded Rows
- Banded Columns

When the button is checked, a section is attached below, with the formatting that are available for that section).
The number of rows affected would be part of the section.

Of course, the window will need to be scrollable.

I think that this will give the user a much better overview of the formatting that they have defined for the style.

cbradney

2026-06-11 18:19

administrator   ~0053814

All of the options are required for all of the area selections.

ale

2026-06-11 19:18

manager   ~0053816

Yes, the options are all required. But I'd like to have them as buttons that make the matching section visible, not a drop down that shows only one section at a time.

Currently, one does have to click around to do the formatting and there is no overview of the choices made.

qirat

2026-06-12 00:21

reporter   ~0053820

Oj, yeah. @ale has point. When you check banded rows for example, you have to selevt from the dropdown odd and even one by one that is just more clicks. And when you are setting up odd rows (selected in the dropdown), you dont know what you did for the even ones without going to the dropdown and selecting even. I think what @ale is saying is to be able to view all in one glance what you set for which.

qirat

2026-06-12 00:22

reporter   ~0053821

Should be a separate bug report tho?

Issue History

Date Modified Username Field Change
2026-06-06 13:58 qirat New Issue
2026-06-06 13:58 qirat File Added: table_style_shade_setting.png
2026-06-06 14:01 qirat Note Added: 0053779
2026-06-06 19:39 nitramr Note Added: 0053780
2026-06-06 19:39 nitramr File Added: TableStyle.png
2026-06-06 19:39 nitramr Assigned To => nitramr
2026-06-06 19:39 nitramr Status new => assigned
2026-06-06 19:39 nitramr Product Version => 1.7.4.svn
2026-06-06 19:39 nitramr Target Version => 1.7 milestone
2026-06-07 00:45 qirat Note Added: 0053785
2026-06-07 19:10 cbradney Note Added: 0053793
2026-06-08 18:55 nitramr Note Added: 0053797
2026-06-08 18:55 nitramr File Added: table_style.png
2026-06-08 18:55 nitramr File Added: tablestyleui_2026-06-08_01.diff
2026-06-08 19:20 cbradney Note Added: 0053798
2026-06-09 19:45 ale Note Added: 0053800
2026-06-09 19:45 ale File Added: table_style_reordered.png
2026-06-09 21:52 nitramr Note Added: 0053801
2026-06-09 21:52 nitramr File Added: stickycolorpicker_2026-06-09_01.diff
2026-06-09 21:56 nitramr Note Added: 0053802
2026-06-10 01:10 qirat Note Added: 0053803
2026-06-10 18:16 cbradney Note Added: 0053805
2026-06-11 14:32 ale Note Added: 0053810
2026-06-11 18:19 cbradney Note Added: 0053814
2026-06-11 19:18 ale Note Added: 0053816
2026-06-12 00:21 qirat Note Added: 0053820
2026-06-12 00:22 qirat Note Added: 0053821