View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017974 | Scribus | User Interface | public | 2026-09-09 13:44 | 2026-10-14 20:25 |
| Reporter | buttar | Assigned To | cbradney | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Platform | Linux | OS | Fedora Workstation | OS Version | 44 |
| Product Version | 1.7.4.svn | ||||
| Fixed in Version | 1.7.4.svn | ||||
| Summary | 0017974: Arrange Pages' binding icon disappears after theme change | ||||
| Description | #Issue: -- Switching between light and dark themes makes the binding-direction icon in Arrange Pages → Document Pages effectively disappear. -- The button remains present and functional, but its icon retains the previous theme’s colours and loses contrast. -- Restarting Scribus restores the correct icon. #Cause: -- `PageLayouts` creates the stateful binding-direction icon only during construction. -- Theme changes rebuilds the `IconManager` cache, but `PageLayouts` routes `iconSetChanged()` through `languageChange()`. -- That path rebuilds the Scheme and First Page controls but does not reload the binding-direction icon. #Fix: -- Adds a dedicated `iconSetChange()` handler for theme-driven icon updates. -- Centralizes rebuilding of all `PageLayouts` icon-bearing controls in `updateIcons()`. -- Recreates both checked and unchecked binding-direction pixmaps from the current icon set. -- Preserves the current Scheme and First Page selections and blocks signals while rebuilding their menus. -- Keeps translated labels and tooltips in `languageChange()`, then refreshes controls whose menu entries combine translated text and icons. -- Removes the constructor-only binding-icon initialisation. | ||||
| Tags | #please_test | ||||
| Attached Files | arrange-pages-binding-icon-theme-refresh-v1.01.patch (3,496 bytes)
Index: scribus/ui/widgets/pagelayout.cpp
===================================================================
--- scribus/ui/widgets/pagelayout.cpp (revision 27827)
+++ scribus/ui/widgets/pagelayout.cpp (working copy)
@@ -61,10 +61,6 @@
buttonBindingDirection = new QToolButton(this);
buttonBindingDirection->setCheckable(true);
buttonBindingDirection->setAutoRaise(true);
- QIcon pageBindingIcon;
- pageBindingIcon.addPixmap(IconManager::instance().loadPixmap("page-binding-left"), QIcon::Normal, QIcon::Off);
- pageBindingIcon.addPixmap(IconManager::instance().loadPixmap("page-binding-right"), QIcon::Normal, QIcon::On);
- buttonBindingDirection->setIcon(pageBindingIcon);
labelBinding = new FormWidget();
labelBinding->setFont(layFont);
@@ -75,7 +71,7 @@
languageChange();
connect(ScQApp, SIGNAL(labelVisibilityChanged(bool)), this, SLOT(toggleLabelVisibility(bool)));
- connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(languageChange()));
+ connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
connect(buttonScheme, &DropdownButton::activated, this, &PageLayouts::changeScheme, Qt::UniqueConnection);
connect(buttonFirstPage, &DropdownButton::activated, this, &PageLayouts::changeFirstPage, Qt::UniqueConnection);
connect(buttonBindingDirection, &QToolButton::toggled, this, &PageLayouts::changeBindingDirection, Qt::UniqueConnection);
@@ -184,26 +180,40 @@
labelBinding->setLabelVisibility(visibility);
}
-void PageLayouts::languageChange()
+void PageLayouts::updateIcons()
{
-
reloadScheme();
reloadFirstPage(m_scheme);
- labelScheme->setText(tr("Scheme"));
- labelPages->setText(tr("First Page"));
- labelBinding->setText(tr("Binding"));
-
QSignalBlocker sigButtonScheme(buttonScheme);
buttonScheme->setCurrentIndex(buttonScheme->currentIndex());
- buttonScheme->setToolTip(tr("Number of pages to show side-by-side on the canvas. Often used for allowing items to be placed across page spreads."));
QSignalBlocker sigFirstPage(buttonFirstPage);
buttonFirstPage->setCurrentIndex(buttonFirstPage->currentIndex());
+
+ QIcon pageBindingIcon;
+ pageBindingIcon.addPixmap(IconManager::instance().loadPixmap("page-binding-left"), QIcon::Normal, QIcon::Off);
+ pageBindingIcon.addPixmap(IconManager::instance().loadPixmap("page-binding-right"), QIcon::Normal, QIcon::On);
+ buttonBindingDirection->setIcon(pageBindingIcon);
+}
+
+void PageLayouts::iconSetChange()
+{
+ updateIcons();
+}
+
+void PageLayouts::languageChange()
+{
+ labelScheme->setText(tr("Scheme"));
+ labelPages->setText(tr("First Page"));
+ labelBinding->setText(tr("Binding"));
+
+ buttonScheme->setToolTip(tr("Number of pages to show side-by-side on the canvas. Often used for allowing items to be placed across page spreads."));
buttonFirstPage->setToolTip(tr("Location on the canvas where the first page of the document is placed"));
- QSignalBlocker sigBinding(buttonBindingDirection);
buttonBindingDirection->setToolTip(tr("Bind the pages on the right (LTR) or left (RTL) side"));
+
+ updateIcons();
}
void PageLayouts::changeScheme(int index)
Index: scribus/ui/widgets/pagelayout.h
===================================================================
--- scribus/ui/widgets/pagelayout.h (revision 27827)
+++ scribus/ui/widgets/pagelayout.h (working copy)
@@ -70,6 +70,10 @@
void reloadScheme();
void reloadFirstPage(int scheme);
+ void updateIcons();
+
+private slots:
+ void iconSetChange();
protected slots:
void languageChange();
| ||||
| Patch | Yes | ||||
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2026-09-09 13:44 | buttar | New Issue | |
| 2026-09-09 13:44 | buttar | Tag Attached: #please_test | |
| 2026-09-09 13:44 | buttar | File Added: arrange-pages-binding-icon-theme-refresh-v1.01.patch | |
| 2026-09-09 13:45 | buttar | Note Added: 0054446 | |
| 2026-09-09 13:45 | buttar | File Added: bind-direction-icon-issue.mp4 | |
| 2026-10-14 19:42 | cbradney | Assigned To | => cbradney |
| 2026-10-14 19:42 | cbradney | Status | new => resolved |
| 2026-10-14 19:42 | cbradney | Resolution | open => fixed |
| 2026-10-14 19:42 | cbradney | Fixed in Version | => 1.7.4.svn |
| 2026-10-14 20:25 | jghali | Summary | [patch] Arrange Pages' binding icon disappears after theme change => Arrange Pages' binding icon disappears after theme change |