Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
a740g committed Jun 3, 2024
2 parents cfc271b + 6579cef commit 41b744c
Show file tree
Hide file tree
Showing 13 changed files with 22,979 additions and 22,902 deletions.
4 changes: 2 additions & 2 deletions internal/c/libqb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31964,11 +31964,11 @@ extern "C" void qb64_os_event_linux(XEvent *event, Display *display, int *qb64_o

if (*qb64_os_event_info == OS_EVENT_POST_PROCESSING) {
switch (event->type) {
case EnterNotify:
case FocusIn:
window_focused = -1;
break;

case LeaveNotify:
case FocusOut:
window_focused = 0;
// Iterate over all modifiers
for (uint32 key = VK + QBVK_RSHIFT; key <= VK + QBVK_MODE; key++) {
Expand Down
10 changes: 4 additions & 6 deletions internal/c/libqb/src/environ.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,11 @@ void sub_environ(qbs *str) {
buf = (char *)malloc(str->len + 1);
buf[str->len] = '\0';
memcpy(buf, str->chr, str->len);
// Name and value may be separated by = or space
separator = strchr(buf, ' ');
if (!separator) {
separator = strchr(buf, '=');
}
if (!separator) {
// Name and value may be separated by = or space, whichever appears first.
separator = buf + strcspn(buf, " =");
if (*separator == '\0') {
// It is an error is there is no separator
free(buf);
error(5);
return;
}
Expand Down
5 changes: 4 additions & 1 deletion internal/c/parts/core/freeglut/freeglut_window.c
Original file line number Diff line number Diff line change
Expand Up @@ -1155,7 +1155,10 @@ void fgOpenWindow( SFG_Window* window, const char* title,
StructureNotifyMask | SubstructureNotifyMask | ExposureMask |
ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask |
VisibilityChangeMask | EnterWindowMask | LeaveWindowMask |
PointerMotionMask | ButtonMotionMask;
PointerMotionMask | ButtonMotionMask |
// QB64-PE: custom code begin
FocusChangeMask;
// QB64-PE: custom code end
winAttr.background_pixmap = None;
winAttr.background_pixel = 0;
winAttr.border_pixel = 0;
Expand Down
2 changes: 1 addition & 1 deletion internal/source/free177.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if (_FUNC_EVALUATEFUNCTION_ARRAY_UDT_ARGS[2]&1){
tmp_long=_FUNC_EVALUATEFUNCTION_ARRAY_UDT_ARGS[5];
while(tmp_long--) {

qbs_free(*(qbs**)(_FUNC_EVALUATEFUNCTION_ARRAY_UDT_ARGS[0]+(480/8+1-1)*tmp_long+ 48));}
qbs_free(*(qbs**)(_FUNC_EVALUATEFUNCTION_ARRAY_UDT_ARGS[0]+60*tmp_long+ 48));}
free((void*)(_FUNC_EVALUATEFUNCTION_ARRAY_UDT_ARGS[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)_FUNC_EVALUATEFUNCTION_ARRAY_UDT_ARGS)[8] );
Expand Down
2 changes: 1 addition & 1 deletion internal/source/free213.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ if (_SUB_DEBUGMODE_ARRAY_UDT_BUTTON[2]&1){
tmp_long=_SUB_DEBUGMODE_ARRAY_UDT_BUTTON[5];
while(tmp_long--) {

qbs_free(*(qbs**)(_SUB_DEBUGMODE_ARRAY_UDT_BUTTON[0]+(128/8+1-1)*tmp_long+ 8));}
qbs_free(*(qbs**)(_SUB_DEBUGMODE_ARRAY_UDT_BUTTON[0]+16*tmp_long+ 8));}
free((void*)(_SUB_DEBUGMODE_ARRAY_UDT_BUTTON[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)_SUB_DEBUGMODE_ARRAY_UDT_BUTTON)[8] );
Expand Down
2 changes: 1 addition & 1 deletion internal/source/free217.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ if (_FUNC_IDEVARIABLEWATCHBOX_ARRAY_UDT_VARDLGLIST[2]&1){
tmp_long=_FUNC_IDEVARIABLEWATCHBOX_ARRAY_UDT_VARDLGLIST[5];
while(tmp_long--) {

qbs_free(*(qbs**)(_FUNC_IDEVARIABLEWATCHBOX_ARRAY_UDT_VARDLGLIST[0]+(264/8+1-1)*tmp_long+ 25));}
qbs_free(*(qbs**)(_FUNC_IDEVARIABLEWATCHBOX_ARRAY_UDT_VARDLGLIST[0]+33*tmp_long+ 25));}
free((void*)(_FUNC_IDEVARIABLEWATCHBOX_ARRAY_UDT_VARDLGLIST[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)_FUNC_IDEVARIABLEWATCHBOX_ARRAY_UDT_VARDLGLIST)[8] );
Expand Down
2 changes: 1 addition & 1 deletion internal/source/free218.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ if (_FUNC_IDEELEMENTWATCHBOX_ARRAY_UDT_VARDLGLIST[2]&1){
tmp_long=_FUNC_IDEELEMENTWATCHBOX_ARRAY_UDT_VARDLGLIST[5];
while(tmp_long--) {

qbs_free(*(qbs**)(_FUNC_IDEELEMENTWATCHBOX_ARRAY_UDT_VARDLGLIST[0]+(264/8+1-1)*tmp_long+ 25));}
qbs_free(*(qbs**)(_FUNC_IDEELEMENTWATCHBOX_ARRAY_UDT_VARDLGLIST[0]+33*tmp_long+ 25));}
free((void*)(_FUNC_IDEELEMENTWATCHBOX_ARRAY_UDT_VARDLGLIST[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)_FUNC_IDEELEMENTWATCHBOX_ARRAY_UDT_VARDLGLIST)[8] );
Expand Down
2 changes: 1 addition & 1 deletion internal/source/free299.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ if (_FUNC_IDEASCIIBOX_ARRAY_UDT_ASCIITABLE[2]&1){
tmp_long=_FUNC_IDEASCIIBOX_ARRAY_UDT_ASCIITABLE[5];
while(tmp_long--) {

qbs_free(*(qbs**)(_FUNC_IDEASCIIBOX_ARRAY_UDT_ASCIITABLE[0]+(96/8+1-1)*tmp_long+ 4));}
qbs_free(*(qbs**)(_FUNC_IDEASCIIBOX_ARRAY_UDT_ASCIITABLE[0]+12*tmp_long+ 4));}
free((void*)(_FUNC_IDEASCIIBOX_ARRAY_UDT_ASCIITABLE[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)_FUNC_IDEASCIIBOX_ARRAY_UDT_ASCIITABLE)[8] );
Expand Down
45,716 changes: 22,869 additions & 22,847 deletions internal/source/main.txt

Large diffs are not rendered by default.

48 changes: 24 additions & 24 deletions internal/source/mainfree.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ if (__ARRAY_UDT_CONSTFUNCS[2]&1){
tmp_long=__ARRAY_UDT_CONSTFUNCS[5];
while(tmp_long--) {

qbs_free(*(qbs**)(__ARRAY_UDT_CONSTFUNCS[0]+(80/8+1-1)*tmp_long+ 0));}
qbs_free(*(qbs**)(__ARRAY_UDT_CONSTFUNCS[0]+10*tmp_long+ 0));}
free((void*)(__ARRAY_UDT_CONSTFUNCS[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)__ARRAY_UDT_CONSTFUNCS)[8] );
Expand Down Expand Up @@ -401,17 +401,17 @@ if (__ARRAY_UDT_BACKUPUSEDVARIABLELIST[2]&1){
tmp_long=__ARRAY_UDT_BACKUPUSEDVARIABLELIST[5];
while(tmp_long--) {

qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 32));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 40));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 48));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 56));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 64));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 72));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 80));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 88));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 96));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 104));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 112));}
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 32));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 40));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 48));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 56));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 64));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 72));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 80));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 88));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 96));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 104));
qbs_free(*(qbs**)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]+120*tmp_long+ 112));}
free((void*)(__ARRAY_UDT_BACKUPUSEDVARIABLELIST[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)__ARRAY_UDT_BACKUPUSEDVARIABLELIST)[8] );
Expand Down Expand Up @@ -802,7 +802,7 @@ if (__ARRAY_UDT_IDS[2]&1){
tmp_long=__ARRAY_UDT_IDS[5];
while(tmp_long--) {

qbs_free(*(qbs**)(__ARRAY_UDT_IDS[0]+(22952/8+1-1)*tmp_long+ 2861));}
qbs_free(*(qbs**)(__ARRAY_UDT_IDS[0]+2869*tmp_long+ 2861));}
free((void*)(__ARRAY_UDT_IDS[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)__ARRAY_UDT_IDS)[8] );
Expand Down Expand Up @@ -955,17 +955,17 @@ if (__ARRAY_UDT_USEDVARIABLELIST[2]&1){
tmp_long=__ARRAY_UDT_USEDVARIABLELIST[5];
while(tmp_long--) {

qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 32));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 40));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 48));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 56));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 64));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 72));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 80));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 88));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 96));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 104));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+(960/8+1-1)*tmp_long+ 112));}
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 32));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 40));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 48));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 56));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 64));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 72));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 80));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 88));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 96));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 104));
qbs_free(*(qbs**)(__ARRAY_UDT_USEDVARIABLELIST[0]+120*tmp_long+ 112));}
free((void*)(__ARRAY_UDT_USEDVARIABLELIST[0]));
}
free_mem_lock( (mem_lock*)((ptrszint*)__ARRAY_UDT_USEDVARIABLELIST)[8] );
Expand Down
32 changes: 15 additions & 17 deletions source/ide/ide_methods.bas
Original file line number Diff line number Diff line change
Expand Up @@ -1536,16 +1536,14 @@ FUNCTION ide2 (ignore)
END IF
END IF

