From fca946bf15f01bfcf666c8d34393f1f311916ec8 Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Sun, 8 Jan 2023 10:01:30 -0700 Subject: [PATCH] Fix bug with long folder templates --- .../Dialogs/EditTemplateDialog.axaml.cs | 10 ++++++++-- Source/LibationWinForms/Dialogs/EditTemplateDialog.cs | 8 +++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs b/Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs index 3cb44efe..33a039f9 100644 --- a/Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs +++ b/Source/LibationAvalonia/Dialogs/EditTemplateDialog.axaml.cs @@ -103,7 +103,7 @@ namespace LibationAvalonia.Dialogs get => _userTemplateText; set { - _userTemplateText = value; + this.RaiseAndSetIfChanged(ref _userTemplateText, value); templateTb_TextChanged(); } } @@ -165,7 +165,13 @@ namespace LibationAvalonia.Dialogs var books = config.Books; var folder = Templates.Folder.GetPortionFilename( libraryBookDto, - isFolder ? workingTemplateText : config.FolderTemplate); + //Path must be rooted for windows to allow long file paths. This is + //only necessary for folder templates because they may contain several + //subdirectories. Without rooting, we won't be allowed to create a + //relative path longer than MAX_PATH + Path.Combine(books, isFolder ? workingTemplateText : config.FolderTemplate)); + + folder = Path.GetRelativePath(books, folder); var file = Template == Templates.ChapterFile diff --git a/Source/LibationWinForms/Dialogs/EditTemplateDialog.cs b/Source/LibationWinForms/Dialogs/EditTemplateDialog.cs index d73dc769..3a937855 100644 --- a/Source/LibationWinForms/Dialogs/EditTemplateDialog.cs +++ b/Source/LibationWinForms/Dialogs/EditTemplateDialog.cs @@ -98,11 +98,17 @@ namespace LibationWinForms.Dialogs }; + var books = config.Books; var folder = Templates.Folder.GetPortionFilename( libraryBookDto, - isFolder ? workingTemplateText : config.FolderTemplate); + //Path must be rooted for windows to allow long file paths. This is + //only necessary for folder templates because they may contain several + //subdirectories. Without rooting, we won't be allowed to create a + //relative path longer than MAX_PATH + Path.Combine(books, isFolder ? workingTemplateText : config.FolderTemplate)); + folder = Path.GetRelativePath(books, folder); var file = template == Templates.ChapterFile