Only a couple trivial features from meson ~0.50 were being used, and
none of them are really needed:
- configure_file() with the install kwarg has always defaulted to
inferring its value from whether an install_dir was defined. This is
fine, we don't need to set `install: true` in that case. The kwarg was
only even added to meson 0.50 for consistency and to allow
conditionally overriding the file to not install, even when
install_dir is set. This project does not need that feature.
- path building could historically be done with the join_paths()
function. Recent versions of meson (0.49) added cosmetic sugar in the
form of string operator overloading to allow using the division
operator on two strings. By removing this and using the backwards
compatible form, we can support older versions of meson.
- sdl2 dependency lookup with hardcoded config-tool method is very
opinionated about the correct way to look up sdl2, but meson can try
multiple methods if you permit it, and there is no reason to think
that config-tool is the only one that returns correct results.
By removing these features, the minimum can be dropped all the way down
to a version that is available on the oldest supported versions of
Ubuntu (18.04), Debian (oldoldstable / Stretch) and anywhere else of
consequence.
No features of 0.54 are being used, so 0.50 should be perfectly fine.
This drops the minimum requirement down to a version available in the
latest Ubuntu LTS (20.04), which only has 0.53
The NagView takes some actual space in the Y and when it appears
it cause the documents' content to be displaced.
The movement of the documents' content is annoying and should be
avoided so we draw the NagView entirely in overlay mode using defer
draw and we always keep its y size to zero to don't affect the
other application contents.
Changes in project's module required an application restart to work.
Now the project will be re-scanned when the project's module changes.
In addition ensure borderless window config is changed when changed
in user's preferences.
It is not a good practice to keep a reference to the project's
directory object outside of the "core" module itself.
The TreeView was using such a reference in the cache item for each
file or directory entry. Replace the reference to the object with
the absolute name of the project directory.
Address issue:
https://github.com/lite-xl/lite-xl/issues/689
Attempt to provide a more accurate fix to commit:
59f64088e1
For this latter what happens is that any change inside a directory
cause the corresponding entry to be folded in the TreeView.
The new change is more accurate because we remove only the stale
entry corresponding to the delete event and we do not reset the
cache of the parent directory using the modify event.
Fix a conspicuous omission to call the dmon_unwatch function
when changing project directory.
This uncovered a bug or a quirk of the dmon library where the watch_ids
can change as a result of calling dmon_unwatch because they are just
indexes on a contiguous array. Use a workaround to always unwatch the
first valid watch_id N times.
Address issue:
https://github.com/lite-xl/lite-xl/issues/689
Attempt to provide a more accurate fix to commit:
59f64088e1
For this latter what happens is that any change inside a directory
cause the corresponding entry to be folded in the TreeView.
The new change is more accurate because we remove only the stale
entry corresponding to the delete event and we do not reset the
cache of the parent directory using the modify event.
The function "file_search" in core.init was sometimes giving a wrong index
value, off by one.
The problem happened for example when the entry to search was "less than"
the first entry, the function returned a value of two instead of one as
expected.
The bug was easily observed creating a new directory with a name that comes
as the first in alphabetical order within the project.