IF os$ = "WIN" OR MacOSX = 1 THEN
IF _WINDOWHASFOCUS THEN
LOCATE , , 1
_PALETTECOLOR 5, IDEBracketHighlightColor, 0
_PALETTECOLOR 6, IDEBackgroundColor2, 0
ELSE
LOCATE , , 0
_PALETTECOLOR 5, IDEBackgroundColor, 0
_PALETTECOLOR 6, IDEBackgroundColor, 0
END IF
IF _WINDOWHASFOCUS THEN
LOCATE , , 1
_PALETTECOLOR 5, IDEBracketHighlightColor, 0
_PALETTECOLOR 6, IDEBackgroundColor2, 0
ELSE
LOCATE , , 0
_PALETTECOLOR 5, IDEBackgroundColor, 0
_PALETTECOLOR 6, IDEBackgroundColor, 0
END IF

IF KALT THEN 'alt held
Expand All @@ -1570,7 +1568,7 @@ FUNCTION ide2 (ignore)
idealthighlight = 0
LOCATE , , 0: COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
IF ideentermenu = 1 AND KCONTROL = 0 THEN 'alt was pressed then released
IF _WINDOWHASFOCUS OR os$ = "LNX" THEN
IF _WINDOWHASFOCUS THEN
LOCATE , , , IDENormalCursorStart, IDENormalCursorEnd
skipdisplay = 0
ideentermenu = 0
Expand Down Expand Up @@ -4421,7 +4419,7 @@ FUNCTION ide2 (ignore)
DO
_LIMIT 100
GetInput
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
IF _WINDOWHASFOCUS = 0 THEN
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
SCREEN , , 3, 0: PCOPY 3, 0
GOTO ideloop
Expand All @@ -4434,7 +4432,7 @@ FUNCTION ide2 (ignore)
KB = KEY_ESC
END IF

IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
IF _WINDOWHASFOCUS = 0 THEN
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
SCREEN , , 3, 0: PCOPY 3, 0
GOTO ideloop
Expand Down Expand Up @@ -4657,7 +4655,7 @@ FUNCTION ide2 (ignore)
DO
_LIMIT 100
GetInput
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
IF _WINDOWHASFOCUS = 0 THEN
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
PCOPY 3, 0: SCREEN , , 3, 0
GOTO ideloop
Expand All @@ -4677,7 +4675,7 @@ FUNCTION ide2 (ignore)
ideexit = 1: GOTO ideloop
END IF
END IF
IF _WINDOWHASFOCUS = 0 AND (os$ = "WIN" OR MacOSX = 1) THEN
IF _WINDOWHASFOCUS = 0 THEN
COLOR 0, 7: _PRINTSTRING (1, 1), menubar$
PCOPY 3, 0: SCREEN , , 3, 0
IF IdeDebugMode = 2 THEN GOTO EnterDebugMode
Expand Down Expand Up @@ -11856,7 +11854,7 @@ SUB ideinsline (i, text$)
idegotoline i
'insert line
textlen = LEN(text$)
idet$ = LEFT$(idet$, ideli - 1) + MKL$(textlen) + text$ + MKL$(textlen) + RIGHT$(idet$, LEN(idet$) - ideli + 1)
idet$ = LEFT$(idet$, ideli - 1) + (MKL$(textlen) + text$ + MKL$(textlen)) + RIGHT$(idet$, LEN(idet$) - ideli + 1)
iden = iden + 1
END SUB

