diff --git a/src/main/kotlin/app/extensions/SystemUtils.kt b/src/main/kotlin/app/extensions/SystemUtils.kt index 40dc8c9..2a86523 100644 --- a/src/main/kotlin/app/extensions/SystemUtils.kt +++ b/src/main/kotlin/app/extensions/SystemUtils.kt @@ -5,6 +5,7 @@ import java.awt.Desktop import java.awt.Toolkit import java.awt.datatransfer.Clipboard import java.awt.datatransfer.StringSelection +import java.io.File import java.net.URI import java.nio.file.FileSystems @@ -20,6 +21,12 @@ fun openUrlInBrowser(url: String) { } } +fun openFileWithExternalApp(filePath: String) { + if (!openSystemSpecific(filePath)) { + openFileJdk(filePath) + } +} + private fun openSystemSpecific(url: String): Boolean { when(getCurrentOs()) { OS.LINUX -> { @@ -39,7 +46,7 @@ private fun openSystemSpecific(url: String): Boolean { return false } -fun openUrlInBrowserJdk(url: String) { +private fun openUrlInBrowserJdk(url: String) { try { Desktop.getDesktop().browse(URI(url)) @@ -49,6 +56,15 @@ fun openUrlInBrowserJdk(url: String) { } } +private fun openFileJdk(filePath: String) { + try { + Desktop.getDesktop().open(File(filePath)) + } catch (ex: Exception) { + println("Failed to open URL in browser") + ex.printStackTrace() + } +} + fun copyInBrowser(textToCopy: String) { try { val selection = StringSelection(textToCopy) diff --git a/src/main/kotlin/app/ui/diff/Diff.kt b/src/main/kotlin/app/ui/diff/Diff.kt index 6ec4cd3..1d4bc4e 100644 --- a/src/main/kotlin/app/ui/diff/Diff.kt +++ b/src/main/kotlin/app/ui/diff/Diff.kt @@ -28,9 +28,7 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import app.extensions.lineDelimiter -import app.extensions.removeLineDelimiters -import app.extensions.toStringWithSpaces +import app.extensions.* import app.git.* import app.git.diff.DiffResult import app.git.diff.Hunk @@ -237,6 +235,9 @@ fun ImageDiff(tempImagePath: Path) { bitmap = loadImageBitmap(inputStream = FileInputStream(tempImagePath.absolutePathString())), contentDescription = null, modifier = Modifier.fillMaxSize() + .handMouseClickable { + openFileWithExternalApp(tempImagePath.absolutePathString()) + } ) }