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 {