Expand Down Expand Up @@ -12536,7 +12534,7 @@ SUB idesetline (i, text$)

IF i <> -1 THEN idegotoline i
textlen = LEN(text$)
idet$ = LEFT$(idet$, ideli - 1) + MKL$(textlen) + text$ + MKL$(textlen) + RIGHT$(idet$, LEN(idet$) - ideli + 1 - CVL(MID$(idet$, ideli, 4)) - 8)
idet$ = LEFT$(idet$, ideli - 1) + (MKL$(textlen) + text$ + MKL$(textlen)) + RIGHT$(idet$, LEN(idet$) - ideli + 1 - CVL(MID$(idet$, ideli, 4)) - 8)

END SUB

Expand Down
48 changes: 48 additions & 0 deletions tests/compile_tests/environ/set_environ.bas
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
$CONSOLE:ONLY
ON ERROR GOTO ehandler

'Test setting with =
ENVIRON "FOO=BAR"
PRINT ENVIRON$("FOO")


'Test settings with space
ENVIRON "VAR VAL"
PRINT ENVIRON$("VAR")


'Test setting value with spaces with = separator
ENVIRON "ABC=DEF GHI"
PRINT ENVIRON$("ABC")


'Test setting value with spaces with space separator
ENVIRON "JKL MNO PQR"
PRINT ENVIRON$("JKL")


'Test overwriting existing
ENVIRON "X=XY"
ENVIRON "X=ZZZ"
PRINT ENVIRON$("X")


'Test unset variable with = separator
ENVIRON "NAME=LUKE"
ENVIRON "NAME="
PRINT "["; ENVIRON$("NAME"); "]"


'Test unset variable with space separator
ENVIRON "TEXT BOO"
ENVIRON "TEXT "
PRINT "["; ENVIRON$("TEXT"); "]"

'Test no separator
ENVIRON "NOSEP"

SYSTEM

ehandler:
print "Error"; ERR; "line"; _ERRORLINE
RESUME NEXT
8 changes: 8 additions & 0 deletions tests/compile_tests/environ/set_environ.output
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
BAR
VAL
DEF GHI
MNO PQR
ZZZ
[]
[]
Error 5 line 42

0 comments on commit 41b744c

Please sign in to comment.