| Summary: | Editor toolview state should not be saved per file | ||
|---|---|---|---|
| Product: | [Applications] lokalize | Reporter: | Kisaragi Hiu <mail> |
| Component: | editor | Assignee: | Simon Depiets <sdepiets> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | aacid, fin-w, karl, kishore96, shafff |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/sdk/lokalize/-/commit/cf7492fa762dcabbe97423195282f74a06e3e621 | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
|
Description
Kisaragi Hiu
2025-04-20 06:01:52 UTC
Thanks for reporting. There are two things at play here: state saving per editor / file, and a default state used when there is no data saved for the editor state, which should correspond to the state of the last used editor. The second aspect is broken. But you're saying you think there should be only one layout state that all editor tabs follow? Meaning all open tabs use the same layout, tabs when reopened use the same layout...? I concur with the original reporter that as a translator, I expect the editor state (shown toolviews and panel sizes) to be saved globally, and not per file. The per-file saving was so unexpected that I initially assumed the state was not being saved at all. (In reply to fin-w from comment #1) > Thanks for reporting. There are two things at play here: state saving per > editor / file, and a default state used when there is no data saved for the > editor state, which should correspond to the state of the last used editor. > The second aspect is broken. I don't understand this. Where can I configure the default state? All changes I make through 'Settings > Toolviews' or by dragging the panes seem to be saved per file, while the 'default state' appears to be whatever I configured prior to upgrading to 25.04.0. (In reply to Kishore Gopalakrishnan from comment #3) > I concur with the original reporter that as a translator, I expect the > editor state (shown toolviews and panel sizes) to be saved globally, and not > per file. The per-file saving was so unexpected that I initially assumed the > state was not being saved at all. To elaborate on this, I can see some people wanting to save the configuration per project, but per file seems like something no one would want. My recommendation would be to make the configuration apply either per project or globally. Thanks for the feedback, this is useful. The default state is internal to the code, and is a fallback state when an editor-specific state can't be found. It can't be manually set as far as I know, it should just work, but I think it's broken (again). The original behaviour was something like: save file states, and save default state to whatever state the last used editor was in. File states are only saved for open files, and are project-specific. Closing a project / closing Lokalize will lose the states of unopen editors (at the project level) that were previously saved and associated with the project. It was a bit buggy and because it lost user config, I've tried to make editor state saving exist independently of projects. Since two people have mentioned this now, I can make it a priority to fix ready for 25.04.1. Sorry for upsetting your workflow. Does a single editor state, that all editor tabs use, sound better? Configure once, open a new editor / new project / close and reopen Lokalize and the editor layout is always the same? The only time editor tabs would look different is if two are open and you make changes to one of them. OR, I can force all to follow any changes made, so even open tabs will stay looking the same. This then locks the translator into one layout for all editor tabs: if that's wanted, then it's simple to implement. If either of you are available for testing / feedback, I'll open an empty merge request now that you can tag yourselves in if you want to help test and give feedback. A possibly relevant merge request was started @ https://invent.kde.org/sdk/lokalize/-/merge_requests/233 (In reply to fin-w from comment #5) > Does a single editor > state, that all editor tabs use, sound better? Configure once, open a new > editor / new project / close and reopen Lokalize and the editor layout is > always the same? The only time editor tabs would look different is if two > are open and you make changes to one of them. OR, I can force all to follow > any changes made, so even open tabs will stay looking the same. This then > locks the translator into one layout for all editor tabs: if that's wanted, > then it's simple to implement. This sounds good to me (including the forced synchronization of all open tabs). > I've tried to make editor state saving exist independently of projects. While is this fine for me personally (because I only have a single project), I am not sure if everyone would feel that way. But I suppose this is a good opportunity to find out if people still want project-specific view configuration. I very much agree that per-file settings are useless. The current/old behaviour has always been annoying. I guess a per-project setting could be useful for *some* people (e.g., use a glossary file pane only for a specific project), but I don’t think it’s very important. I would greatly prefer a ‘lock into one layout for all editor tabs’ behaviour. This is my typical workflow: I open a bunch of PO files (e.g., 10) at once. Then figure out that Lokalize has *again* changed the layout from my preferred setting. I rearrange it to my preference and finish editing the first file. Then I close it and is annoyed that the layout for the *second* file is the ‘old’ layout. Only after finishing all the files and opening new ones are my preferred layout used (until Lokalize decided to ignore it). So having a global layout that is applied to all files and automatically saved would be a great improvement. Any per-project support can always come later (if needed). I share Karl's experience. Open tabs also sharing state would probably be an improvement. Please test this merge request if you are able. If not, tell me what you think, based on the description of behaviour in the merge request. It should be in 25.04.1 so you should see the fix fairly soon. https://invent.kde.org/sdk/lokalize/-/merge_requests/233 Git commit 081c153263e8ad7684208fead066ba586f2a8101 by Finley Watson. Committed on 01/05/2025 at 08:45. Pushed by finw into branch 'master'. Use one global synchronised editor layout across all projects and all editors Completely change the behaviour of the editor tab state management. Editor tabs have widgets associated with them (dock widgets) which can be resized (the editor tab's state). Here the resizing is watched for changes, changes are "debounced" so every pixel change doesn't write to disk, then after 0.5s without resizing occurring, the state is saved to disk meaning reopening Lokalize opens editors with the same layout. The state is also applied to all open editor tabs, meaning they all share the same layout at all times. The glossary widget is moved to `m_glossaryView` in line with the other widgets belonging to the editor tab. Related: bug 503329 M +2 -0 src/CMakeLists.txt M +16 -7 src/editortab.cpp M +5 -0 src/editortab.h M +46 -21 src/lokalizemainwindow.cpp M +3 -1 src/lokalizemainwindow.h A +62 -0 src/resizewatcher.cpp * A +33 -0 src/resizewatcher.h * The files marked with a * at the end have a non valid license. Please read: https://community.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page. https://invent.kde.org/sdk/lokalize/-/commit/081c153263e8ad7684208fead066ba586f2a8101 Git commit cf7492fa762dcabbe97423195282f74a06e3e621 by Finley Watson. Committed on 01/05/2025 at 09:00. Pushed by finw into branch 'release/25.04'. Use one global synchronised editor layout across all projects and all editors Completely change the behaviour of the editor tab state management. Editor tabs have widgets associated with them (dock widgets) which can be resized (the editor tab's state). Here the resizing is watched for changes, changes are "debounced" so every pixel change doesn't write to disk, then after 0.5s without resizing occurring, the state is saved to disk meaning reopening Lokalize opens editors with the same layout. The state is also applied to all open editor tabs, meaning they all share the same layout at all times. The glossary widget is moved to `m_glossaryView` in line with the other widgets belonging to the editor tab. Related: bug 503329 (cherry picked from commit 081c153263e8ad7684208fead066ba586f2a8101) M +2 -0 src/CMakeLists.txt M +16 -7 src/editortab.cpp M +5 -0 src/editortab.h M +46 -21 src/lokalizemainwindow.cpp M +3 -1 src/lokalizemainwindow.h A +62 -0 src/resizewatcher.cpp * A +33 -0 src/resizewatcher.h * The files marked with a * at the end have a non valid license. Please read: https://community.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page. https://invent.kde.org/sdk/lokalize/-/commit/cf7492fa762dcabbe97423195282f74a06e3e621 |