On Linux the window was created fully transparent to draw rounded corners (#1982), but on WebKitGTK a transparent window composites as transparent whenever its web process is too busy to repaint damaged regions (for example during a library backup). Interacting with the app then makes it appear to turn invisible, showing the desktop through the window. Make the window opaque everywhere: the main window in lib.rs and the reader/extra windows in nav.ts. Drop the rounded-window treatment (hasRoundedWindow=false) so no rounded 1px border floats on the now square opaque window, and give the Linux loading placeholders a solid background. An opaque window retains its last painted frame instead of going invisible; the tradeoff is square corners on Linux. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,9 @@ const createReaderWindow = (appService: AppService, url: string) => {
|
||||
resizable: true,
|
||||
title: appService.isMacOSApp ? '' : 'Readest',
|
||||
decorations: !!appService.isMacOSApp,
|
||||
transparent: !appService.isMacOSApp,
|
||||
// Linux stays opaque: a transparent WebKitGTK window turns invisible when
|
||||
// its web process is busy (#3682). macOS uses native decorations instead.
|
||||
transparent: !appService.isMacOSApp && !appService.isLinuxApp,
|
||||
shadow: appService.isMacOSApp ? undefined : true,
|
||||
titleBarStyle: appService.isMacOSApp ? 'overlay' : undefined,
|
||||
// Enum ScrollBarStyle is exported as type by tauri, so it cannot be used directly.
|
||||
@@ -74,7 +76,9 @@ export const ensureMainLibraryWindow = async (appService: AppService) => {
|
||||
resizable: true,
|
||||
title: appService.isMacOSApp ? '' : 'Readest',
|
||||
decorations: !!appService.isMacOSApp,
|
||||
transparent: !appService.isMacOSApp,
|
||||
// Linux stays opaque: a transparent WebKitGTK window turns invisible when
|
||||
// its web process is busy (#3682). macOS uses native decorations instead.
|
||||
transparent: !appService.isMacOSApp && !appService.isLinuxApp,
|
||||
shadow: appService.isMacOSApp ? undefined : true,
|
||||
titleBarStyle: appService.isMacOSApp ? 'overlay' : undefined,
|
||||
scrollBarStyle: (appService.osPlatform === 'windows'
|
||||
|
||||
Reference in New Issue
Block a user