Commit Graph
226 Commits
Author SHA1 Message Date
Guldomanandtakase1121 ea5c1ee628 fix(dirmonitor): avoid calling the change callback multiple times in the same notification (#1824) 2024-06-23 10:08:08 +08:00
Guldomanandtakase1121 214602d17a Update font scale on monitor scale change for RENDERER backend (macOS) (#1650)
* Update font scale on monitor scale change for `RENDERER` backend (macOS)

* fix(renderer): check every font of a fontgroup for scale changes in `update_font_scale`

It is needed because fonts can be reused between groups and outside of them.
So if the first font of a group has already been scaled, we still need to check if the others still needs to be scaled.
2024-06-23 09:02:56 +08:00
Takase e9a40c615f api/system: fix newlines returned by get_clipboard (#1788) 2024-06-21 08:06:44 +08:00
Andrei Vincaandtakase1121 ae4a27c797 Fix BufferSize in g_read for Windows (#1722) 2024-04-15 09:02:00 +08:00
Takase 4ac4f72198 process: fix unitialized variables (#1719)
* process: fix potential unitialized variables

* process: fix brace initializer error on Windows
2024-03-23 20:26:43 +08:00
Takase b856dc371a process: style changes (#1709) 2024-01-21 14:49:35 +08:00
4ae92ae128 Memory fixes (#1705)
* fix: free-before-init in renwin_init_surface when using sdl renderer

`ren->rensurface.surface` presupposes zero-initialized rensurface.
Rensurface was not actually zero-initialized.
It is now.

* fix: heap buffer overflow in process_env_free

`process_env_free` presupposed that it was null-terminated.
Pass length to free instead.

* use calloc instead of memset for zero-init

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>

---------

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>
2024-01-21 14:42:46 +08:00
Takase 311651333a feat(process): allow commands and envs on proces_start (#1477)
* feat(process): allow commands and envs on proces_start

* refactor(process): copy process arguments once whenever possible

Refactors the code to use an arglist type which is just lpCmdline on Windows
and a list in Linux.
The function automatically escapes the command when it is needed, avoiding
a second copy.

This also allows UTF-8 commands btw.

* fix(process): fix invalid dereference

* refactor(process): mark xstrdup as potentially unused

* feat(process): add parent process environment when launching process

* fix(process): fix operator precedence with array operators

* fix(process): fix segfault when freeing random memory

* fix(process): fix wrong check for setenv()

* fix(process): fix accidentally initializing an array by assignment

* fix(process): clear return value if success
2023-12-01 10:12:16 +08:00
Guldomanandtakase1121 bc935906d1 Use x offset to define render command rect in rencache_draw_text (#1618)
* Return x offset for the first character in `ren_font_group_get_width`

* Use x offset to define render command rect in `rencache_draw_text`
2023-11-30 11:45:25 +08:00
Guldomanandtakase1121 c31a8ae0f6 Scale mouse coordinates by window scale (#1630)
* Update window scale on resize

* Scale mouse coordinates by window scale

* Avoid scaling mouse coordinates while using `LITE_USE_SDL_RENDERER`
2023-11-30 11:27:08 +08:00
Guldomanandtakase1121 5c5c77219b Fix dirmonitor sorting issues (#1599)
* Use `PATHSEP` in path-related functions

* Don't stop on digits when getting the common part in `system.path_compare`

* Avoid sorting multiple times in `dirwatch.get_directory_files`

This also fixes the timeout detection in `recurse_pred`.
2023-11-30 09:20:34 +08:00
Guldomanandtakase1121 4adfd44d9f Limit system.{sleep,wait_event} to timeouts >= 0 (#1666)
Otherwise we might wait forever by mistake.
2023-11-29 09:13:12 +08:00
TakaseandGuldoman 5d53b13cf4 fix(dirmonitor): deadlock if error handler jumps somewhere else (#1647)
* fix: deadlock if error handler jumps somewhere else

* docs(dirmonitor): fix wrong data type in error callback

* docs(dirmonitor): clarify coroutines and deadlocks

* docs(dirmonitor): wording

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>

---------

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>
2023-10-24 20:16:52 +08:00
Janandtakase1121 2af3082640 Attach command buffer to Renderer Window (#1472) 2023-08-19 13:29:05 +08:00
Takase 1952848caa fix(process): check for HANDLE_INVALID (#1475) 2023-08-19 12:44:19 +08:00
Janandtakase1121 760271d416 Make system.path_compare more digit-aware (#1474)
This allows a human friendly sorting filenames with numbers in them
So
- asd1
- asd10
- asd2
becomes
- asd1
- asd2
- asd10
2023-08-19 12:44:18 +08:00
Takase 2fe1f52a1f Process API improvements (again) (#1370)
* feat(process): add push_error
* refactor(process): use push_error for better errors
* style(process): consistent error messages
* refactor(process): reimplement process.strerror() with push_error
* refactor(process): implement close_fd only once
* refactor(process): rename process_handle to process_handle_t
* fix(process): prevent errors from a NULL error message
* refactor(process): refactor push_error into 2 functions
* fix(process): fix wrong error message
* fix(process): check if push_error_string actually pushed something
* refactor(process): make error messages descriptive
* fix(process): check for empty table instead of aborting
* refactor(process): make error messages descriptive on Windows
* refactor(process): rename process_stream_handle to process_stream_t
* refactor(process): fix wrong usage of process_handle_t
* fix(process): fix wrong type name
* refactor(process): incoporate kill_list_thread into process_kill_list_t
* refactor(process): make kill_list per-state data
2023-08-19 12:43:57 +08:00
Jefferson Gonzálezandtakase1121 0d0f1b00d9 Fix for api_require wrong macro && conditions (#1465)
This mistake escaped my eyes when reviewing #1437 and causes
some symbols to not be exported, because the preprocessor macros
are expecting multiple LUA versions to evaluate as true at once.
The fix is to replace `&&` with `||`.
2023-08-19 12:42:31 +08:00
Guldomanandtakase1121 d497402c30 Make system.path_compare more case-aware (#1457)
* Use Lua-provided string lengths for `system.path_compare`
* Make `system.path_compare` more case-aware
   Before, strings like `README.md` would be sorted before `changelog.md`, 
   because we only looked at the raw ascii values.
   Now the character case is considered as a secondary sorting key.
2023-08-19 12:41:56 +08:00
Takase fdd6ca3426 Update api_require to expose more symbols (#1437)
* feat(system): update api_require for more symbols
* fix(system): fix missing 5.1 symbols
* fix(system): add more missing symbols
* fix(system): add all symbols
   We got'em this time. I swear.
* fix(system): fix undefined symbols due to conditional compilation
   There is only pain and suffering.
   Turns out some of the symbols are only exported when the options are enabled.
   We need to preprocess the header.
2023-08-19 12:41:56 +08:00
TakaseandGuldoman 84c7bb9de6 Asynchronous process reaping (#1412)
* refactor(process): introduce process_stream_handle separate from process_handle

* feat(process): introduce process_handle helper functions

* feat(process): add asynchronous process reaping

* feat(process): wait for shorter period if possible

* style(process): remove unecessary brackets

* style(process): fix parentheses

* refactor(process): remove useless setvbuf call

* style(process): remove unecessary value

* refactor(process): add size field into kill_list

* refactor(process): use SDL_Delay for sleeping

* style(process): remove trailing whitespace

* fix(main): destroy window before closing lua

* fix(process): check for timeout correctly

* refactor(process): remove unecessary if check

* refactor(process): remove size from the list

* fix(process): fix invalid delay calculation

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>

---------

Co-authored-by: Guldoman <giulio.lettieri@gmail.com>
2023-08-19 12:38:49 +08:00
Guldomanandtakase1121 1d0725f904 Improve text width calculation precision (#1408)
In some extreme cases (~30000 chars) text width precision takes a hit.
Using double instead of float fixes that.
2023-08-19 12:38:35 +08:00
Takase b95fdfcf5f fix: exec() error not returned to parent (#1363)
* fix: exec() error not returned to parent

* chore: remove accidental lua.h inclusion
2023-08-19 12:37:20 +08:00
Janandtakase1121 a951c3cd39 pass RenWindow by argument (#1321)
* pass RenWindow to all renderer functions that need it

* pass RenWindow to all rencache functions that need it
2023-08-19 12:30:41 +08:00
Adam Harrisonandtakase1121 4c18cf6744 Updated dummy method signature to match prototypes. 2023-08-19 12:28:48 +08:00
Guldomanandtakase1121 a9d8f12cb7 Make empty groups in regex.gmatch return their offset (#1325)
This makes `regex.gmatch` behave like `string.gmatch`.
2023-08-19 12:28:47 +08:00
Janandtakase1121 c8afe3d1bf replace uses of SDL_Window with RenWindow (#1319)
Since Renwindow contains our instance of SDL_Window we can use this
to simplify future logic to create separate window instances
2023-08-19 12:28:21 +08:00
Janandtakase1121 f5a224999a defer lua error until after cleanup (#1310) 2023-08-19 12:28:20 +08:00
Julien Voisinandtakase1121 d86413cc30 Don't set a value twice (#1306) 2023-08-19 12:28:19 +08:00
Julien Voisinandtakase1121 d755fa6fba Make api_require's nodes const (#1296) 2023-08-19 12:28:18 +08:00
Takase 69ce580970 do not allow users to create an empty font group (#1303) 2023-08-19 12:28:18 +08:00
jgmdev 79908baed6 regex: properly call pcre2_jit_compile 2022-12-28 19:40:20 -04:00
Quinten KockandGitHub 3fda8c0a09 Fix userdata APIs for Lua 5.4 in native plugin interface (#1188)
* Reintroduce some missing Lua API's from native plugin API

* Add new upvalue functions to header

* Fix things that are actually macros in current lua

* Introduce lua_insert,replace,remove macros from lua5.4
2022-12-27 23:39:28 -05:00
Jefferson GonzálezandGitHub 141d00795c dirmonitor: use pipes on fsevents (#1274)
As suggested by Guldoman this change introduces the usage
of pipes to allow blocking the get changes call until any
file system changes are received, which now properly reduces
the cpu usage on idle to 0%.

This change better fixes #1237
2022-12-27 23:07:12 -04:00
Jefferson GonzálezandGitHub 5fa7dabd34 dirmonitor: fix high cpu usage, fixes #1237 (#1271) 2022-12-27 18:23:39 -05:00
GuldomanandGitHub c29b1c2cb9 Use Lua string length instead of relying on strlen (#1262)
This allows us to render `NULL` byte sequences and not truncate strings 
that contain them.
2022-12-26 13:49:07 -04:00
jgmdev 0ab7fe9311 core regex: use backward compatible lua_newuserdata 2022-12-21 00:54:12 -04:00
GuldomanandGitHub 24179bbb23 Merge pull request #1245 from Jan200101/PR/touch-event
add touch events
2022-12-21 00:13:52 +01:00
JanandGitHub b584f1fe35 Simplify SDL message boxes (#1249)
It has what we needs and needs less abstraction, overall simplifying the code
2022-12-20 18:36:18 -04:00
Jefferson GonzálezandGitHub 3c64c32379 core: ported regex.gsub to faster native version (#1233)
* added regex.gmatch iterator and other fixes
* fixed issues reported by Guldoman
* push strings with fixed len just in case for binary safety
* added limit to regex.gsub and use pushinteger
* added description to regex.gsub limits param
* replaced substitutions regex description for correctness
* ignore negative limits on regex.gsub
2022-12-20 17:46:37 -04:00
Jan200101 b137d77183 add touch events 2022-12-20 09:30:58 +01:00
Adam Harrison 5ab8dc0275 Converted from bytes to characters, as this is what windows is expecting. 2022-12-18 14:49:59 -05:00
Delta-officialandGitHub 5db5512663 Fix native plugins not reloading upon core:restart (#1219)
* Fix native plugins not reloading upon core:restart

* Move the metatable name definition to api.h

* Replace metatable name with const
2022-12-02 17:06:35 -05:00
TakaseandGitHub 2e186a746d better error messages for checkcolor (#1211) 2022-11-30 01:38:35 -04:00
TakaseandGitHub 4107b0c3fe MSVC Support (#1199)
* fix stdalign and min/max for MSVC
* add missing ISREG and ISDIR for MSVC
* use MAX_PATH instead of PATH_MAX
* remove unecessary headers inclusion
* add MSVC CI
* add appropriate macros to platform detection
* re-add msvc CI artifacts
* upload the generated artifacts
* patch lua for MSVC CI builds
* update patch for MSVC compatibility
2022-11-15 23:23:45 -04:00
JanandGitHub 56e465c351 dirmonitor: give kevent a timeout so it doesn't lock forever (#1180) 2022-11-05 20:00:32 -04:00
AdamandGitHub 9951e785b6 Getting ready for 2.1. (#1181)
* Getting ready for 2.1.

* Fixed version.

* Year.

* Manually added line as takase said to.

* Fixed minor issue at takase's behest.

* Dunno where that went.

* Updated to use a function pointer.

* OK, as discussed, adding this manually for now.

* Updated SDL.
2022-11-02 03:38:58 +01:00
jgmdev 1708462f4c core renderer: fixed small issue introduced on #1145 2022-10-19 21:11:29 -04:00
GuldomanandGitHub 6b754eb628 Refactor scrollbar into its own file (#1124)
* Move scrollbar to its own file
* Don't call `Scrollbar` functions if `View` is not scrollable
* Allow horizontal scrolling in `Scrollbar`
* Add horizontal scrollbar to `View`
* Add `root:horizontal-scroll` command with `shift+wheel` keymap
* Prioritize vertical scrollbar hover
* Don't send mouse movement to vertical scrollbar when dragging horizontal one
* Fix clicking on horizontal scrollbar track
* Implement `start` scrollbar alignment
* Add documentation to `Scrollbar`
* Make `DocView` infinitely scrollable horizontally
* Handle horizontal scroll SDL event
2022-10-15 20:12:15 -04:00
GuldomanandGitHub 5c2c95765e Add IME support (#991) 2022-10-15 19:58:51 -04:00