mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-07-01 12:40:36 +00:00
Switches focus to IDE automatically when breakpoint is reached.
Windows-only.
This commit is contained in:
parent
f9ab61ad51
commit
cca1593f79
|
@ -12675,6 +12675,13 @@ qbs *func__title(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_foreground_window(ptrszint i) {
|
||||||
|
#ifdef QB64_WINDOWS
|
||||||
|
BOOL result = SetForegroundWindow((HWND) i);
|
||||||
|
#endif
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int32 func__hasfocus() {
|
int32 func__hasfocus() {
|
||||||
#ifdef QB64_GUI
|
#ifdef QB64_GUI
|
||||||
#ifdef QB64_WINDOWS
|
#ifdef QB64_WINDOWS
|
||||||
|
|
|
@ -187,6 +187,7 @@ extern int32 func__controlchr();
|
||||||
extern void sub__blink(int32);
|
extern void sub__blink(int32);
|
||||||
extern int32 func__blink();
|
extern int32 func__blink();
|
||||||
extern int32 func__hasfocus();
|
extern int32 func__hasfocus();
|
||||||
|
extern void set_foreground_window(ptrszint i);
|
||||||
extern qbs *func__title();
|
extern qbs *func__title();
|
||||||
extern int32 func__handle();
|
extern int32 func__handle();
|
||||||
extern int32 func__fileexists(qbs*);
|
extern int32 func__fileexists(qbs*);
|
||||||
|
|
|
@ -4,6 +4,7 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
STATIC AS LONG vw_ideHost, vw_breakpointCount, vw_skipCount, vw_timeout, vw_startLevel, vw_lastLine
|
STATIC AS LONG vw_ideHost, vw_breakpointCount, vw_skipCount, vw_timeout, vw_startLevel, vw_lastLine
|
||||||
STATIC AS LONG vw_runToLine
|
STATIC AS LONG vw_runToLine
|
||||||
STATIC AS _BYTE vw_pauseMode, vw_stepOver, vw_bypass, vw_setNextLine
|
STATIC AS _BYTE vw_pauseMode, vw_stepOver, vw_bypass, vw_setNextLine
|
||||||
|
STATIC AS _OFFSET vw_idehwnd
|
||||||
STATIC vw_buffer$, vw_endc$
|
STATIC vw_buffer$, vw_endc$
|
||||||
DIM AS LONG vw_i, vw_tempIndex, vw_localIndex, vw_varSize, vw_sequence
|
DIM AS LONG vw_i, vw_tempIndex, vw_localIndex, vw_varSize, vw_sequence
|
||||||
DIM AS _OFFSET vw_address
|
DIM AS _OFFSET vw_address
|
||||||
|
@ -18,6 +19,12 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
FUNCTION stop_program_state&
|
FUNCTION stop_program_state&
|
||||||
END DECLARE
|
END DECLARE
|
||||||
|
|
||||||
|
$IF WIN THEN
|
||||||
|
DECLARE DYNAMIC LIBRARY "user32"
|
||||||
|
FUNCTION SetForegroundWindow& (BYVAL hWnd AS _OFFSET)
|
||||||
|
END DECLARE
|
||||||
|
$END IF
|
||||||
|
|
||||||
IF vw_bypass THEN EXIT SUB
|
IF vw_bypass THEN EXIT SUB
|
||||||
|
|
||||||
vwatch_goto = 0
|
vwatch_goto = 0
|
||||||
|
@ -32,6 +39,8 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
'send this binary's path/exe name
|
'send this binary's path/exe name
|
||||||
vw_cmd$ = "me:" + COMMAND$(0)
|
vw_cmd$ = "me:" + COMMAND$(0)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
|
vw_cmd$ = "hwnd:" + _MK$(_OFFSET, _WINDOWHANDLE)
|
||||||
|
GOSUB SendCommand
|
||||||
|
|
||||||
DO
|
DO
|
||||||
GOSUB GetCommand
|
GOSUB GetCommand
|
||||||
|
@ -59,6 +68,8 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
vw_temp$ = MID$(vw_value$, vw_i * 4 - 3, 4)
|
vw_temp$ = MID$(vw_value$, vw_i * 4 - 3, 4)
|
||||||
vwatch_breakpoints(CVL(vw_temp$)) = -1
|
vwatch_breakpoints(CVL(vw_temp$)) = -1
|
||||||
NEXT
|
NEXT
|
||||||
|
CASE "hwnd"
|
||||||
|
vw_idehwnd = _CV(_OFFSET, vw_value$)
|
||||||
CASE "skip count"
|
CASE "skip count"
|
||||||
vw_skipCount = CVL(vw_value$)
|
vw_skipCount = CVL(vw_value$)
|
||||||
CASE "skip list"
|
CASE "skip list"
|
||||||
|
@ -167,6 +178,10 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
vw_cmd$ = "current sub:" + LEFT$(vwatch_stack(vwatch_sublevel), INSTR(vwatch_stack(vwatch_sublevel), ",") - 1)
|
vw_cmd$ = "current sub:" + LEFT$(vwatch_stack(vwatch_sublevel), INSTR(vwatch_stack(vwatch_sublevel), ",") - 1)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
|
|
||||||
|
$IF WIN THEN
|
||||||
|
vw_i = SetForegroundWindow&(vw_idehwnd)
|
||||||
|
$END IF
|
||||||
|
|
||||||
DO 'main loop
|
DO 'main loop
|
||||||
IF stop_program_state& THEN vw_bypass = -1: EXIT DO
|
IF stop_program_state& THEN vw_bypass = -1: EXIT DO
|
||||||
SELECT CASE vw_cmd$
|
SELECT CASE vw_cmd$
|
||||||
|
|
|
@ -6345,6 +6345,11 @@ SUB DebugMode
|
||||||
STATIC buffer$
|
STATIC buffer$
|
||||||
STATIC endc$
|
STATIC endc$
|
||||||
STATIC currentSub$
|
STATIC currentSub$
|
||||||
|
STATIC debuggeehwnd AS _OFFSET
|
||||||
|
|
||||||
|
DECLARE LIBRARY
|
||||||
|
SUB set_foreground_window (BYVAL hwnd AS _OFFSET)
|
||||||
|
END DECLARE
|
||||||
|
|
||||||
timeout = 10
|
timeout = 10
|
||||||
_KEYCLEAR
|
_KEYCLEAR
|
||||||
|
@ -6395,6 +6400,7 @@ SUB DebugMode
|
||||||
callstacklist$ = ""
|
callstacklist$ = ""
|
||||||
buffer$ = ""
|
buffer$ = ""
|
||||||
debugClient& = 0
|
debugClient& = 0
|
||||||
|
debuggeepid = 0
|
||||||
|
|
||||||
IF LEN(variableWatchList$) = 0 THEN
|
IF LEN(variableWatchList$) = 0 THEN
|
||||||
totalVisibleVariables = 0
|
totalVisibleVariables = 0
|
||||||
|
@ -6518,14 +6524,17 @@ SUB DebugMode
|
||||||
CLOSE #debugClient&
|
CLOSE #debugClient&
|
||||||
WHILE _MOUSEINPUT: WEND
|
WHILE _MOUSEINPUT: WEND
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
ELSE
|
|
||||||
EXIT DO
|
|
||||||
END IF
|
END IF
|
||||||
|
CASE "hwnd"
|
||||||
|
debuggeehwnd = _CV(_OFFSET, value$)
|
||||||
|
EXIT DO
|
||||||
END SELECT
|
END SELECT
|
||||||
LOOP
|
LOOP
|
||||||
|
|
||||||
cmd$ = "vwatch:ok"
|
cmd$ = "vwatch:ok"
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
|
cmd$ = "hwnd:" + _MK$(_OFFSET, _WINDOWHANDLE)
|
||||||
|
GOSUB SendCommand
|
||||||
cmd$ = "line count:" + MKL$(iden)
|
cmd$ = "line count:" + MKL$(iden)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
|
|
||||||
|
@ -7173,6 +7182,7 @@ SUB DebugMode
|
||||||
setStatusMessage 1, "Running...", 10
|
setStatusMessage 1, "Running...", 10
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
dummy = DarkenFGBG(1)
|
dummy = DarkenFGBG(1)
|
||||||
|
set_foreground_window debuggeehwnd
|
||||||
CASE 16384 'F6
|
CASE 16384 'F6
|
||||||
F6:
|
F6:
|
||||||
requestStepOut:
|
requestStepOut:
|
||||||
|
|
Loading…
Reference in a new issue