Merge pull request #55966 from bruvzg/wt💩4
This commit is contained in:
commit
33e03386b3
|
@ -1204,8 +1204,11 @@ void DisplayServerWindows::console_set_visible(bool p_enabled) {
|
|||
if (console_visible == p_enabled) {
|
||||
return;
|
||||
}
|
||||
ShowWindow(GetConsoleWindow(), p_enabled ? SW_SHOW : SW_HIDE);
|
||||
console_visible = p_enabled;
|
||||
if (!((OS_Windows *)OS::get_singleton())->_is_win11_terminal()) {
|
||||
// GetConsoleWindow is not supported by the Windows Terminal.
|
||||
ShowWindow(GetConsoleWindow(), p_enabled ? SW_SHOW : SW_HIDE);
|
||||
console_visible = p_enabled;
|
||||
}
|
||||
}
|
||||
|
||||
bool DisplayServerWindows::is_console_visible() const {
|
||||
|
|
|
@ -467,6 +467,16 @@ Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments,
|
|||
return OK;
|
||||
};
|
||||
|
||||
bool OS_Windows::_is_win11_terminal() const {
|
||||
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
DWORD dwMode = 0;
|
||||
if (GetConsoleMode(hStdOut, &dwMode)) {
|
||||
return ((dwMode & ENABLE_VIRTUAL_TERMINAL_PROCESSING) == ENABLE_VIRTUAL_TERMINAL_PROCESSING);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Error OS_Windows::create_process(const String &p_path, const List<String> &p_arguments, ProcessID *r_child_id) {
|
||||
String path = p_path.replace("/", "\\");
|
||||
String command = _quote_command_line_argument(path);
|
||||
|
@ -484,7 +494,8 @@ Error OS_Windows::create_process(const String &p_path, const List<String> &p_arg
|
|||
#ifndef DEBUG_ENABLED
|
||||
dwCreationFlags |= CREATE_NO_WINDOW;
|
||||
#endif
|
||||
if (p_path == get_executable_path() && GetConsoleWindow() != nullptr) {
|
||||
if (p_path == get_executable_path() && GetConsoleWindow() != nullptr && _is_win11_terminal()) {
|
||||
// Open a new terminal as a workaround for Windows Terminal bug.
|
||||
dwCreationFlags |= CREATE_NEW_CONSOLE;
|
||||
}
|
||||
|
||||
|
|
|
@ -157,6 +157,7 @@ public:
|
|||
|
||||
void run();
|
||||
|
||||
bool _is_win11_terminal() const;
|
||||
virtual bool _check_internal_feature_support(const String &p_feature) override;
|
||||
|
||||
virtual void disable_crash_handler() override;
|
||||
|
|
Loading…
Reference in New Issue