1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-08-04 16:30:25 +00:00
Commit graph

2761 commits

Author SHA1 Message Date
Samuel Gomes
ea80bddd51
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-14 23:33:25 +05:30
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
Samuel Gomes
ae35e596b4
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-10 07:27:37 +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
Samuel Gomes
28bdc23ce3
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-08 23:54:25 +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
Samuel Gomes
839e1479a0
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-08 07:56:40 +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
Samuel Gomes
e9905d6cd0
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-07 00:16:25 +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
8f405ecde7
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-05 22:45:41 +05:30
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
Samuel Gomes
f6c743e1f6
Merge branch 'QB64-Phoenix-Edition:main' into miniaudio-fixes 2022-11-05 04:50:41 +05:30
github-actions[bot]
0d45ec4969 Automatic update of ./internal/source 2022-11-04 23:01:37 +00:00
Roland Heyder
a9314e06d2
Merge pull request #235 from QB64-Phoenix-Edition/buffers
Simplebuffers refactoring
2022-11-04 23:45:22 +01:00
Roland Heyder
7d66a171bc Simplebuffers refactoring
Implements the latest refactoring changes done in my Simplebuffers library.
2022-11-04 23:08:42 +01:00
Samuel Gomes
a5ef601b2a Add whitespace 2022-11-04 23:03:00 +05:30
Samuel Gomes
d2cd85825f Update miniaudio to v0.11.11 2022-11-04 22:43:27 +05:30
Samuel Gomes
ad721de724 Update setup_win to download MINGW 12.2.0 2022-11-04 08:09:57 +05:30
Samuel Gomes
9a509cab61 Update miniaudio to v0.11.10 2022-11-03 18:11:20 +05:30
Matt Kilgore
74b0c80fe3
Merge pull request #230 from mkilgore/add-messagebox-back
Add back internal MessageBox function
2022-11-01 10:35:10 -04:00
Matthew Kilgore
980d646317 Add back internal MessageBox function
Unfortunately InForm code calls this function directly via
`DECLARE LIBRARY`. For the moment we're adding it back in to keep those
programs functioning, in the future it may be removed.
2022-10-31 00:14:20 -04:00