From 1c65d3796386019e9ab4e88f0993ad52a7353a03 Mon Sep 17 00:00:00 2001 From: Maya Date: Thu, 19 Feb 2026 18:23:12 +0300 Subject: [PATCH] fix: disable transparency option on jpeg --- src/lib/components/functional/SettingsModal.svelte | 11 +++++++++-- src/lib/converters/magick.svelte.ts | 10 +++++++--- src/lib/types/conversion-settings.ts | 1 + 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/lib/components/functional/SettingsModal.svelte b/src/lib/components/functional/SettingsModal.svelte index 72704f5..6052d54 100644 --- a/src/lib/components/functional/SettingsModal.svelte +++ b/src/lib/components/functional/SettingsModal.svelte @@ -117,6 +117,7 @@ setting.key, value, )} + disabled={setting.disabled} /> {#if setting.hasCustomInput} {@const disabled = @@ -134,7 +135,8 @@ ] ?? ""} placeholder={setting.placeholder} - {disabled} + disabled={disabled || + setting.disabled} oninput={(e) => handleSettingChange( setting.customInputKey!, @@ -156,6 +158,7 @@ setting.key, e.currentTarget.checked, )} + disabled={setting.disabled} /> {:else if setting.type === "range"} {@const rangeValue = (settings[ @@ -170,7 +173,9 @@ {@const rangeLabel = setting.options?.[rangeValue] ?.label ?? rangeValue} -
+
{/if}
diff --git a/src/lib/converters/magick.svelte.ts b/src/lib/converters/magick.svelte.ts index ec676c9..3437774 100644 --- a/src/lib/converters/magick.svelte.ts +++ b/src/lib/converters/magick.svelte.ts @@ -116,7 +116,9 @@ export class MagickConverter extends Converter { } } - public async getAvailableSettings(): Promise { + public async getAvailableSettings( + input: VertFile, + ): Promise { // images - quality/compression/quantize/interlace/depth-DPI, resize, crop, rotate, flip/flop, autoOrient?, color space/bit depth, transparency settings const global = Settings.instance.settings; @@ -163,13 +165,15 @@ export class MagickConverter extends Converter { ], }; - // allow transparency or not - // TODO: disable if jpg/jpeg input/output + // TODO: check other formats for transparency support + const fromJpeg = input.from === ".jpg" || input.from === ".jpeg" || input.from === ".jfif"; + const toJpeg = input.to === ".jpg" || input.to === ".jpeg" || input.to === ".jfif"; const transparency: SettingDefinition = { key: "transparency", label: m["convert.settings.image.transparency"](), type: "boolean", default: true, + disabled: fromJpeg || toJpeg, }; const metadata: SettingDefinition = { diff --git a/src/lib/types/conversion-settings.ts b/src/lib/types/conversion-settings.ts index 7b34912..8c58bf4 100644 --- a/src/lib/types/conversion-settings.ts +++ b/src/lib/types/conversion-settings.ts @@ -5,6 +5,7 @@ export interface SettingDefinition { key: string; label: string; type: SettingType; + disabled?: boolean; default?: any; placeholder?: any; min?: number;