1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-13 03:25:17 +00:00
Commit graph

2767 commits

Author SHA1 Message Date
Matthew Kilgore d8a3ec75fd Run tests with -O2
Since we do allow users to use optimization, it's worth running our
tests with it to verify at least those work.
2022-11-19 01:55:20 -05:00
Matthew Kilgore b066c641f4 Add the libcurl license 2022-11-19 01:55:20 -05:00
Matthew Kilgore 1eec789114 Specify the XCode SDK version 2022-11-18 01:50:28 -05:00
Matt Kilgore ba6e5f6438
Merge pull request #246 from mkilgore/add-libcurl-to-repo
Add libcurl to the repository
2022-11-17 22:31:44 -05:00
Matthew Kilgore 34a7df535e Add libcurl to the repository
This copy is used for building on Windows. For Linux and OS X we used
the system-provided copy.
2022-11-17 22:03:41 -05:00
github-actions[bot] 5e3fa2d6c2 Automatic update of ./internal/source 2022-11-16 06:19:29 +00:00
Matt Kilgore 249750bcbd
Merge pull request #249 from mkilgore/release-3.4.1
Version 3.4.1
2022-11-16 01:01:20 -05:00
Matthew Kilgore 1aac3b1955 Version 3.4.1 2022-11-15 23:47:34 -05:00
github-actions[bot] de63331a19 Automatic update of ./internal/source 2022-11-16 04:41:13 +00:00
Matt Kilgore 0cfb01c6bb
Merge pull request #247 from SteveMcNeill/main
Swap in Optional New Load File Dialog
2022-11-15 23:24:33 -05:00
Matt Kilgore 4ff9edbf9d
Merge branch 'main' into main 2022-11-15 22:55:06 -05:00
Matthew Kilgore 65cfbda3b7 Rename 'New Dialogs' to 'GUI Dialogs', Persist setting
The 'New Dialogs' menu option was renamed to 'GUI Dialogs' to better
explain what it does. Additionally the setting of which dialogs to use
is saved to the config.ini file so that it presists across multiple runs
of QB64-PE.
2022-11-15 22:21:29 -05:00
Matt Kilgore bd6ad5fde6
Merge pull request #248 from mkilgore/fix-password-inputbox
Fix password handling in _InputBox$ on Windows
2022-11-15 21:04:30 -05:00
Matthew Kilgore a28342be99 Fix password handling in _InputBox$ on Windows
We were incorrectly treating the empty string and NULL the same and
using a password dialog for both. It now has the correct behavior of
displaying the password when provided the empty string, but just
displaying a blank input box when provided NULL.
2022-11-14 20:23:41 -05:00
SteveMcNeill 2147911ec3 Swap in Optional New Load File Dialog
And without screwing up the keyword casing this time!  ;)
2022-11-14 17:47:27 -05:00
Samuel Gomes 884ff158ff
Merge pull request #243 from a740g/setup-win-enhancements
setup_win enhancements
2022-11-14 23:00:09 +05:30
Samuel Gomes 0dd825e5f3 Add -static-libgcc -static-libstdc++ to TEST_CFLAGS-$(win) 2022-11-14 12:15:51 +05:30
Samuel Gomes cb14a3d4d7
Merge branch 'main' into setup-win-enhancements 2022-11-14 09:54:13 +05:30
Samuel Gomes 2cd889f0ec Update .ci/bootstrap.bat to use setup_mingw.cmd 2022-11-14 09:53:58 +05:30
Matt Kilgore 855eaac864
Merge pull request #245 from mkilgore/dialog-fixes
Improve dialog window association and _InputBox$ support on Windows
2022-11-13 15:41:24 -05:00
Matthew Kilgore e6964dfc69 Include stdint.h on Windows, change integer defines to use them
It seems we weren't including stdint.h on Windows by mistake. Likely we
were getting it anywy from some other header, but it sounds like that
got changed in newer versions of MinGW and either way we shouldn't rely
on that.

Being that we include stdint.h on all platforms, I also changed os.h to
always use these types when defining the `int32` and friends sized
types. Ideally we get rid of those defines in the future but we can at
least use the stdint.h types going forward (as we already have).
2022-11-12 19:48:26 -05:00
Matthew Kilgore 1509f85719 Improve _InputBox$ support on Windows
This applies various dialog settings so that the dialog is always on
top, and also so that Tab works as expected to move between the
controls. The Edit control is moved first so that it's focused when the
window appears.
2022-11-12 19:48:17 -05:00
Matthew Kilgore 3f709ba65b Add logic to correctly discover our process's Window
Currently we have two different ways of determining what Window handle
to tie our dialogs too - we either use GetForegroundWindow(), or create
a completely new and hidden handle. The associated window determines
what process names shows up on notifications, and also which window
can't be interacted with while a dialog is open.

