From 20f984156f3290ed3cb24c44ea93186ca88bf823 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Wed, 21 Jan 2026 21:35:17 +0000 Subject: [PATCH] scrollbar fixes (#5529) # Description of Changes - Add scrolling bar to settings menus - Fix scrolling bar in My files -fix depreciated pdf editor code ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### Translations (if applicable) - [ ] I ran [`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --- .../service/PdfJsonConversionService.java | 13 +++-- build.gradle | 2 +- .../components/fileManager/DesktopLayout.tsx | 10 +++- .../core/components/shared/AppConfigModal.css | 58 +++++++++++++++++-- 4 files changed, 68 insertions(+), 15 deletions(-) diff --git a/app/core/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java b/app/core/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java index 604e9ba38..85d7ac80c 100644 --- a/app/core/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java +++ b/app/core/src/main/java/stirling/software/SPDF/service/PdfJsonConversionService.java @@ -3424,7 +3424,7 @@ public class PdfJsonConversionService { } break; case "Tj": - if (i == 0 || !(tokens.get(i - 1) instanceof COSString cosString)) { + if (i == 0 || !(tokens.get(i - 1) instanceof COSString)) { log.debug( "Encountered Tj without preceding string operand; aborting rewrite"); return false; @@ -3435,7 +3435,8 @@ public class PdfJsonConversionService { i, cursor.remaining()); if (!rewriteShowText( - cosString, + tokens, + i - 1, currentFont, currentFontModel, currentFontName, @@ -3496,7 +3497,8 @@ public class PdfJsonConversionService { } private boolean rewriteShowText( - COSString cosString, + List tokens, + int tokenIndex, PDFont font, PdfJsonFont fontModel, String expectedFontName, @@ -3509,6 +3511,7 @@ public class PdfJsonConversionService { expectedFontName); return false; } + COSString cosString = (COSString) tokens.get(tokenIndex); int glyphCount = countGlyphs(cosString, font); log.trace( "rewriteShowText consuming {} glyphs at cursor index {} for font {}", @@ -3525,7 +3528,7 @@ public class PdfJsonConversionService { return false; } if (removeOnly) { - cosString.setValue(new byte[0]); + tokens.set(tokenIndex, new COSString(new byte[0])); return true; } MergedText replacement = mergeText(consumed); @@ -3540,7 +3543,7 @@ public class PdfJsonConversionService { replacement.text()); return false; } - cosString.setValue(encoded); + tokens.set(tokenIndex, new COSString(encoded)); return true; } catch (IOException | IllegalArgumentException | UnsupportedOperationException ex) { log.debug( diff --git a/build.gradle b/build.gradle index 47ce2ba21..75a9e2632 100644 --- a/build.gradle +++ b/build.gradle @@ -67,7 +67,7 @@ springBoot { allprojects { group = 'stirling.software' - version = '2.3.0' + version = '2.3.1' configurations.configureEach { exclude group: 'commons-logging', module: 'commons-logging' diff --git a/frontend/src/core/components/fileManager/DesktopLayout.tsx b/frontend/src/core/components/fileManager/DesktopLayout.tsx index c4bd72e16..9926592c8 100644 --- a/frontend/src/core/components/fileManager/DesktopLayout.tsx +++ b/frontend/src/core/components/fileManager/DesktopLayout.tsx @@ -62,11 +62,15 @@ const DesktopLayout: React.FC = () => { )} -
+
0 + ? `calc(${modalHeight} - 7rem)` + : '100%'} scrollAreaStyle={{ - height: activeSource === 'recent' && recentFiles.length > 0 ? modalHeight : '100%', + height: activeSource === 'recent' && recentFiles.length > 0 + ? `calc(${modalHeight} - 7rem)` + : '100%', backgroundColor: 'transparent', border: 'none', borderRadius: 0 diff --git a/frontend/src/core/components/shared/AppConfigModal.css b/frontend/src/core/components/shared/AppConfigModal.css index 5b006e5bf..b36fc3177 100644 --- a/frontend/src/core/components/shared/AppConfigModal.css +++ b/frontend/src/core/components/shared/AppConfigModal.css @@ -57,12 +57,35 @@ overflow-y: auto; padding: 1rem; padding-bottom: 2rem; - scrollbar-width: none; - -ms-overflow-style: none; + scrollbar-width: thin; + scrollbar-color: transparent transparent; + transition: scrollbar-color 0.2s ease; +} + +.modal-nav-scroll:hover { + scrollbar-color: rgba(128, 128, 128, 0.5) transparent; } .modal-nav-scroll::-webkit-scrollbar { - display: none; + width: 8px; +} + +.modal-nav-scroll::-webkit-scrollbar-track { + background: transparent; +} + +.modal-nav-scroll::-webkit-scrollbar-thumb { + background-color: transparent; + border-radius: 4px; + transition: background-color 0.2s ease; +} + +.modal-nav-scroll:hover::-webkit-scrollbar-thumb { + background-color: rgba(128, 128, 128, 0.5); +} + +.modal-nav-scroll::-webkit-scrollbar-thumb:hover { + background-color: rgba(128, 128, 128, 0.7); } .modal-nav-section { @@ -94,12 +117,35 @@ .modal-content-scroll { flex: 1; overflow-y: auto; - scrollbar-width: none; - -ms-overflow-style: none; + scrollbar-width: thin; + scrollbar-color: transparent transparent; + transition: scrollbar-color 0.2s ease; +} + +.modal-content-scroll:hover { + scrollbar-color: rgba(128, 128, 128, 0.5) transparent; } .modal-content-scroll::-webkit-scrollbar { - display: none; + width: 8px; +} + +.modal-content-scroll::-webkit-scrollbar-track { + background: transparent; +} + +.modal-content-scroll::-webkit-scrollbar-thumb { + background-color: transparent; + border-radius: 4px; + transition: background-color 0.2s ease; +} + +.modal-content-scroll:hover::-webkit-scrollbar-thumb { + background-color: rgba(128, 128, 128, 0.5); +} + +.modal-content-scroll::-webkit-scrollbar-thumb:hover { + background-color: rgba(128, 128, 128, 0.7); } .modal-header {