Merge pull request #24448 from lukad/toggle-system-console
Add option to toggle console window
This commit is contained in:
commit
05a0a68c72
7 changed files with 34 additions and 0 deletions
|
@ -222,6 +222,8 @@ public:
|
|||
virtual bool is_window_maximized() const { return true; }
|
||||
virtual void set_window_always_on_top(bool p_enabled) {}
|
||||
virtual bool is_window_always_on_top() const { return false; }
|
||||
virtual void set_console_visible(bool p_enabled) {}
|
||||
virtual bool is_console_visible() const { return false; }
|
||||
virtual void request_attention() {}
|
||||
virtual void center_window();
|
||||
|
||||
|
|
|
@ -2474,6 +2474,13 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
|
|||
|
||||
OS::get_singleton()->set_window_fullscreen(!OS::get_singleton()->is_window_fullscreen());
|
||||
|
||||
} break;
|
||||
case SETTINGS_TOGGLE_CONSOLE: {
|
||||
|
||||
bool was_visible = OS::get_singleton()->is_console_visible();
|
||||
OS::get_singleton()->set_console_visible(!was_visible);
|
||||
EditorSettings::get_singleton()->set_setting("interface/editor/hide_console_window", !was_visible);
|
||||
|
||||
} break;
|
||||
case SETTINGS_PICK_MAIN_SCENE: {
|
||||
|
||||
|
@ -5873,6 +5880,9 @@ EditorNode::EditorNode() {
|
|||
p->add_shortcut(ED_SHORTCUT("editor/fullscreen_mode", TTR("Toggle Fullscreen"), KEY_MASK_CMD | KEY_MASK_CTRL | KEY_F), SETTINGS_TOGGLE_FULLSCREEN);
|
||||
#else
|
||||
p->add_shortcut(ED_SHORTCUT("editor/fullscreen_mode", TTR("Toggle Fullscreen"), KEY_MASK_SHIFT | KEY_F11), SETTINGS_TOGGLE_FULLSCREEN);
|
||||
#endif
|
||||
#ifdef WINDOWS_ENABLED
|
||||
p->add_item(TTR("Toggle System Console"), SETTINGS_TOGGLE_CONSOLE);
|
||||
#endif
|
||||
p->add_separator();
|
||||
|
||||
|
|
|
@ -193,6 +193,7 @@ private:
|
|||
SETTINGS_MANAGE_EXPORT_TEMPLATES,
|
||||
SETTINGS_MANAGE_FEATURE_PROFILES,
|
||||
SETTINGS_PICK_MAIN_SCENE,
|
||||
SETTINGS_TOGGLE_CONSOLE,
|
||||
SETTINGS_TOGGLE_FULLSCREEN,
|
||||
SETTINGS_HELP,
|
||||
SCENE_TAB_CLOSE,
|
||||
|
|
|
@ -345,6 +345,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
|
|||
_initial_set("interface/editor/unfocused_low_processor_mode_sleep_usec", 50000); // 20 FPS
|
||||
hints["interface/editor/unfocused_low_processor_mode_sleep_usec"] = PropertyInfo(Variant::REAL, "interface/editor/unfocused_low_processor_mode_sleep_usec", PROPERTY_HINT_RANGE, "1,100000,1", PROPERTY_USAGE_DEFAULT);
|
||||
_initial_set("interface/editor/separate_distraction_mode", false);
|
||||
_initial_set("interface/editor/hide_console_window", false);
|
||||
_initial_set("interface/editor/save_each_scene_on_quit", true); // Regression
|
||||
_initial_set("interface/editor/quit_confirmation", true);
|
||||
|
||||
|
|
|
@ -1797,6 +1797,7 @@ bool Main::start() {
|
|||
pmanager->add_child(progress_dialog);
|
||||
sml->get_root()->add_child(pmanager);
|
||||
OS::get_singleton()->set_context(OS::CONTEXT_PROJECTMAN);
|
||||
project_manager = true;
|
||||
}
|
||||
|
||||
if (project_manager || editor) {
|
||||
|
@ -1806,6 +1807,10 @@ bool Main::start() {
|
|||
StreamPeerSSL::load_certs_from_file(certs);
|
||||
else
|
||||
StreamPeerSSL::load_certs_from_memory(StreamPeerSSL::get_project_cert_array());
|
||||
|
||||
// Hide console window if requested (Windows-only)
|
||||
bool hide_console = EditorSettings::get_singleton()->get_setting("interface/editor/hide_console_window");
|
||||
OS::get_singleton()->set_console_visible(!hide_console);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -1979,6 +1979,17 @@ bool OS_Windows::is_window_always_on_top() const {
|
|||
return video_mode.always_on_top;
|
||||
}
|
||||
|
||||
void OS_Windows::set_console_visible(bool p_enabled) {
|
||||
if (console_visible == p_enabled)
|
||||
return;
|
||||
ShowWindow(GetConsoleWindow(), p_enabled ? SW_SHOW : SW_HIDE);
|
||||
console_visible = p_enabled;
|
||||
}
|
||||
|
||||
bool OS_Windows::is_console_visible() const {
|
||||
return console_visible;
|
||||
}
|
||||
|
||||
bool OS_Windows::get_window_per_pixel_transparency_enabled() const {
|
||||
|
||||
if (!is_layered_allowed()) return false;
|
||||
|
@ -3231,6 +3242,7 @@ OS_Windows::OS_Windows(HINSTANCE _hInstance) {
|
|||
control_mem = false;
|
||||
meta_mem = false;
|
||||
minimized = false;
|
||||
console_visible = IsWindowVisible(GetConsoleWindow());
|
||||
|
||||
hInstance = _hInstance;
|
||||
pressrc = 0;
|
||||
|
|
|
@ -210,6 +210,7 @@ protected:
|
|||
bool maximized;
|
||||
bool minimized;
|
||||
bool borderless;
|
||||
bool console_visible;
|
||||
|
||||
public:
|
||||
LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||
|
@ -256,6 +257,8 @@ public:
|
|||
virtual bool is_window_maximized() const;
|
||||
virtual void set_window_always_on_top(bool p_enabled);
|
||||
virtual bool is_window_always_on_top() const;
|
||||
virtual void set_console_visible(bool p_enabled);
|
||||
virtual bool is_console_visible() const;
|
||||
virtual void request_attention();
|
||||
|
||||
virtual void set_borderless_window(bool p_borderless);
|
||||
|
|
Loading…
Reference in a new issue