Commit Graph

5220 Commits

Author SHA1 Message Date
WerWolv
fc87bc0cf1 impr: Allow events to be used with a function without args 2025-05-10 11:00:18 +02:00
peelz
1f213408a1 build: Move nlohmann-json to build dependencies (#2218)
nlohmann-json is a headers-only library, so there's no runtime
requirement for it.
2025-05-10 10:59:18 +02:00
WerWolv
bac6fd803f patterns: Updated pattern language 2025-05-09 21:18:31 +02:00
WerWolv
5a74d7e3e2 patterns: Updated pattern language 2025-05-09 19:35:00 +02:00
WerWolv
e289380c39 fix: Crash when selecting invalid time_t 2025-05-09 19:33:01 +02:00
WerWolv
8081dff6b6 build: Updated libfmt (#2234) 2025-05-09 19:00:04 +02:00
WerWolv
7dcf09118b patterns: Updated pattern language 2025-05-09 18:24:50 +02:00
WerWolv
4b9a3d121d fix: Visualizer popups being draggable from their body 2025-05-09 17:23:55 +02:00
WerWolv
cd24cba240 build: Updated libwolv 2025-05-09 17:23:35 +02:00
paxcut
d33fad9d23 fix: The bar between pattern editor and console could be locked even if it seemed like it should be movable. (#2227)
This was caused by the variable that holds the bar location not being
updated when window was resized.
The bar can be moved until only one line is shown in the smaller window.
When ImJex window is resized, the proportion of editor/console height is
maintained.
2025-05-05 02:43:14 -07:00
paxcut
b02aa51e09 fix: macos builds
Found post on s.o. about c++ headers not being found when using llvm
clang installed using homebrew
[here](https://stackoverflow.com/questions/77250743/mac-xcode-g-cannot-compile-even-a-basic-c-program-issues-with-standard-libr)
and when I tested the proposed solution in my imhex fork the macos x86
builds were able to complete.
2025-05-04 21:19:29 -07:00
ThePirate42
36eeee5f9c fix: prevent potential UB using std::clamp.
### Problem description
It is possible for the maximum and minimum value arguments to std::clamp to be swapped which is defined  in the standard as undefined behavior

### Implementation description
Swap the values if necessary.


---------

Co-authored-by: paxcut <53811119+paxcut@users.noreply.github.com>
2025-05-04 17:24:59 -07:00
paxcut
4883ed0e5a fix: Incorrect horizontal scrollbar displayed. (#2209)
The horizontal scroll bar length is set using the maximum line length across the input file. The original setup had the lengths of imported and included files added so changes are made to insure that only changes from the input file are taken. This required changes to the Pattern Language library so the library is updated to the latest version as well.
2025-05-04 07:56:39 -07:00
paxcut
78ad0d2592 fix: fixed console selections while improving code clarity.
The function SetSelection() in the text editor is used as its name implies to set the part of text that will be shown highlighted as a selection. It has two parameter for the selection start and end.

Strangely it also uses a third argument to choose one of 3 selection modes (line, word and normal). This is strange because it seems that if one wanted to select a line one would simply choose the line start and end as the selection values. 

Furthermore using selection mode creates a bug when the word boundaries are advanced twice during a single word left or right selection and a second bug when SetSelection is used to set the cursor when the window acquires focus breaking selections in the console editor.

This PR simply eliminates the extraneous argument to SetSelection() ensuring that any problems related to it are fixed once and for all improving code readability by removing the use of inconsistent argument values to cover for the functionality  duplication design flaw.
2025-04-30 22:08:23 -07:00
SparkyTD
f6def74b29 impr: Fix word bound selection and 'MoveHome' behavior in the pattern editor (#2193)
### Problem description
This PR addresses two small issues regarding the cursor in the pattern
editor (TextEditor.cpp):

1. It was not possible to move the cursor to the start of a line, if it
contained leading white space characters. With my fix, the editor will
behave more like other code editors. Pressing Home once will jump to the
first non-whitespace character (as it did before), but pressing it again
will jump to column 0. Subsequent presses will alternate between the two
positions.
2. When expanding a selection with Ctrl+Shift+{Left/Right}, the new
selection position would skip an additional word, resulting in the
cursor landing "inside" the selection. This PR fixes this bug.

### Implementation description
1. To fix the first issue, I simply added a condition in
`TextEditor::MoveHome` to check if the cursor is already on the first
meaningful character, or on one of the whitespaces preceding it, in
which case the jump offset is set to 0. If we're already on column 0,
then jump forwards to the first non-whitespace character.
2. This bug was happening because the word boundary jump calculations
were essentially happening twice. Once in
`TextEditor::MoveLeft`/`TextEditor::MoveRight`, and then a second time
in `TextEditor::SetSelection`, leading to the selection skipping an
additional word. I fixed this by replacing the ternary operator with
just `SelectionMode::Normal`.

---------

Co-authored-by: paxcut <53811119+paxcut@users.noreply.github.com>
2025-04-30 11:57:34 -07:00
Geky
be44676b01 i18n: Added french translation (#2171) 2025-04-24 11:14:41 +02:00
paxcut
60c1c22a73 fix: fixes Issue #1621 (#2189)
fixes Issue #1621.
Using shift-tab on an empty line caused a crash.  Additionally, changed
the hard coded value of 4 to the tab size variable it really needs to be.
2025-04-23 06:54:39 -07:00
WerWolv
02cadc264e build: Try to use macOS 13 SDK if possible 2025-04-14 20:42:37 +02:00
WerWolv
a0ca5b8072 fix: Missing include on clang 20 2025-04-14 20:21:53 +02:00
WerWolv
31fdb73b0e git: Remove --no-lock from brew commands since it was removed 2025-04-14 19:02:07 +02:00
WerWolv
d2caa1859d fix: LayoutManager build issues 2025-04-09 07:26:45 +02:00
PietHelzel
f6c25b30ae fix: Saving layout now picks the first path in the list (#2208)
<!--
Please provide as much information as possible about what your PR aims
to do.
PRs with no description will most likely be closed until more
information is provided.
If you're planing on changing fundamental behaviour or add big new
features, please open a GitHub Issue first before starting to work on
it.
If it's not something big and you still want to contact us about it,
feel free to do so !
-->

### Problem description
Saving a layout using the "Workspace -> Layout -> Save Layout ..."
button saved to the last writable path in the list that can be found in
the "Help -> About" menu. Instead, it should write to the first working
path encountered.

### Implementation description
Getting all of the writable paths, then picking the first one.

### Screenshots
<!-- If your change is visual, take a screenshot showing it. Ideally,
make before/after sceenshots -->

### Additional things
<!-- Anything else you would like to say -->
2025-04-08 21:47:20 +02:00
WerWolv
379d826f18 build: Fix configure issues with cmake 4.0.0 2025-04-04 00:02:39 +02:00
WerWolv
96afccc46c fix: Workspaces not being updated correctly 2025-04-03 23:55:35 +02:00
paxcut
c0a222644b feat: Allow adding breakpoints in pattern editor by clicking on line numbers (#2161)
Now that line numbers are not part of the line of code clicking them
makes the text editor lose focus. This PR changes that by allowing the
user to toggle breakpoints by clicking the field where the line number
is located.

Not only will the text editor retain focus when breakpoints are set, but
if other parts of ImHex had focus, then it will be transferred to the
text editor's current cursor position when the line number field is
clicked.

It is also possible to keep the focus where it was and only retain the
focus if the text editor was focused when the break point is set. The
change is very trivial so if that is preferred I can easily switch it.
2025-03-11 14:57:49 +01:00
paxcut
653173945f feat: Make undo work when importing pattern (#2160)
A user complained that they imported a file by accident when they meant
to export it and as a result had trouble recovering the changes they
were trying to save. Auto-save saved the day but there is no reason for
not being able to undo changes after importing a pattern.

In fact, the previous implementation treated importing a pattern as a
reset on the editor instance which actually erased all previous undo
entries. Importing now is treated as a normal editing operation where
the entire file is replaced with the imported pattern.
Since all imports use AddText it was easy to add an undo entry to that
function while removing the part where the previous undo records were
being deleted.

Care is taken to add the preprocessed version of the imported file to
the undo buffer so that unwanted chars don't sneak in. A bug was found
in the handling of a tab char as well but hopefully it wont need to be
used anymore.
2025-03-11 14:56:44 +01:00
paxcut
7d09cc6d25 fix: Console editor not showing all output (#2133)
This change is to fix a bug reported in discord by berkus and Naheulf
about the console missing output lines. The bug was caused by using
SetText which replaces the existing text with the text in the argument.

To fix it use InsertText which puts the text at the current cursor
position that was already set to the end of the current contents.

Code was tested with pattern used to reproduce the bug and seemed to
work when evaluated repeatedly.
2025-03-11 14:56:05 +01:00
Stefan
a4360dfe76 lang: Use ß in German translation where needed (#2135) 2025-03-11 14:55:12 +01:00
WerWolv
9887117e7a build: Updated disassembler library 2025-03-03 15:41:04 +01:00
xtex
9be7eafa39 build: Find regex component of Boost explicitly (#2151)
'Boost::regex' could not be found unless regex is specified explicitly
on some systems.

cf. https://github.com/AOSC-Dev/aosc-os-abbs/pull/9798
cc. @chenx97

### Problem description
> Target "libimhex" links to: Boost::regex but the target was not found.
when building ImHex with system Boost.

### Implementation description
Add `COMPONENETS regex` to require regex library explicitly.

Signed-off-by: xtex <xtex@aosc.io>
Co-authored-by: Henry Chen <chenx97@aosc.io>
2025-02-28 12:29:39 +01:00
WerWolv
774eb18a42 impr: Make custom disassemblers reload on run 2025-02-28 12:04:47 +01:00
WerWolv
4e582d02f5 fix: More issues with OpenGL texture deallocation 2025-02-27 21:44:42 +01:00
WerWolv
38d11dacb7 fix: Crash when choosing Edit -> Disassemble Selection without ever opening disassembler view
Fixes #2149
2025-02-27 08:45:24 +01:00
WerWolv
e17490ee04 build: Install updater binary into bundle on macOS 2025-02-27 08:44:32 +01:00
WerWolv
f3a9ca6d6f fix: Only try to delete textures if OpenGL is still available 2025-02-26 16:03:37 +01:00
WerWolv
2653740a36 fix: Wrong scripts menu rendering on macOS with OS menu bar enabled 2025-02-26 16:03:29 +01:00
WerWolv
335042ec08 impr: Reduce CPU usage further 2025-02-26 16:03:24 +01:00
WerWolv
f6944b15f3 fix: Large CPU usage 2025-02-26 16:03:16 +01:00
WerWolv
d7960dccb4 fix: ID collision when having duplicate fonts installed
Fixes #2141
2025-02-25 11:52:46 +01:00
WerWolv
c974c4257d fix: Crash on exit due to frame rate limiter thread not being shut down
Fixes #2140
2025-02-25 11:50:38 +01:00
WerWolv
40d74dd633 fix: Crashes when switching disassembler architecture while disassembling 2025-02-24 19:58:40 +01:00
WerWolv
602c85b57d fix: Way too low sleep target fps 2025-02-24 19:53:07 +01:00
WerWolv
f96fa596b3 fix: Debug assertion 2025-02-24 19:52:41 +01:00
WerWolv
8c13d0096e build: Remove wrong hexpluglib bundling from rpms 2025-02-23 21:08:22 +01:00
WerWolv
7879f8b6a4 impr: Don't wake up frame rate limiter thread more often than necessary 2025-02-23 20:25:29 +01:00
WerWolv
4c0e8bc1d6 build: Disable fortify source in debug builds 2025-02-23 20:24:10 +01:00
WerWolv
6644df3958 build: Make sure plugin libraries don't end up in lib folder 2025-02-20 11:29:39 +01:00
WerWolv
2b5551d719 fix: Crash when closing provider that's open in the diff view 2025-02-20 10:34:59 +01:00
Jonathan Wright
137063dd21 build: Fix using system lunasvg (#2131)
Fix capitalization for cmake find_package and lunasvg.h path
2025-02-19 20:42:22 +01:00
WerWolv
ca403869ab fix: Broken Plugin API link 2025-02-19 14:46:01 +01:00