From 33b2f514fba22c7efc8873084549008a33e25a53 Mon Sep 17 00:00:00 2001 From: Mario Pietsch Date: Wed, 4 Feb 2026 13:41:40 +0100 Subject: [PATCH] Allow title, tags, text as focus for editing existing tiddlers (#9214) * Allow title, tags, text as focus for editing existing tiddlers * Add release note * Update description field * refresh select widget, it .default parameter is changed * remove default variable, because it is not needed anymore. select widget refresh handling deals with it * Undo select widget changes --- core/language/en-GB/ControlPanel.multids | 1 + core/ui/ControlPanel/Basics.tid | 1 + core/ui/EditTemplate/body-editor.tid | 2 +- core/ui/EditTemplate/fields.tid | 2 +- core/ui/EditTemplate/title.tid | 6 +++++- core/ui/EditTemplate/type.tid | 19 +++++++++++++++++-- core/wiki/macros/tag-picker.tid | 2 +- core/wiki/minifocuseditswitcher.tid | 8 ++++++++ .../5.4.0/#9214 - configure-edit-focus.tid | 12 ++++++++++++ 9 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 core/wiki/minifocuseditswitcher.tid create mode 100644 editions/tw5.com/tiddlers/releasenotes/5.4.0/#9214 - configure-edit-focus.tid diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index ce0a5b3cf..28534bd1e 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -6,6 +6,7 @@ Appearance/Caption: Appearance Appearance/Hint: Ways to customise the appearance of your TiddlyWiki. Basics/AnimDuration/Prompt: Animation duration Basics/AutoFocus/Prompt: Default focus field for new tiddlers +Basics/AutoFocusEdit/Prompt: Default focus field for existing tiddlers Basics/Caption: Basics Basics/DefaultTiddlers/BottomHint: Use [[double square brackets]] for titles with spaces. Or you can choose to {{retain story ordering||$:/snippets/retain-story-ordering-button}} Basics/DefaultTiddlers/Prompt: Default tiddlers diff --git a/core/ui/ControlPanel/Basics.tid b/core/ui/ControlPanel/Basics.tid index f494c2af6..06e366248 100644 --- a/core/ui/ControlPanel/Basics.tid +++ b/core/ui/ControlPanel/Basics.tid @@ -18,6 +18,7 @@ caption: {{$:/language/ControlPanel/Basics/Caption}} |<$link to="$:/config/NewTiddler/Tags"><> |<$vars currentTiddler="$:/config/NewTiddler/Tags" tagField="text">{{||$:/core/ui/EditTemplate/tags}}<$list filter="[tags[]] +[limit[1]]" variable="ignore"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><><$action-listops $tiddler=<> $field="text" $subfilter={{{ [get[tags]] }}}/><$action-setfield $tiddler=<> tags=""/> | |<$link to="$:/config/NewJournal/Tags"><> |<$vars currentTiddler="$:/config/NewJournal/Tags" tagField="text">{{||$:/core/ui/EditTemplate/tags}}<$list filter="[tags[]] +[limit[1]]" variable="ignore"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><><$action-listops $tiddler=<> $field="text" $subfilter={{{ [get[tags]] }}}/><$action-setfield $tiddler=<> tags=""/> | |<$link to="$:/config/AutoFocus"><> |{{$:/snippets/minifocusswitcher}} | +|<$link to="$:/config/AutoFocusEdit"><> |{{$:/snippets/minifocuseditswitcher}} | |<> |{{$:/snippets/minilanguageswitcher}} | |<> |<> | |<> |<> | diff --git a/core/ui/EditTemplate/body-editor.tid b/core/ui/EditTemplate/body-editor.tid index 374567acd..4aca7b58f 100644 --- a/core/ui/EditTemplate/body-editor.tid +++ b/core/ui/EditTemplate/body-editor.tid @@ -8,7 +8,7 @@ title: $:/core/ui/EditTemplate/body/editor class="tc-edit-texteditor tc-edit-texteditor-body" placeholder={{$:/language/EditTemplate/Body/Placeholder}} tabindex={{$:/config/EditTabIndex}} - focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}} + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[text]then[true]] ~[{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}} cancelPopups="yes" fileDrop={{{ [{$:/config/DragAndDrop/Enable}match[no]] :else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]] }}} diff --git a/core/ui/EditTemplate/fields.tid b/core/ui/EditTemplate/fields.tid index dfa36c9ae..8a09f74db 100644 --- a/core/ui/EditTemplate/fields.tid +++ b/core/ui/EditTemplate/fields.tid @@ -114,7 +114,7 @@ tags: $:/tags/EditTemplate class=`tc-edit-texteditor tc-popup-handle ${ [get[text]] :intersection[fields[]] :then[[tc-edit-field-exists]] }$` configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" default="" - focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[fields]then[true]] :else[{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} focusPopup=<> inputAcceptVariantActions=<> inputCancelActions=<> diff --git a/core/ui/EditTemplate/title.tid b/core/ui/EditTemplate/title.tid index 5228ad7c0..2963aa7cb 100644 --- a/core/ui/EditTemplate/title.tid +++ b/core/ui/EditTemplate/title.tid @@ -2,7 +2,11 @@ title: $:/core/ui/EditTemplate/title tags: $:/tags/EditTemplate \whitespace trim -<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/> +<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[title]then[true]] ~[{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} + tabindex={{$:/config/EditTabIndex}} + cancelPopups="yes" +/> <$vars pattern="""[\|\[\]{}]""" bad-chars="""`| [ ] { }`"""> diff --git a/core/ui/EditTemplate/type.tid b/core/ui/EditTemplate/type.tid index eae2ebfee..37e0380ec 100644 --- a/core/ui/EditTemplate/type.tid +++ b/core/ui/EditTemplate/type.tid @@ -4,13 +4,28 @@ first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[d \procedure lingo-base() $:/language/EditTemplate/ \procedure input-cancel-actions() <$list filter="[get[text]] [get[type]] :and[limit[1]]" emptyMessage="""<>"""><$action-sendmessage $message="tm-remove-field" $param="type"/><$action-deletetiddler $filter="[] [] []"/> + \whitespace trim <$set name="refreshTitle" value=<>>
<>
-
<$fieldmangler> -<$transclude $variable="keyboard-driven-input" tiddler=<> storeTitle=<> refreshTitle=<> selectionStateTitle=<> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle tc-keep-focus" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] :else[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<>/><$button popup=<> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}<$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[] [] [] []"/> +
+<$fieldmangler> +<$transclude $variable="keyboard-driven-input" tiddler=<> storeTitle=<> refreshTitle=<> + selectionStateTitle=<> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} + focusPopup=<> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle tc-keep-focus" + tabindex={{$:/config/EditTabIndex}} + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[type]then[true]] :else[{$:/config/AutoFocus}match[type]then[true]] :else[[false]] }}} + cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" + inputCancelActions=<> +/> + <$button popup=<> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}> + {{$:/core/images/down-arrow}} + + <$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}> + {{$:/core/images/delete-button}}<$action-deletetiddler $filter="[] [] [] []"/> +
diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid index 1c420e963..5227c5063 100644 --- a/core/wiki/macros/tag-picker.tid +++ b/core/wiki/macros/tag-picker.tid @@ -118,7 +118,7 @@ The second ESC tries to close the "draft tiddler" focusPopup=<> class="tc-edit-texteditor tc-popup-handle" tabindex=<> - focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] :else[[false]] }}} + focus={{{ [{!!draft.of}is[tiddler]then{$:/config/AutoFocusEdit}match[tags]then[true]] :else[{$:/config/AutoFocus}match[tags]then[true]] :else[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} cancelPopups=<> configTiddlerFilter="[[$:/core/macros/tag-picker]]" diff --git a/core/wiki/minifocuseditswitcher.tid b/core/wiki/minifocuseditswitcher.tid new file mode 100644 index 000000000..be94d26e3 --- /dev/null +++ b/core/wiki/minifocuseditswitcher.tid @@ -0,0 +1,8 @@ +title: $:/snippets/minifocuseditswitcher + +\whitespace trim +<$select tiddler="$:/config/AutoFocusEdit" default={{$:/config/AutoFocus}}> +<$list filter="title tags text"> + + + \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9214 - configure-edit-focus.tid b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9214 - configure-edit-focus.tid new file mode 100644 index 000000000..5fd013737 --- /dev/null +++ b/editions/tw5.com/tiddlers/releasenotes/5.4.0/#9214 - configure-edit-focus.tid @@ -0,0 +1,12 @@ +change-category: usability +change-type: bugfix +created: 20260125065754439 +description: Allow title, tags, text as initial focus for editing existing tiddlers +github-contributors: pmario +github-links: https://github.com/TiddlyWiki/TiddlyWiki5/pull/9214 +modified: 20260125065921915 +release: 5.4.0 +tags: $:/tags/ChangeNote +title: $:/changenotes/5.4.0/#9214 +type: text/vnd.tiddlywiki +