Both of those approaches aren't really good. In the case of
GetForegroundWindow(), it just returns whatever window the user has in
focus, which might be a completely different process. With the hidden
window, it means the dialog and notification aren't really tied to the
QB64-PE program, so you can still interact with the window even when a
dialog is open, and the notification doesn't show an exectuable name.

To solve this we're now using EnumWindows() to enumerate over all the
Windows on the system and find one associated with our ProcessId. We
then check if it's the top-level window and return it if it is.

If that process fails to find a window (such as if this is a
console-only program, or $SCREENHIDE is used) then we check if
GetConsoleWindow() gives us a handle and use that.

If neither approach works, then we fall back to creating a hidden window
so that the dialogs can still work.
2022-11-12 19:16:43 -05:00
Samuel Gomes 2229b41e34 Update MINGW download URLs 2022-11-11 18:59:08 +05:30
Matthew Kilgore c5e2be53f9 Swap bmp test images for png
Functionally it doesn't matter what kind of images we store for the
tests, as _LOADIMAGE() will open them exactly the same. png however has
the advantages of being substantially smaller, and also viewable
directly on GitHub in PRs, making them easier to review.
2022-11-09 21:56:44 -05:00
Samuel Gomes 309fc2b732
Merge branch 'QB64-Phoenix-Edition:main' into setup-win-enhancements 2022-11-10 07:27:46 +05:30
Matt Kilgore 4799c9b7d0
Merge pull request #241 from mkilgore/paint-fill-fix
Fix PAINT when border color is not supplied (QB64Official/qb64#38)
2022-11-09 20:39:28 -05:00
Matt Kilgore a85f10e35c
Merge branch 'main' into paint-fill-fix 2022-11-08 21:55:53 -05:00
Samuel Gomes 1150d23a2a
Merge branch 'QB64-Phoenix-Edition:main' into setup-win-enhancements 2022-11-08 23:54:33 +05:30
Matt Kilgore f40bc3acaa
Merge pull request #238 from mkilgore/fix-inputbox-windows
Fix _InputBox$ on Windows to use DialogBoxIndirect, and a few other changes
2022-11-08 13:18:48 -05:00
Matthew Kilgore ac8aac39b7 Use signed type for xdelta and ydelta arrays
I accidentally declared these as uint32_t even though I store -1 in
them. It was working anyway due to the implicit conversion that happens
when adding it to an int32_t, but it should be fixed regardless.
2022-11-08 01:32:05 -05:00
Matthew Kilgore 8005e62402 Add PAINT tile image-based tests 2022-11-08 01:02:22 -05:00
Matthew Kilgore 4f5af8888e Fix PAINT when border color is not supplied
The border color parameter to PAINT is optional, but sub_paint was not
handling that case. What it should do in that situation is keep painting
until it finds pixels that are not the same color as the original
starting pixel was. Instead it would simply assume border color was
valid and paint until it finds color zero (the default parameter value
when it's not provided).

This was originally reported in QB64Official/qb64#2, and Walt
(@TheJoyfulProgrammer) fixed it in QB64Official/qb64#38. Functionally
this is the same change, however I'm checking `passed & 4` to see
whether a border color was provided rather than `bordercol == NULL`.
The later has problems if the provided bordercolor is zero, which is
allowed since zero is a valid color. The `passed` argument indicates
which of the function arguments were actually provided in the QB64
source that called PAINT.

Additionally, along with the `while (true)` loop that Walt changed I
went ahead and removed the duplication of the sections for each
direction. We now just use a couple of arrays to determine which
direction we're checking and loop over all 4.
2022-11-08 00:59:12 -05:00
Matthew Kilgore 90b3bd2662 Address build warnings on tinyfiledialogs.c
A function was made unnecessary but wasn't removed, triggering a
warning. Additionally gcc likes parenthesis around `=` assignments used
for conditions.
2022-11-08 00:49:13 -05:00
Matthew Kilgore 5b238467a9 Use hidden input if defaultText is blank
Fairly simple, this sets the ES_PASSWORD flag when the default text is
blank.

Additionally I fixed the dialog callback to correctly call EndDialog()
rather than DestroyWindow().
2022-11-08 00:49:13 -05:00
Matthew Kilgore 7bf68383d5 Fix warnings, remove unused code in tinyfiledialogs.c 2022-11-08 00:49:13 -05:00
Matthew Kilgore ee9f8e4404 Remove quote checks on Windows
These are the last of the quote checks, these don't require any
associated changes as the underlying Win32 functions already allow
quotes. They were simply added to keep parity with the functionality on
other platforms, that that has since been fixed.
2022-11-08 00:49:13 -05:00
Matthew Kilgore ec0ec10652 Add missing static to char array in tinyfd_openFileDialog
Fairly simple, lBuff is used to return the resulting filename and has to
be static so that it's still valid when the function exits.
2022-11-08 00:49:13 -05:00
Matthew Kilgore 0115029e5e Implement InputBox using DialogBoxIndirect
This removes the VBS based InputBox for Windows and replaces it with a
version that uses DialogBoxIndirect to create the dialog. While it is a
bit more complicated in some respects, it removes any concerns about the
contents of the strings as they're no longer being inserted into the
generated script.

It also has the advantage that it doesn't spawn another process (which
then shows up in the task bar in some situations).

With this changes quote characters are allowed in all of the parameters.
2022-11-08 00:49:13 -05:00
Samuel Gomes a9d29e17d7
Merge branch 'QB64-Phoenix-Edition:main' into setup-win-enhancements 2022-11-08 07:56:48 +05:30
Matt Kilgore f5b24dfdc1
Merge pull request #239 from mkilgore/fix-macos-escaping
Fix osascript escaping on Mac OS
2022-11-07 21:25:24 -05:00
Matthew Kilgore f73a1da97d Fix osascript escaping on Mac OS
Escaping the osascript commands requires two layers of escaping: One for the
script itself, and one for the sh arguments.

For the script itself, we simply have to escape the " character with \". When
then take the result of that and escape it sutably for sh arguments in single
quotes. We already have a function for that so we simply call that to do the
job.
2022-11-07 02:43:29 -05:00
Samuel Gomes 218a9234c6
Merge branch 'QB64-Phoenix-Edition:main' into setup-win-enhancements 2022-11-07 00:16:37 +05:30
Matt Kilgore 942b5d73b9
Merge pull request #237 from mkilgore/fix-notifypopup-windows
Swap NotifyPopup to use Shell_NotifyIcon
2022-11-06 12:38:01 -05:00
Matthew Kilgore b20aade638 Swap NotifyPopup to use Shell_NotifyIcon
Fairly straight forward, the Powershell code was fundimentally just
calling Shell_NotifyIcon under the covers which we can easily do
ourself. The notification has to be tied to a window, so I simply create
a hidden one to use.

A nice improvement here is that instead of having to use the Powershell
icon we can make use of the EXE icon if one was provided. If one is not
provided then we use the default 'application' icon.
2022-11-06 01:08:36 -04:00
Samuel Gomes bfe4462d9a
Merge branch 'QB64-Phoenix-Edition:main' into setup-win-enhancements 2022-11-05 22:45:26 +05:30
Matt Kilgore bf3c80d11d
Merge pull request #236 from mkilgore/fix-messagebox-quoting
Fix quoting of arguments to dialog functions on Linux
2022-11-05 11:40:32 -04:00
Matthew Kilgore c945214cb8 Fix quoting of arguments to dialog functions on Linux
tinyfiledialogs had lots of issue surounding the quoting of the
arguments to the dialog functions. The arguments are effectively placed
verbadim into shell commands, and without any proper treatment they
would get accidentally evaluated by the shell, which is a big problem.
Additionally, any arguments containing quotes would just not work since
they would screw up the underlying shell command.

This change fixes all that for Linux. Every argument to the dialog
functions is now surrounded in single quotes, which prevents any
evaluation of the string by the shell. Additionally, because this is
standard the only chracters that need special treatment are the single
quote characters, and proper escaping for them has been added. The
result is that the dialog functions can now accept arguments that hvae
single and double quotes in them (on Linux).
2022-11-05 00:36:48 -04:00
Samuel Gomes 2ccc01d976
Merge branch 'QB64-Phoenix-Edition:main' into setup-win-enhancements 2022-11-05 04:50:52 +05:30
github-actions[bot] 0d45ec4969 Automatic update of ./internal/source 2022-11-04 23:01:37 +00:00