Rename Tabs
to TabBar
This commit is contained in:
parent
85a8939fa2
commit
67acb7de6e
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="Tabs" inherits="Control" version="4.0">
|
<class name="TabBar" inherits="Control" version="4.0">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
Tabs control.
|
Tab bar control.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
Simple tabs control, similar to [TabContainer] but is only in charge of drawing tabs, not interacting with children.
|
Simple tabs control, similar to [TabContainer] but is only in charge of drawing tabs, not interacting with children.
|
||||||
@ -114,7 +114,7 @@
|
|||||||
<method name="get_tabs_rearrange_group" qualifiers="const">
|
<method name="get_tabs_rearrange_group" qualifiers="const">
|
||||||
<return type="int" />
|
<return type="int" />
|
||||||
<description>
|
<description>
|
||||||
Returns the [Tabs]' rearrange group ID.
|
Returns the [TabBar]'s rearrange group ID.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="move_tab">
|
<method name="move_tab">
|
||||||
@ -192,7 +192,7 @@
|
|||||||
<return type="void" />
|
<return type="void" />
|
||||||
<argument index="0" name="group_id" type="int" />
|
<argument index="0" name="group_id" type="int" />
|
||||||
<description>
|
<description>
|
||||||
Defines the rearrange group ID. Choose for each [Tabs] the same value to dragging tabs between [Tabs]. Enable drag with [member drag_to_rearrange_enabled].
|
Defines the rearrange group ID. Choose for each [TabBar] the same value to dragging tabs between [TabBar]. Enable drag with [member drag_to_rearrange_enabled].
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
</methods>
|
</methods>
|
||||||
@ -209,10 +209,10 @@
|
|||||||
<member name="scrolling_enabled" type="bool" setter="set_scrolling_enabled" getter="get_scrolling_enabled" default="true">
|
<member name="scrolling_enabled" type="bool" setter="set_scrolling_enabled" getter="get_scrolling_enabled" default="true">
|
||||||
if [code]true[/code], the mouse's scroll wheel can be used to navigate the scroll view.
|
if [code]true[/code], the mouse's scroll wheel can be used to navigate the scroll view.
|
||||||
</member>
|
</member>
|
||||||
<member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="Tabs.TabAlign" default="1">
|
<member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="TabBar.TabAlign" default="1">
|
||||||
The alignment of all tabs. See [enum TabAlign] for details.
|
The alignment of all tabs. See [enum TabAlign] for details.
|
||||||
</member>
|
</member>
|
||||||
<member name="tab_close_display_policy" type="int" setter="set_tab_close_display_policy" getter="get_tab_close_display_policy" enum="Tabs.CloseButtonDisplayPolicy" default="0">
|
<member name="tab_close_display_policy" type="int" setter="set_tab_close_display_policy" getter="get_tab_close_display_policy" enum="TabBar.CloseButtonDisplayPolicy" default="0">
|
||||||
Sets when the close button will appear on the tabs. See [enum CloseButtonDisplayPolicy] for details.
|
Sets when the close button will appear on the tabs. See [enum CloseButtonDisplayPolicy] for details.
|
||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
@ -59,8 +59,8 @@
|
|||||||
#include "scene/gui/panel.h"
|
#include "scene/gui/panel.h"
|
||||||
#include "scene/gui/panel_container.h"
|
#include "scene/gui/panel_container.h"
|
||||||
#include "scene/gui/split_container.h"
|
#include "scene/gui/split_container.h"
|
||||||
|
#include "scene/gui/tab_bar.h"
|
||||||
#include "scene/gui/tab_container.h"
|
#include "scene/gui/tab_container.h"
|
||||||
#include "scene/gui/tabs.h"
|
|
||||||
#include "scene/gui/texture_progress_bar.h"
|
#include "scene/gui/texture_progress_bar.h"
|
||||||
#include "scene/main/window.h"
|
#include "scene/main/window.h"
|
||||||
#include "scene/resources/packed_scene.h"
|
#include "scene/resources/packed_scene.h"
|
||||||
@ -658,7 +658,7 @@ void EditorNode::_notification(int p_what) {
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
|
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
|
||||||
scene_tabs->set_tab_close_display_policy((bool(EDITOR_GET("interface/scene_tabs/always_show_close_button")) ? Tabs::CLOSE_BUTTON_SHOW_ALWAYS : Tabs::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
|
scene_tabs->set_tab_close_display_policy((bool(EDITOR_GET("interface/scene_tabs/always_show_close_button")) ? TabBar::CLOSE_BUTTON_SHOW_ALWAYS : TabBar::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
|
||||||
theme = create_custom_theme(theme_base->get_theme());
|
theme = create_custom_theme(theme_base->get_theme());
|
||||||
|
|
||||||
theme_base->set_theme(theme);
|
theme_base->set_theme(theme);
|
||||||
@ -838,7 +838,7 @@ void EditorNode::_resources_changed(const Vector<String> &p_resources) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (res->get_import_path() != String()) {
|
if (res->get_import_path() != String()) {
|
||||||
//this is an imported resource, will be reloaded if reimported via the _resources_reimported() callback
|
// this is an imported resource, will be reloaded if reimported via the _resources_reimported() callback
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -942,21 +942,21 @@ void EditorNode::_fs_changed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
|
void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
|
||||||
List<String> scenes; //will load later
|
List<String> scenes; // will load later
|
||||||
int current_tab = scene_tabs->get_current_tab();
|
int current_tab = scene_tabs->get_current_tab();
|
||||||
|
|
||||||
for (int i = 0; i < p_resources.size(); i++) {
|
for (int i = 0; i < p_resources.size(); i++) {
|
||||||
String file_type = ResourceLoader::get_resource_type(p_resources[i]);
|
String file_type = ResourceLoader::get_resource_type(p_resources[i]);
|
||||||
if (file_type == "PackedScene") {
|
if (file_type == "PackedScene") {
|
||||||
scenes.push_back(p_resources[i]);
|
scenes.push_back(p_resources[i]);
|
||||||
//reload later if needed, first go with normal resources
|
// reload later if needed, first go with normal resources
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ResourceCache::has(p_resources[i])) {
|
if (!ResourceCache::has(p_resources[i])) {
|
||||||
continue; //not loaded, no need to reload
|
continue; // not loaded, no need to reload
|
||||||
}
|
}
|
||||||
//reload normally
|
// reload normally
|
||||||
Resource *resource = ResourceCache::get(p_resources[i]);
|
Resource *resource = ResourceCache::get(p_resources[i]);
|
||||||
if (resource) {
|
if (resource) {
|
||||||
resource->reload_from_file();
|
resource->reload_from_file();
|
||||||
@ -1140,7 +1140,7 @@ Error EditorNode::load_resource(const String &p_resource, bool p_ignore_broken_d
|
|||||||
ERR_FAIL_COND_V(!res.is_valid(), ERR_CANT_OPEN);
|
ERR_FAIL_COND_V(!res.is_valid(), ERR_CANT_OPEN);
|
||||||
|
|
||||||
if (!p_ignore_broken_deps && dependency_errors.has(p_resource)) {
|
if (!p_ignore_broken_deps && dependency_errors.has(p_resource)) {
|
||||||
//current_option = -1;
|
// current_option = -1;
|
||||||
Vector<String> errors;
|
Vector<String> errors;
|
||||||
for (Set<String>::Element *E = dependency_errors[p_resource].front(); E; E = E->next()) {
|
for (Set<String>::Element *E = dependency_errors[p_resource].front(); E; E = E->next()) {
|
||||||
errors.push_back(E->get());
|
errors.push_back(E->get());
|
||||||
@ -1216,7 +1216,7 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
|
|||||||
List<String> preferred;
|
List<String> preferred;
|
||||||
for (const String &E : extensions) {
|
for (const String &E : extensions) {
|
||||||
if (p_resource->is_class("Script") && (E == "tres" || E == "res")) {
|
if (p_resource->is_class("Script") && (E == "tres" || E == "res")) {
|
||||||
//this serves no purpose and confused people
|
// this serves no purpose and confused people
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
file->add_filter("*." + E + " ; " + E.to_upper());
|
file->add_filter("*." + E + " ; " + E.to_upper());
|
||||||
@ -1325,7 +1325,7 @@ void EditorNode::_get_scene_metadata(const String &p_file) {
|
|||||||
|
|
||||||
Error err = cf->load(path);
|
Error err = cf->load(path);
|
||||||
if (err != OK || !cf->has_section("editor_states")) {
|
if (err != OK || !cf->has_section("editor_states")) {
|
||||||
return; //must not exist
|
return; // must not exist
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> esl;
|
List<String> esl;
|
||||||
@ -1349,7 +1349,7 @@ void EditorNode::_set_scene_metadata(const String &p_file, int p_idx) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
scene->set_meta("__editor_run_settings__", Variant()); //clear it (no point in keeping it)
|
scene->set_meta("__editor_run_settings__", Variant()); // clear it (no point in keeping it)
|
||||||
scene->set_meta("__editor_plugin_states__", Variant());
|
scene->set_meta("__editor_plugin_states__", Variant());
|
||||||
|
|
||||||
String path = EditorSettings::get_singleton()->get_project_settings_dir().plus_file(p_file.get_file() + "-editstate-" + p_file.md5_text() + ".cfg");
|
String path = EditorSettings::get_singleton()->get_project_settings_dir().plus_file(p_file.get_file() + "-editstate-" + p_file.md5_text() + ".cfg");
|
||||||
@ -1392,10 +1392,10 @@ bool EditorNode::_find_and_save_resource(RES p_res, Map<RES, bool> &processed, i
|
|||||||
|
|
||||||
if (p_res->get_path().is_resource_file()) {
|
if (p_res->get_path().is_resource_file()) {
|
||||||
if (changed || subchanged) {
|
if (changed || subchanged) {
|
||||||
//save
|
// save
|
||||||
ResourceSaver::save(p_res->get_path(), p_res, flags);
|
ResourceSaver::save(p_res->get_path(), p_res, flags);
|
||||||
}
|
}
|
||||||
processed[p_res] = false; //because it's a file
|
processed[p_res] = false; // because it's a file
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
processed[p_res] = changed;
|
processed[p_res] = changed;
|
||||||
@ -1493,7 +1493,7 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
|
|||||||
_find_node_types(editor_data.get_edited_scene_root(), c2d, c3d);
|
_find_node_types(editor_data.get_edited_scene_root(), c2d, c3d);
|
||||||
|
|
||||||
save.step(TTR("Creating Thumbnail"), 1);
|
save.step(TTR("Creating Thumbnail"), 1);
|
||||||
//current view?
|
// current view?
|
||||||
|
|
||||||
Ref<Image> img;
|
Ref<Image> img;
|
||||||
// If neither 3D or 2D nodes are present, make a 1x1 black texture.
|
// If neither 3D or 2D nodes are present, make a 1x1 black texture.
|
||||||
@ -1546,12 +1546,12 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
|
|||||||
}
|
}
|
||||||
img->convert(Image::FORMAT_RGB8);
|
img->convert(Image::FORMAT_RGB8);
|
||||||
|
|
||||||
//save thumbnail directly, as thumbnailer may not update due to actual scene not changing md5
|
// save thumbnail directly, as thumbnailer may not update due to actual scene not changing md5
|
||||||
String temp_path = EditorPaths::get_singleton()->get_cache_dir();
|
String temp_path = EditorPaths::get_singleton()->get_cache_dir();
|
||||||
String cache_base = ProjectSettings::get_singleton()->globalize_path(p_file).md5_text();
|
String cache_base = ProjectSettings::get_singleton()->globalize_path(p_file).md5_text();
|
||||||
cache_base = temp_path.plus_file("resthumb-" + cache_base);
|
cache_base = temp_path.plus_file("resthumb-" + cache_base);
|
||||||
|
|
||||||
//does not have it, try to load a cached thumbnail
|
// does not have it, try to load a cached thumbnail
|
||||||
|
|
||||||
String file = cache_base + ".png";
|
String file = cache_base + ".png";
|
||||||
|
|
||||||
@ -1599,7 +1599,7 @@ static bool _find_edited_resources(const Ref<Resource> &p_resource, Set<Ref<Reso
|
|||||||
if (res.is_null()) {
|
if (res.is_null()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (res->get_path().is_resource_file()) { //not a subresource, continue
|
if (res->get_path().is_resource_file()) { // not a subresource, continue
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (_find_edited_resources(res, edited_resources)) {
|
if (_find_edited_resources(res, edited_resources)) {
|
||||||
@ -1612,7 +1612,7 @@ static bool _find_edited_resources(const Ref<Resource> &p_resource, Set<Ref<Reso
|
|||||||
}
|
}
|
||||||
|
|
||||||
int EditorNode::_save_external_resources() {
|
int EditorNode::_save_external_resources() {
|
||||||
//save external resources and its subresources if any was modified
|
// save external resources and its subresources if any was modified
|
||||||
|
|
||||||
int flg = 0;
|
int flg = 0;
|
||||||
if (EditorSettings::get_singleton()->get("filesystem/on_save/compress_binary_resources")) {
|
if (EditorSettings::get_singleton()->get("filesystem/on_save/compress_binary_resources")) {
|
||||||
@ -1628,7 +1628,7 @@ int EditorNode::_save_external_resources() {
|
|||||||
if (!res->get_path().is_resource_file()) {
|
if (!res->get_path().is_resource_file()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//not only check if this resource is edited, check contained subresources too
|
// not only check if this resource is edited, check contained subresources too
|
||||||
if (_find_edited_resources(res, edited_subresources)) {
|
if (_find_edited_resources(res, edited_subresources)) {
|
||||||
ResourceSaver::save(res->get_path(), res, flg);
|
ResourceSaver::save(res->get_path(), res, flg);
|
||||||
saved++;
|
saved++;
|
||||||
@ -1837,7 +1837,7 @@ void EditorNode::_dialog_action(String p_file) {
|
|||||||
case SETTINGS_PICK_MAIN_SCENE: {
|
case SETTINGS_PICK_MAIN_SCENE: {
|
||||||
ProjectSettings::get_singleton()->set("application/run/main_scene", p_file);
|
ProjectSettings::get_singleton()->set("application/run/main_scene", p_file);
|
||||||
ProjectSettings::get_singleton()->save();
|
ProjectSettings::get_singleton()->save();
|
||||||
//would be nice to show the project manager opened with the highlighted field..
|
// would be nice to show the project manager opened with the highlighted field..
|
||||||
|
|
||||||
if (pick_main_scene->has_meta("from_native") && (bool)pick_main_scene->get_meta("from_native")) {
|
if (pick_main_scene->has_meta("from_native") && (bool)pick_main_scene->get_meta("from_native")) {
|
||||||
run_native->resume_run_native();
|
run_native->resume_run_native();
|
||||||
@ -1980,7 +1980,7 @@ void EditorNode::_dialog_action(String p_file) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
default: { //save scene?
|
default: { // save scene?
|
||||||
|
|
||||||
if (file->get_file_mode() == EditorFileDialog::FILE_MODE_SAVE_FILE) {
|
if (file->get_file_mode() == EditorFileDialog::FILE_MODE_SAVE_FILE) {
|
||||||
_save_scene_with_preview(p_file);
|
_save_scene_with_preview(p_file);
|
||||||
@ -2141,7 +2141,7 @@ void EditorNode::_edit_current() {
|
|||||||
bool is_resource = current_obj->is_class("Resource");
|
bool is_resource = current_obj->is_class("Resource");
|
||||||
bool is_node = current_obj->is_class("Node");
|
bool is_node = current_obj->is_class("Node");
|
||||||
|
|
||||||
String editable_warning; //none by default
|
String editable_warning; // none by default
|
||||||
|
|
||||||
if (is_resource) {
|
if (is_resource) {
|
||||||
Resource *current_res = Object::cast_to<Resource>(current_obj);
|
Resource *current_res = Object::cast_to<Resource>(current_obj);
|
||||||
@ -2243,7 +2243,7 @@ void EditorNode::_edit_current() {
|
|||||||
for (; plugin_index < editor_table.size(); plugin_index++) {
|
for (; plugin_index < editor_table.size(); plugin_index++) {
|
||||||
if (editor_table[plugin_index] == main_plugin) {
|
if (editor_table[plugin_index] == main_plugin) {
|
||||||
if (!main_editor_buttons[plugin_index]->is_visible()) {
|
if (!main_editor_buttons[plugin_index]->is_visible()) {
|
||||||
main_plugin = nullptr; //if button is not visible, then no plugin active
|
main_plugin = nullptr; // if button is not visible, then no plugin active
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -2329,7 +2329,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (run_filename == "") {
|
if (run_filename == "") {
|
||||||
//evidently, run the scene
|
// evidently, run the scene
|
||||||
if (!ensure_main_scene(false)) {
|
if (!ensure_main_scene(false)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -2412,7 +2412,7 @@ void EditorNode::_android_build_source_selected(const String &p_file) {
|
|||||||
export_template_manager->install_android_template_from_file(p_file);
|
export_template_manager->install_android_template_from_file(p_file);
|
||||||
}
|
}
|
||||||
void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
|
void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
|
||||||
if (!p_confirmed) { //this may be a hack..
|
if (!p_confirmed) { // this may be a hack..
|
||||||
current_option = (MenuOptions)p_option;
|
current_option = (MenuOptions)p_option;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2981,7 +2981,7 @@ int EditorNode::_next_unsaved_scene(bool p_valid_filename, int p_start) {
|
|||||||
|
|
||||||
void EditorNode::_exit_editor() {
|
void EditorNode::_exit_editor() {
|
||||||
exiting = true;
|
exiting = true;
|
||||||
resource_preview->stop(); //stop early to avoid crashes
|
resource_preview->stop(); // stop early to avoid crashes
|
||||||
_save_docks();
|
_save_docks();
|
||||||
|
|
||||||
// Dim the editor window while it's quitting to make it clearer that it's busy
|
// Dim the editor window while it's quitting to make it clearer that it's busy
|
||||||
@ -3087,7 +3087,7 @@ void EditorNode::_editor_select(int p_which) {
|
|||||||
|
|
||||||
ERR_FAIL_INDEX(p_which, editor_table.size());
|
ERR_FAIL_INDEX(p_which, editor_table.size());
|
||||||
|
|
||||||
if (!main_editor_buttons[p_which]->is_visible()) { //button hidden, no editor
|
if (!main_editor_buttons[p_which]->is_visible()) { // button hidden, no editor
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3229,7 +3229,7 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled,
|
|||||||
if (!p_enabled) {
|
if (!p_enabled) {
|
||||||
EditorPlugin *addon = plugin_addons[p_addon];
|
EditorPlugin *addon = plugin_addons[p_addon];
|
||||||
remove_editor_plugin(addon, p_config_changed);
|
remove_editor_plugin(addon, p_config_changed);
|
||||||
memdelete(addon); //bye
|
memdelete(addon); // bye
|
||||||
plugin_addons.erase(p_addon);
|
plugin_addons.erase(p_addon);
|
||||||
_update_addon_config();
|
_update_addon_config();
|
||||||
return;
|
return;
|
||||||
@ -3321,10 +3321,10 @@ void EditorNode::_remove_edited_scene(bool p_change_tab) {
|
|||||||
|
|
||||||
void EditorNode::_remove_scene(int index, bool p_change_tab) {
|
void EditorNode::_remove_scene(int index, bool p_change_tab) {
|
||||||
if (editor_data.get_edited_scene() == index) {
|
if (editor_data.get_edited_scene() == index) {
|
||||||
//Scene to remove is current scene
|
// Scene to remove is current scene
|
||||||
_remove_edited_scene(p_change_tab);
|
_remove_edited_scene(p_change_tab);
|
||||||
} else {
|
} else {
|
||||||
//Scene to remove is not active scene
|
// Scene to remove is not active scene
|
||||||
editor_data.remove_scene(index);
|
editor_data.remove_scene(index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3338,7 +3338,7 @@ void EditorNode::set_edited_scene(Node *p_scene) {
|
|||||||
get_editor_data().set_edited_scene_root(p_scene);
|
get_editor_data().set_edited_scene_root(p_scene);
|
||||||
|
|
||||||
if (Object::cast_to<Popup>(p_scene)) {
|
if (Object::cast_to<Popup>(p_scene)) {
|
||||||
Object::cast_to<Popup>(p_scene)->show(); //show popups
|
Object::cast_to<Popup>(p_scene)->show(); // show popups
|
||||||
}
|
}
|
||||||
scene_tree_dock->set_edited_scene(p_scene);
|
scene_tree_dock->set_edited_scene(p_scene);
|
||||||
if (get_tree()) {
|
if (get_tree()) {
|
||||||
@ -3374,7 +3374,7 @@ Dictionary EditorNode::_get_main_scene_state() {
|
|||||||
|
|
||||||
void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
|
void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
|
||||||
if (get_edited_scene() != p_for_scene && p_for_scene != nullptr) {
|
if (get_edited_scene() != p_for_scene && p_for_scene != nullptr) {
|
||||||
return; //not for this scene
|
return; // not for this scene
|
||||||
}
|
}
|
||||||
|
|
||||||
changing_scene = false;
|
changing_scene = false;
|
||||||
@ -3389,7 +3389,7 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
|
|||||||
|
|
||||||
if (p_state.has("editor_index")) {
|
if (p_state.has("editor_index")) {
|
||||||
int index = p_state["editor_index"];
|
int index = p_state["editor_index"];
|
||||||
if (current < 2) { //if currently in spatial/2d, only switch to spatial/2d. if currently in script, stay there
|
if (current < 2) { // if currently in spatial/2d, only switch to spatial/2d. if currently in script, stay there
|
||||||
if (index < 2 || !get_edited_scene()) {
|
if (index < 2 || !get_edited_scene()) {
|
||||||
_editor_select(index);
|
_editor_select(index);
|
||||||
}
|
}
|
||||||
@ -3398,7 +3398,7 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
|
|||||||
|
|
||||||
if (get_edited_scene()) {
|
if (get_edited_scene()) {
|
||||||
if (current < 2) {
|
if (current < 2) {
|
||||||
//use heuristic instead
|
// use heuristic instead
|
||||||
int n2d = 0, n3d = 0;
|
int n2d = 0, n3d = 0;
|
||||||
_find_node_types(get_edited_scene(), n2d, n3d);
|
_find_node_types(get_edited_scene(), n2d, n3d);
|
||||||
if (n2d > n3d) {
|
if (n2d > n3d) {
|
||||||
@ -3420,7 +3420,7 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
|
|||||||
scene_tree_dock->set_filter(p_state["node_filter"]);
|
scene_tree_dock->set_filter(p_state["node_filter"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
//this should only happen at the very end
|
// this should only happen at the very end
|
||||||
|
|
||||||
EditorDebuggerNode::get_singleton()->update_live_edit_root();
|
EditorDebuggerNode::get_singleton()->update_live_edit_root();
|
||||||
ScriptEditor::get_singleton()->set_scene_root_script(editor_data.get_scene_root_script(editor_data.get_edited_scene()));
|
ScriptEditor::get_singleton()->set_scene_root_script(editor_data.get_scene_root_script(editor_data.get_edited_scene()));
|
||||||
@ -3441,7 +3441,7 @@ void EditorNode::_clear_undo_history() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EditorNode::set_current_scene(int p_idx) {
|
void EditorNode::set_current_scene(int p_idx) {
|
||||||
//Save the folding in case the scene gets reloaded.
|
// Save the folding in case the scene gets reloaded.
|
||||||
if (editor_data.get_scene_path(p_idx) != "" && editor_data.get_edited_scene_root(p_idx)) {
|
if (editor_data.get_scene_path(p_idx) != "" && editor_data.get_edited_scene_root(p_idx)) {
|
||||||
editor_folding.save_scene_folding(editor_data.get_edited_scene_root(p_idx), editor_data.get_scene_path(p_idx));
|
editor_folding.save_scene_folding(editor_data.get_edited_scene_root(p_idx), editor_data.get_scene_path(p_idx));
|
||||||
}
|
}
|
||||||
@ -3469,7 +3469,7 @@ void EditorNode::set_current_scene(int p_idx) {
|
|||||||
Node *new_scene = editor_data.get_edited_scene_root();
|
Node *new_scene = editor_data.get_edited_scene_root();
|
||||||
|
|
||||||
if (Object::cast_to<Popup>(new_scene)) {
|
if (Object::cast_to<Popup>(new_scene)) {
|
||||||
Object::cast_to<Popup>(new_scene)->show(); //show popups
|
Object::cast_to<Popup>(new_scene)->show(); // show popups
|
||||||
}
|
}
|
||||||
|
|
||||||
scene_tree_dock->set_edited_scene(new_scene);
|
scene_tree_dock->set_edited_scene(new_scene);
|
||||||
@ -3488,7 +3488,7 @@ void EditorNode::set_current_scene(int p_idx) {
|
|||||||
|
|
||||||
_update_title();
|
_update_title();
|
||||||
|
|
||||||
call_deferred(SNAME("_set_main_scene_state"), state, get_edited_scene()); //do after everything else is done setting up
|
call_deferred(SNAME("_set_main_scene_state"), state, get_edited_scene()); // do after everything else is done setting up
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EditorNode::is_scene_open(const String &p_path) {
|
bool EditorNode::is_scene_open(const String &p_path) {
|
||||||
@ -3590,7 +3590,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
|
|||||||
return ERR_FILE_MISSING_DEPENDENCIES;
|
return ERR_FILE_MISSING_DEPENDENCIES;
|
||||||
}
|
}
|
||||||
|
|
||||||
dependency_errors.erase(lpath); //at least not self path
|
dependency_errors.erase(lpath); // at least not self path
|
||||||
|
|
||||||
for (KeyValue<String, Set<String>> &E : dependency_errors) {
|
for (KeyValue<String, Set<String>> &E : dependency_errors) {
|
||||||
String txt = vformat(TTR("Scene '%s' has broken dependencies:"), E.key) + "\n";
|
String txt = vformat(TTR("Scene '%s' has broken dependencies:"), E.key) + "\n";
|
||||||
@ -3601,7 +3601,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ResourceCache::has(lpath)) {
|
if (ResourceCache::has(lpath)) {
|
||||||
//used from somewhere else? no problem! update state and replace sdata
|
// used from somewhere else? no problem! update state and replace sdata
|
||||||
Ref<PackedScene> ps = Ref<PackedScene>(Object::cast_to<PackedScene>(ResourceCache::get(lpath)));
|
Ref<PackedScene> ps = Ref<PackedScene>(Object::cast_to<PackedScene>(ResourceCache::get(lpath)));
|
||||||
if (ps.is_valid()) {
|
if (ps.is_valid()) {
|
||||||
ps->replace_state(sdata->get_state());
|
ps->replace_state(sdata->get_state());
|
||||||
@ -3610,7 +3610,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
sdata->set_path(lpath, true); //take over path
|
sdata->set_path(lpath, true); // take over path
|
||||||
}
|
}
|
||||||
|
|
||||||
Node *new_scene = sdata->instantiate(PackedScene::GEN_EDIT_STATE_MAIN);
|
Node *new_scene = sdata->instantiate(PackedScene::GEN_EDIT_STATE_MAIN);
|
||||||
@ -4224,7 +4224,7 @@ void EditorNode::_dock_make_float() {
|
|||||||
ERR_FAIL_COND(!dock);
|
ERR_FAIL_COND(!dock);
|
||||||
|
|
||||||
const Size2i borders = Size2i(4, 4) * EDSCALE;
|
const Size2i borders = Size2i(4, 4) * EDSCALE;
|
||||||
Size2 dock_size = dock->get_size() + borders * 2; //remember size
|
Size2 dock_size = dock->get_size() + borders * 2; // remember size
|
||||||
Point2 dock_screen_pos = dock->get_global_position() + get_tree()->get_root()->get_position() - borders;
|
Point2 dock_screen_pos = dock->get_global_position() + get_tree()->get_root()->get_position() - borders;
|
||||||
|
|
||||||
print_line("dock pos: " + dock->get_global_position() + " window pos: " + get_tree()->get_root()->get_position());
|
print_line("dock pos: " + dock->get_global_position() + " window pos: " + get_tree()->get_root()->get_position());
|
||||||
@ -4464,7 +4464,7 @@ void EditorNode::_dock_select_draw() {
|
|||||||
|
|
||||||
void EditorNode::_save_docks() {
|
void EditorNode::_save_docks() {
|
||||||
if (waiting_for_first_scan) {
|
if (waiting_for_first_scan) {
|
||||||
return; //scanning, do not touch docks
|
return; // scanning, do not touch docks
|
||||||
}
|
}
|
||||||
Ref<ConfigFile> config;
|
Ref<ConfigFile> config;
|
||||||
config.instantiate();
|
config.instantiate();
|
||||||
@ -4535,7 +4535,7 @@ void EditorNode::_load_docks() {
|
|||||||
config.instantiate();
|
config.instantiate();
|
||||||
Error err = config->load(EditorSettings::get_singleton()->get_project_settings_dir().plus_file("editor_layout.cfg"));
|
Error err = config->load(EditorSettings::get_singleton()->get_project_settings_dir().plus_file("editor_layout.cfg"));
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
//no config
|
// no config
|
||||||
if (overridden_default_layout >= 0) {
|
if (overridden_default_layout >= 0) {
|
||||||
_layout_menu_option(overridden_default_layout);
|
_layout_menu_option(overridden_default_layout);
|
||||||
}
|
}
|
||||||
@ -4648,7 +4648,7 @@ void EditorNode::_load_docks_from_config(Ref<ConfigFile> p_layout, const String
|
|||||||
|
|
||||||
for (int j = 0; j < names.size(); j++) {
|
for (int j = 0; j < names.size(); j++) {
|
||||||
String name = names[j];
|
String name = names[j];
|
||||||
//find it, in a horribly inefficient way
|
// find it, in a horribly inefficient way
|
||||||
int atidx = -1;
|
int atidx = -1;
|
||||||
Control *node = nullptr;
|
Control *node = nullptr;
|
||||||
for (int k = 0; k < DOCK_SLOT_MAX; k++) {
|
for (int k = 0; k < DOCK_SLOT_MAX; k++) {
|
||||||
@ -4662,7 +4662,7 @@ void EditorNode::_load_docks_from_config(Ref<ConfigFile> p_layout, const String
|
|||||||
atidx = k;
|
atidx = k;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (atidx == -1) { //well, it's not anywhere
|
if (atidx == -1) { // well, it's not anywhere
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4778,7 +4778,7 @@ bool EditorNode::has_scenes_in_session() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool EditorNode::ensure_main_scene(bool p_from_native) {
|
bool EditorNode::ensure_main_scene(bool p_from_native) {
|
||||||
pick_main_scene->set_meta("from_native", p_from_native); //whether from play button or native run
|
pick_main_scene->set_meta("from_native", p_from_native); // whether from play button or native run
|
||||||
String main_scene = GLOBAL_DEF("application/run/main_scene", "");
|
String main_scene = GLOBAL_DEF("application/run/main_scene", "");
|
||||||
|
|
||||||
if (main_scene == "") {
|
if (main_scene == "") {
|
||||||
@ -4899,7 +4899,7 @@ void EditorNode::_update_layouts_menu() {
|
|||||||
config.instantiate();
|
config.instantiate();
|
||||||
Error err = config->load(EditorSettings::get_singleton()->get_editor_layouts_config());
|
Error err = config->load(EditorSettings::get_singleton()->get_editor_layouts_config());
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
return; //no config
|
return; // no config
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> layouts;
|
List<String> layouts;
|
||||||
@ -4940,7 +4940,7 @@ void EditorNode::_layout_menu_option(int p_id) {
|
|||||||
config.instantiate();
|
config.instantiate();
|
||||||
Error err = config->load(EditorSettings::get_singleton()->get_editor_layouts_config());
|
Error err = config->load(EditorSettings::get_singleton()->get_editor_layouts_config());
|
||||||
if (err != OK) {
|
if (err != OK) {
|
||||||
return; //no config
|
return; // no config
|
||||||
}
|
}
|
||||||
|
|
||||||
_load_docks_from_config(config, editor_layouts->get_item_text(p_id));
|
_load_docks_from_config(config, editor_layouts->get_item_text(p_id));
|
||||||
@ -5081,7 +5081,7 @@ void EditorNode::_scene_tab_changed(int p_tab) {
|
|||||||
bool unsaved = (saved_version != editor_data.get_undo_redo().get_version());
|
bool unsaved = (saved_version != editor_data.get_undo_redo().get_version());
|
||||||
|
|
||||||
if (p_tab == editor_data.get_edited_scene()) {
|
if (p_tab == editor_data.get_edited_scene()) {
|
||||||
return; //pointless
|
return; // pointless
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t next_scene_version = editor_data.get_scene_version(p_tab);
|
uint64_t next_scene_version = editor_data.get_scene_version(p_tab);
|
||||||
@ -5284,11 +5284,11 @@ Variant EditorNode::drag_resource(const Ref<Resource> &p_res, Control *p_from) {
|
|||||||
Ref<Texture2D> preview;
|
Ref<Texture2D> preview;
|
||||||
|
|
||||||
{
|
{
|
||||||
//todo make proper previews
|
// todo make proper previews
|
||||||
Ref<ImageTexture> texture = gui_base->get_theme_icon(SNAME("FileBigThumb"), SNAME("EditorIcons"));
|
Ref<ImageTexture> texture = gui_base->get_theme_icon(SNAME("FileBigThumb"), SNAME("EditorIcons"));
|
||||||
Ref<Image> img = texture->get_image();
|
Ref<Image> img = texture->get_image();
|
||||||
img = img->duplicate();
|
img = img->duplicate();
|
||||||
img->resize(48, 48); //meh
|
img->resize(48, 48); // meh
|
||||||
Ref<ImageTexture> resized_pic = Ref<ImageTexture>(memnew(ImageTexture));
|
Ref<ImageTexture> resized_pic = Ref<ImageTexture>(memnew(ImageTexture));
|
||||||
resized_pic->create_from_image(img);
|
resized_pic->create_from_image(img);
|
||||||
preview = resized_pic;
|
preview = resized_pic;
|
||||||
@ -5306,7 +5306,7 @@ Variant EditorNode::drag_resource(const Ref<Resource> &p_res, Control *p_from) {
|
|||||||
|
|
||||||
drag_control->add_child(label);
|
drag_control->add_child(label);
|
||||||
|
|
||||||
p_from->set_drag_preview(drag_control); //wait until it enters scene
|
p_from->set_drag_preview(drag_control); // wait until it enters scene
|
||||||
|
|
||||||
label->set_position(Point2((preview->get_width() - label->get_minimum_size().width) / 2, preview->get_height()));
|
label->set_position(Point2((preview->get_width() - label->get_minimum_size().width) / 2, preview->get_height()));
|
||||||
|
|
||||||
@ -5360,7 +5360,7 @@ Variant EditorNode::drag_files_and_dirs(const Vector<String> &p_paths, Control *
|
|||||||
}
|
}
|
||||||
vbox->add_child(label);
|
vbox->add_child(label);
|
||||||
}
|
}
|
||||||
p_from->set_drag_preview(vbox); //wait until it enters scene
|
p_from->set_drag_preview(vbox); // wait until it enters scene
|
||||||
|
|
||||||
Dictionary drag_data;
|
Dictionary drag_data;
|
||||||
drag_data["type"] = has_folder ? "files_and_dirs" : "files";
|
drag_data["type"] = has_folder ? "files_and_dirs" : "files";
|
||||||
@ -5477,7 +5477,7 @@ void EditorNode::reload_scene(const String &p_path) {
|
|||||||
|
|
||||||
if (scene_idx == -1) {
|
if (scene_idx == -1) {
|
||||||
if (get_edited_scene()) {
|
if (get_edited_scene()) {
|
||||||
//scene is not open, so at it might be instantiated. We'll refresh the whole scene later.
|
// scene is not open, so at it might be instantiated. We'll refresh the whole scene later.
|
||||||
editor_data.get_undo_redo().clear_history();
|
editor_data.get_undo_redo().clear_history();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -5488,17 +5488,17 @@ void EditorNode::reload_scene(const String &p_path) {
|
|||||||
_set_scene_metadata(p_path);
|
_set_scene_metadata(p_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
//remove scene
|
// remove scene
|
||||||
_remove_scene(scene_idx, false);
|
_remove_scene(scene_idx, false);
|
||||||
|
|
||||||
//reload scene
|
// reload scene
|
||||||
load_scene(p_path, true, false, true, true);
|
load_scene(p_path, true, false, true, true);
|
||||||
|
|
||||||
//adjust index so tab is back a the previous position
|
// adjust index so tab is back a the previous position
|
||||||
editor_data.move_edited_scene_to_index(scene_idx);
|
editor_data.move_edited_scene_to_index(scene_idx);
|
||||||
get_undo_redo()->clear_history();
|
get_undo_redo()->clear_history();
|
||||||
|
|
||||||
//recover the tab
|
// recover the tab
|
||||||
scene_tabs->set_current_tab(current_tab);
|
scene_tabs->set_current_tab(current_tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5598,7 +5598,7 @@ void EditorNode::_update_video_driver_color() {
|
|||||||
void EditorNode::_video_driver_selected(int p_which) {
|
void EditorNode::_video_driver_selected(int p_which) {
|
||||||
String driver = video_driver->get_item_metadata(p_which);
|
String driver = video_driver->get_item_metadata(p_which);
|
||||||
|
|
||||||
String current = ""; //OS::get_singleton()->get_video_driver_name(OS::get_singleton()->get_current_video_driver());
|
String current = ""; // OS::get_singleton()->get_video_driver_name(OS::get_singleton()->get_current_video_driver());
|
||||||
|
|
||||||
if (driver == current) {
|
if (driver == current) {
|
||||||
return;
|
return;
|
||||||
@ -5787,9 +5787,9 @@ EditorNode::EditorNode() {
|
|||||||
PhysicsServer2D::get_singleton()->set_active(false); // no physics by default if editor
|
PhysicsServer2D::get_singleton()->set_active(false); // no physics by default if editor
|
||||||
ScriptServer::set_scripting_enabled(false); // no scripting by default if editor
|
ScriptServer::set_scripting_enabled(false); // no scripting by default if editor
|
||||||
|
|
||||||
EditorHelp::generate_doc(); //before any editor classes are created
|
EditorHelp::generate_doc(); // before any editor classes are created
|
||||||
SceneState::set_disable_placeholders(true);
|
SceneState::set_disable_placeholders(true);
|
||||||
ResourceLoader::clear_translation_remaps(); //no remaps using during editor
|
ResourceLoader::clear_translation_remaps(); // no remaps using during editor
|
||||||
ResourceLoader::clear_path_remaps();
|
ResourceLoader::clear_path_remaps();
|
||||||
|
|
||||||
Input *id = Input::get_singleton();
|
Input *id = Input::get_singleton();
|
||||||
@ -5803,8 +5803,8 @@ EditorNode::EditorNode() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!found_touchscreen && Input::get_singleton()) {
|
if (!found_touchscreen && Input::get_singleton()) {
|
||||||
//only if no touchscreen ui hint, set emulation
|
// only if no touchscreen ui hint, set emulation
|
||||||
id->set_emulate_touch_from_mouse(false); //just disable just in case
|
id->set_emulate_touch_from_mouse(false); // just disable just in case
|
||||||
}
|
}
|
||||||
DisplayServer::get_singleton()->cursor_set_custom_image(RES());
|
DisplayServer::get_singleton()->cursor_set_custom_image(RES());
|
||||||
}
|
}
|
||||||
@ -5871,7 +5871,7 @@ EditorNode::EditorNode() {
|
|||||||
ResourceLoader::set_error_notify_func(this, _load_error_notify);
|
ResourceLoader::set_error_notify_func(this, _load_error_notify);
|
||||||
ResourceLoader::set_dependency_error_notify_func(this, _dependency_error_report);
|
ResourceLoader::set_dependency_error_notify_func(this, _dependency_error_report);
|
||||||
|
|
||||||
{ //register importers at the beginning, so dialogs are created with the right extensions
|
{ // register importers at the beginning, so dialogs are created with the right extensions
|
||||||
Ref<ResourceImporterTexture> import_texture;
|
Ref<ResourceImporterTexture> import_texture;
|
||||||
import_texture.instantiate();
|
import_texture.instantiate();
|
||||||
ResourceFormatImporter::get_singleton()->add_importer(import_texture);
|
ResourceFormatImporter::get_singleton()->add_importer(import_texture);
|
||||||
@ -5974,7 +5974,7 @@ EditorNode::EditorNode() {
|
|||||||
EditorFileSystem *efs = memnew(EditorFileSystem);
|
EditorFileSystem *efs = memnew(EditorFileSystem);
|
||||||
add_child(efs);
|
add_child(efs);
|
||||||
|
|
||||||
//used for previews
|
// used for previews
|
||||||
FileDialog::get_icon_func = _file_dialog_get_icon;
|
FileDialog::get_icon_func = _file_dialog_get_icon;
|
||||||
FileDialog::register_func = _file_dialog_register;
|
FileDialog::register_func = _file_dialog_register;
|
||||||
FileDialog::unregister_func = _file_dialog_unregister;
|
FileDialog::unregister_func = _file_dialog_unregister;
|
||||||
@ -5993,7 +5993,7 @@ EditorNode::EditorNode() {
|
|||||||
|
|
||||||
ClassDB::set_class_enabled("RootMotionView", true);
|
ClassDB::set_class_enabled("RootMotionView", true);
|
||||||
|
|
||||||
//defs here, use EDITOR_GET in logic
|
// defs here, use EDITOR_GET in logic
|
||||||
EDITOR_DEF_RST("interface/scene_tabs/always_show_close_button", false);
|
EDITOR_DEF_RST("interface/scene_tabs/always_show_close_button", false);
|
||||||
EDITOR_DEF_RST("interface/scene_tabs/resize_if_many_tabs", true);
|
EDITOR_DEF_RST("interface/scene_tabs/resize_if_many_tabs", true);
|
||||||
EDITOR_DEF_RST("interface/scene_tabs/minimum_width", 50);
|
EDITOR_DEF_RST("interface/scene_tabs/minimum_width", 50);
|
||||||
@ -6217,13 +6217,13 @@ EditorNode::EditorNode() {
|
|||||||
tab_preview->set_position(Point2(2, 2) * EDSCALE);
|
tab_preview->set_position(Point2(2, 2) * EDSCALE);
|
||||||
tab_preview_panel->add_child(tab_preview);
|
tab_preview_panel->add_child(tab_preview);
|
||||||
|
|
||||||
scene_tabs = memnew(Tabs);
|
scene_tabs = memnew(TabBar);
|
||||||
scene_tabs->add_theme_style_override("tab_selected", gui_base->get_theme_stylebox(SNAME("SceneTabFG"), SNAME("EditorStyles")));
|
scene_tabs->add_theme_style_override("tab_selected", gui_base->get_theme_stylebox(SNAME("SceneTabFG"), SNAME("EditorStyles")));
|
||||||
scene_tabs->add_theme_style_override("tab_unselected", gui_base->get_theme_stylebox(SNAME("SceneTabBG"), SNAME("EditorStyles")));
|
scene_tabs->add_theme_style_override("tab_unselected", gui_base->get_theme_stylebox(SNAME("SceneTabBG"), SNAME("EditorStyles")));
|
||||||
scene_tabs->set_select_with_rmb(true);
|
scene_tabs->set_select_with_rmb(true);
|
||||||
scene_tabs->add_tab("unsaved");
|
scene_tabs->add_tab("unsaved");
|
||||||
scene_tabs->set_tab_align(Tabs::ALIGN_LEFT);
|
scene_tabs->set_tab_align(TabBar::ALIGN_LEFT);
|
||||||
scene_tabs->set_tab_close_display_policy((bool(EDITOR_DEF("interface/scene_tabs/always_show_close_button", false)) ? Tabs::CLOSE_BUTTON_SHOW_ALWAYS : Tabs::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
|
scene_tabs->set_tab_close_display_policy((bool(EDITOR_DEF("interface/scene_tabs/always_show_close_button", false)) ? TabBar::CLOSE_BUTTON_SHOW_ALWAYS : TabBar::CLOSE_BUTTON_SHOW_ACTIVE_ONLY));
|
||||||
scene_tabs->set_min_width(int(EDITOR_DEF("interface/scene_tabs/minimum_width", 50)) * EDSCALE);
|
scene_tabs->set_min_width(int(EDITOR_DEF("interface/scene_tabs/minimum_width", 50)) * EDSCALE);
|
||||||
scene_tabs->set_drag_to_rearrange_enabled(true);
|
scene_tabs->set_drag_to_rearrange_enabled(true);
|
||||||
scene_tabs->connect("tab_changed", callable_mp(this, &EditorNode::_scene_tab_changed));
|
scene_tabs->connect("tab_changed", callable_mp(this, &EditorNode::_scene_tab_changed));
|
||||||
@ -6924,7 +6924,7 @@ EditorNode::EditorNode() {
|
|||||||
|
|
||||||
EditorAudioBuses *audio_bus_editor = EditorAudioBuses::register_editor();
|
EditorAudioBuses *audio_bus_editor = EditorAudioBuses::register_editor();
|
||||||
|
|
||||||
ScriptTextEditor::register_editor(); //register one for text scripts
|
ScriptTextEditor::register_editor(); // register one for text scripts
|
||||||
TextEditor::register_editor();
|
TextEditor::register_editor();
|
||||||
|
|
||||||
if (StreamPeerSSL::is_available()) {
|
if (StreamPeerSSL::is_available()) {
|
||||||
@ -6933,12 +6933,12 @@ EditorNode::EditorNode() {
|
|||||||
WARN_PRINT("Asset Library not available, as it requires SSL to work.");
|
WARN_PRINT("Asset Library not available, as it requires SSL to work.");
|
||||||
}
|
}
|
||||||
|
|
||||||
//add interface before adding plugins
|
// add interface before adding plugins
|
||||||
|
|
||||||
editor_interface = memnew(EditorInterface);
|
editor_interface = memnew(EditorInterface);
|
||||||
add_child(editor_interface);
|
add_child(editor_interface);
|
||||||
|
|
||||||
//more visually meaningful to have this later
|
// more visually meaningful to have this later
|
||||||
raise_bottom_panel_item(AnimationPlayerEditor::get_singleton());
|
raise_bottom_panel_item(AnimationPlayerEditor::get_singleton());
|
||||||
|
|
||||||
add_editor_plugin(VersionControlEditorPlugin::get_singleton());
|
add_editor_plugin(VersionControlEditorPlugin::get_singleton());
|
||||||
|
@ -85,7 +85,7 @@ class ProjectSettingsEditor;
|
|||||||
class RunSettingsDialog;
|
class RunSettingsDialog;
|
||||||
class ScriptCreateDialog;
|
class ScriptCreateDialog;
|
||||||
class TabContainer;
|
class TabContainer;
|
||||||
class Tabs;
|
class TabBar;
|
||||||
class TextureProgressBar;
|
class TextureProgressBar;
|
||||||
class Button;
|
class Button;
|
||||||
class VSplitContainer;
|
class VSplitContainer;
|
||||||
@ -216,7 +216,7 @@ private:
|
|||||||
TOOL_MENU_BASE = 1000
|
TOOL_MENU_BASE = 1000
|
||||||
};
|
};
|
||||||
|
|
||||||
SubViewport *scene_root; //root of the scene being edited
|
SubViewport *scene_root; // root of the scene being edited
|
||||||
|
|
||||||
PanelContainer *scene_root_parent;
|
PanelContainer *scene_root_parent;
|
||||||
Control *theme_base;
|
Control *theme_base;
|
||||||
@ -250,7 +250,7 @@ private:
|
|||||||
|
|
||||||
// Main tabs
|
// Main tabs
|
||||||
|
|
||||||
Tabs *scene_tabs;
|
TabBar *scene_tabs;
|
||||||
PopupMenu *scene_tabs_context_menu;
|
PopupMenu *scene_tabs_context_menu;
|
||||||
Panel *tab_preview_panel;
|
Panel *tab_preview_panel;
|
||||||
TextureRect *tab_preview;
|
TextureRect *tab_preview;
|
||||||
@ -324,7 +324,7 @@ private:
|
|||||||
|
|
||||||
EditorSettingsDialog *settings_config_dialog;
|
EditorSettingsDialog *settings_config_dialog;
|
||||||
ProjectSettingsEditor *project_settings;
|
ProjectSettingsEditor *project_settings;
|
||||||
bool settings_changed = true; //make it update settings on first frame
|
bool settings_changed = true; // make it update settings on first frame
|
||||||
void _update_from_settings();
|
void _update_from_settings();
|
||||||
|
|
||||||
PopupMenu *vcs_actions_menu;
|
PopupMenu *vcs_actions_menu;
|
||||||
@ -775,7 +775,7 @@ public:
|
|||||||
|
|
||||||
Node *get_edited_scene() { return editor_data.get_edited_scene_root(); }
|
Node *get_edited_scene() { return editor_data.get_edited_scene_root(); }
|
||||||
|
|
||||||
SubViewport *get_scene_root() { return scene_root; } //root of the scene being edited
|
SubViewport *get_scene_root() { return scene_root; } // root of the scene being edited
|
||||||
|
|
||||||
void fix_dependencies(const String &p_for_file);
|
void fix_dependencies(const String &p_for_file);
|
||||||
void clear_scene() { _cleanup_scene(); }
|
void clear_scene() { _cleanup_scene(); }
|
||||||
|
@ -403,7 +403,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
|||||||
|
|
||||||
float prev_icon_saturation = theme->has_color("icon_saturation", "Editor") ? theme->get_color("icon_saturation", "Editor").r : 1.0;
|
float prev_icon_saturation = theme->has_color("icon_saturation", "Editor") ? theme->get_color("icon_saturation", "Editor").r : 1.0;
|
||||||
|
|
||||||
theme->set_color("icon_saturation", "Editor", Color(icon_saturation, icon_saturation, icon_saturation)); //can't save single float in theme, so using color
|
theme->set_color("icon_saturation", "Editor", Color(icon_saturation, icon_saturation, icon_saturation)); // can't save single float in theme, so using color
|
||||||
theme->set_color("accent_color", "Editor", accent_color);
|
theme->set_color("accent_color", "Editor", accent_color);
|
||||||
theme->set_color("highlight_color", "Editor", highlight_color);
|
theme->set_color("highlight_color", "Editor", highlight_color);
|
||||||
theme->set_color("disabled_highlight_color", "Editor", disabled_highlight_color);
|
theme->set_color("disabled_highlight_color", "Editor", disabled_highlight_color);
|
||||||
@ -549,7 +549,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
|||||||
|
|
||||||
Ref<StyleBoxEmpty> style_empty = make_empty_stylebox(default_margin_size, default_margin_size, default_margin_size, default_margin_size);
|
Ref<StyleBoxEmpty> style_empty = make_empty_stylebox(default_margin_size, default_margin_size, default_margin_size, default_margin_size);
|
||||||
|
|
||||||
// Tabs
|
// TabBar
|
||||||
|
|
||||||
Ref<StyleBoxFlat> style_tab_selected = style_widget->duplicate();
|
Ref<StyleBoxFlat> style_tab_selected = style_widget->duplicate();
|
||||||
|
|
||||||
@ -950,33 +950,33 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
|||||||
theme->set_constant("icon_margin", "ItemList", 6 * EDSCALE);
|
theme->set_constant("icon_margin", "ItemList", 6 * EDSCALE);
|
||||||
theme->set_constant("line_separation", "ItemList", 3 * EDSCALE);
|
theme->set_constant("line_separation", "ItemList", 3 * EDSCALE);
|
||||||
|
|
||||||
// Tabs & TabContainer
|
// TabBar & TabContainer
|
||||||
theme->set_stylebox("tab_selected", "TabContainer", style_tab_selected);
|
theme->set_stylebox("tab_selected", "TabContainer", style_tab_selected);
|
||||||
theme->set_stylebox("tab_unselected", "TabContainer", style_tab_unselected);
|
theme->set_stylebox("tab_unselected", "TabContainer", style_tab_unselected);
|
||||||
theme->set_stylebox("tab_disabled", "TabContainer", style_tab_disabled);
|
theme->set_stylebox("tab_disabled", "TabContainer", style_tab_disabled);
|
||||||
theme->set_stylebox("tab_selected", "Tabs", style_tab_selected);
|
theme->set_stylebox("tab_selected", "TabBar", style_tab_selected);
|
||||||
theme->set_stylebox("tab_unselected", "Tabs", style_tab_unselected);
|
theme->set_stylebox("tab_unselected", "TabBar", style_tab_unselected);
|
||||||
theme->set_stylebox("tab_disabled", "Tabs", style_tab_disabled);
|
theme->set_stylebox("tab_disabled", "TabBar", style_tab_disabled);
|
||||||
theme->set_color("font_selected_color", "TabContainer", font_color);
|
theme->set_color("font_selected_color", "TabContainer", font_color);
|
||||||
theme->set_color("font_unselected_color", "TabContainer", font_disabled_color);
|
theme->set_color("font_unselected_color", "TabContainer", font_disabled_color);
|
||||||
theme->set_color("font_selected_color", "Tabs", font_color);
|
theme->set_color("font_selected_color", "TabBar", font_color);
|
||||||
theme->set_color("font_unselected_color", "Tabs", font_disabled_color);
|
theme->set_color("font_unselected_color", "TabBar", font_disabled_color);
|
||||||
theme->set_icon("menu", "TabContainer", theme->get_icon("GuiTabMenu", "EditorIcons"));
|
theme->set_icon("menu", "TabContainer", theme->get_icon("GuiTabMenu", "EditorIcons"));
|
||||||
theme->set_icon("menu_highlight", "TabContainer", theme->get_icon("GuiTabMenuHl", "EditorIcons"));
|
theme->set_icon("menu_highlight", "TabContainer", theme->get_icon("GuiTabMenuHl", "EditorIcons"));
|
||||||
theme->set_stylebox("SceneTabFG", "EditorStyles", style_tab_selected);
|
theme->set_stylebox("SceneTabFG", "EditorStyles", style_tab_selected);
|
||||||
theme->set_stylebox("SceneTabBG", "EditorStyles", style_tab_unselected);
|
theme->set_stylebox("SceneTabBG", "EditorStyles", style_tab_unselected);
|
||||||
theme->set_icon("close", "Tabs", theme->get_icon("GuiClose", "EditorIcons"));
|
theme->set_icon("close", "TabBar", theme->get_icon("GuiClose", "EditorIcons"));
|
||||||
theme->set_stylebox("close_bg_pressed", "Tabs", style_menu);
|
theme->set_stylebox("close_bg_pressed", "TabBar", style_menu);
|
||||||
theme->set_stylebox("close_bg_highlight", "Tabs", style_menu);
|
theme->set_stylebox("close_bg_highlight", "TabBar", style_menu);
|
||||||
theme->set_icon("increment", "TabContainer", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
|
theme->set_icon("increment", "TabContainer", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
|
||||||
theme->set_icon("decrement", "TabContainer", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
theme->set_icon("decrement", "TabContainer", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
||||||
theme->set_icon("increment", "Tabs", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
|
theme->set_icon("increment", "TabBar", theme->get_icon("GuiScrollArrowRight", "EditorIcons"));
|
||||||
theme->set_icon("decrement", "Tabs", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
theme->set_icon("decrement", "TabBar", theme->get_icon("GuiScrollArrowLeft", "EditorIcons"));
|
||||||
theme->set_icon("increment_highlight", "Tabs", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
|
theme->set_icon("increment_highlight", "TabBar", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
|
||||||
theme->set_icon("decrement_highlight", "Tabs", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
|
theme->set_icon("decrement_highlight", "TabBar", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
|
||||||
theme->set_icon("increment_highlight", "TabContainer", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
|
theme->set_icon("increment_highlight", "TabContainer", theme->get_icon("GuiScrollArrowRightHl", "EditorIcons"));
|
||||||
theme->set_icon("decrement_highlight", "TabContainer", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
|
theme->set_icon("decrement_highlight", "TabContainer", theme->get_icon("GuiScrollArrowLeftHl", "EditorIcons"));
|
||||||
theme->set_constant("hseparation", "Tabs", 4 * EDSCALE);
|
theme->set_constant("hseparation", "TabBar", 4 * EDSCALE);
|
||||||
|
|
||||||
// Content of each tab
|
// Content of each tab
|
||||||
Ref<StyleBoxFlat> style_content_panel = style_default->duplicate();
|
Ref<StyleBoxFlat> style_content_panel = style_default->duplicate();
|
||||||
|
Before Width: | Height: | Size: 202 B After Width: | Height: | Size: 202 B |
@ -3204,7 +3204,7 @@ void ThemeEditor::_add_preview_tab(ThemeEditorPreview *p_preview_tab, const Stri
|
|||||||
|
|
||||||
preview_tabs->add_tab(p_preview_name, p_icon);
|
preview_tabs->add_tab(p_preview_name, p_icon);
|
||||||
preview_tabs_content->add_child(p_preview_tab);
|
preview_tabs_content->add_child(p_preview_tab);
|
||||||
preview_tabs->set_tab_right_button(preview_tabs->get_tab_count() - 1, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("close"), SNAME("Tabs")));
|
preview_tabs->set_tab_right_button(preview_tabs->get_tab_count() - 1, EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("close"), SNAME("TabBar")));
|
||||||
p_preview_tab->connect("control_picked", callable_mp(this, &ThemeEditor::_preview_control_picked));
|
p_preview_tab->connect("control_picked", callable_mp(this, &ThemeEditor::_preview_control_picked));
|
||||||
|
|
||||||
preview_tabs->set_current_tab(preview_tabs->get_tab_count() - 1);
|
preview_tabs->set_current_tab(preview_tabs->get_tab_count() - 1);
|
||||||
@ -3328,8 +3328,8 @@ ThemeEditor::ThemeEditor() {
|
|||||||
preview_tabs_content->set_draw_behind_parent(true);
|
preview_tabs_content->set_draw_behind_parent(true);
|
||||||
preview_tabs_vb->add_child(preview_tabs_content);
|
preview_tabs_vb->add_child(preview_tabs_content);
|
||||||
|
|
||||||
preview_tabs = memnew(Tabs);
|
preview_tabs = memnew(TabBar);
|
||||||
preview_tabs->set_tab_align(Tabs::ALIGN_LEFT);
|
preview_tabs->set_tab_align(TabBar::ALIGN_LEFT);
|
||||||
preview_tabs->set_h_size_flags(SIZE_EXPAND_FILL);
|
preview_tabs->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||||
preview_tabbar_hb->add_child(preview_tabs);
|
preview_tabbar_hb->add_child(preview_tabs);
|
||||||
preview_tabs->connect("tab_changed", callable_mp(this, &ThemeEditor::_change_preview_tab));
|
preview_tabs->connect("tab_changed", callable_mp(this, &ThemeEditor::_change_preview_tab));
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#include "scene/gui/margin_container.h"
|
#include "scene/gui/margin_container.h"
|
||||||
#include "scene/gui/option_button.h"
|
#include "scene/gui/option_button.h"
|
||||||
#include "scene/gui/scroll_container.h"
|
#include "scene/gui/scroll_container.h"
|
||||||
#include "scene/gui/tabs.h"
|
#include "scene/gui/tab_bar.h"
|
||||||
#include "scene/gui/texture_rect.h"
|
#include "scene/gui/texture_rect.h"
|
||||||
#include "scene/resources/theme.h"
|
#include "scene/resources/theme.h"
|
||||||
#include "theme_editor_preview.h"
|
#include "theme_editor_preview.h"
|
||||||
@ -391,7 +391,7 @@ class ThemeEditor : public VBoxContainer {
|
|||||||
|
|
||||||
Ref<Theme> theme;
|
Ref<Theme> theme;
|
||||||
|
|
||||||
Tabs *preview_tabs;
|
TabBar *preview_tabs;
|
||||||
PanelContainer *preview_tabs_content;
|
PanelContainer *preview_tabs_content;
|
||||||
Button *add_preview_button;
|
Button *add_preview_button;
|
||||||
EditorFileDialog *preview_scene_dialog;
|
EditorFileDialog *preview_scene_dialog;
|
||||||
|
@ -4049,8 +4049,8 @@ TileMapEditor::TileMapEditor() {
|
|||||||
tile_map_editor_plugins.push_back(memnew(TileMapEditorTilesPlugin));
|
tile_map_editor_plugins.push_back(memnew(TileMapEditorTilesPlugin));
|
||||||
tile_map_editor_plugins.push_back(memnew(TileMapEditorTerrainsPlugin));
|
tile_map_editor_plugins.push_back(memnew(TileMapEditorTerrainsPlugin));
|
||||||
|
|
||||||
// Tabs.
|
// TabBar.
|
||||||
tabs_bar = memnew(Tabs);
|
tabs_bar = memnew(TabBar);
|
||||||
tabs_bar->set_clip_tabs(false);
|
tabs_bar->set_clip_tabs(false);
|
||||||
for (int plugin_index = 0; plugin_index < tile_map_editor_plugins.size(); plugin_index++) {
|
for (int plugin_index = 0; plugin_index < tile_map_editor_plugins.size(); plugin_index++) {
|
||||||
Vector<TileMapEditorPlugin::TabData> tabs_vector = tile_map_editor_plugins[plugin_index]->get_tabs();
|
Vector<TileMapEditorPlugin::TabData> tabs_vector = tile_map_editor_plugins[plugin_index]->get_tabs();
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include "editor/editor_node.h"
|
#include "editor/editor_node.h"
|
||||||
#include "scene/2d/tile_map.h"
|
#include "scene/2d/tile_map.h"
|
||||||
#include "scene/gui/box_container.h"
|
#include "scene/gui/box_container.h"
|
||||||
#include "scene/gui/tabs.h"
|
#include "scene/gui/tab_bar.h"
|
||||||
|
|
||||||
class TileMapEditorPlugin : public Object {
|
class TileMapEditorPlugin : public Object {
|
||||||
public:
|
public:
|
||||||
@ -351,7 +351,7 @@ private:
|
|||||||
|
|
||||||
// Bottom panel.
|
// Bottom panel.
|
||||||
Label *missing_tileset_label;
|
Label *missing_tileset_label;
|
||||||
Tabs *tabs_bar;
|
TabBar *tabs_bar;
|
||||||
LocalVector<TileMapEditorPlugin::TabData> tabs_data;
|
LocalVector<TileMapEditorPlugin::TabData> tabs_data;
|
||||||
LocalVector<TileMapEditorPlugin *> tabs_plugins;
|
LocalVector<TileMapEditorPlugin *> tabs_plugins;
|
||||||
void _update_bottom_panel();
|
void _update_bottom_panel();
|
||||||
|
@ -642,8 +642,8 @@ TileSetEditor::TileSetEditor() {
|
|||||||
|
|
||||||
set_process_internal(true);
|
set_process_internal(true);
|
||||||
|
|
||||||
// Tabs.
|
// TabBar.
|
||||||
tabs_bar = memnew(Tabs);
|
tabs_bar = memnew(TabBar);
|
||||||
tabs_bar->set_clip_tabs(false);
|
tabs_bar->set_clip_tabs(false);
|
||||||
tabs_bar->add_tab(TTR("Tiles"));
|
tabs_bar->add_tab(TTR("Tiles"));
|
||||||
tabs_bar->add_tab(TTR("Patterns"));
|
tabs_bar->add_tab(TTR("Patterns"));
|
||||||
|
@ -48,9 +48,9 @@ private:
|
|||||||
bool tile_set_changed_needs_update = false;
|
bool tile_set_changed_needs_update = false;
|
||||||
HSplitContainer *split_container;
|
HSplitContainer *split_container;
|
||||||
|
|
||||||
// Tabs.
|
// TabBar.
|
||||||
HBoxContainer *tile_set_toolbar;
|
HBoxContainer *tile_set_toolbar;
|
||||||
Tabs *tabs_bar;
|
TabBar *tabs_bar;
|
||||||
|
|
||||||
// Tiles.
|
// Tiles.
|
||||||
Label *no_source_selected_label;
|
Label *no_source_selected_label;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* tabs.cpp */
|
/* tab_bar.cpp */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* This file is part of: */
|
/* This file is part of: */
|
||||||
/* GODOT ENGINE */
|
/* GODOT ENGINE */
|
||||||
@ -28,7 +28,7 @@
|
|||||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
#include "tabs.h"
|
#include "tab_bar.h"
|
||||||
|
|
||||||
#include "core/object/message_queue.h"
|
#include "core/object/message_queue.h"
|
||||||
#include "core/string/translation.h"
|
#include "core/string/translation.h"
|
||||||
@ -37,7 +37,7 @@
|
|||||||
#include "scene/gui/label.h"
|
#include "scene/gui/label.h"
|
||||||
#include "scene/gui/texture_rect.h"
|
#include "scene/gui/texture_rect.h"
|
||||||
|
|
||||||
Size2 Tabs::get_minimum_size() const {
|
Size2 TabBar::get_minimum_size() const {
|
||||||
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
|
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
|
||||||
Ref<StyleBox> tab_selected = get_theme_stylebox(SNAME("tab_selected"));
|
Ref<StyleBox> tab_selected = get_theme_stylebox(SNAME("tab_selected"));
|
||||||
Ref<StyleBox> tab_disabled = get_theme_stylebox(SNAME("tab_disabled"));
|
Ref<StyleBox> tab_disabled = get_theme_stylebox(SNAME("tab_disabled"));
|
||||||
@ -90,7 +90,7 @@ Size2 Tabs::get_minimum_size() const {
|
|||||||
return ms;
|
return ms;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::gui_input(const Ref<InputEvent> &p_event) {
|
void TabBar::gui_input(const Ref<InputEvent> &p_event) {
|
||||||
ERR_FAIL_COND(p_event.is_null());
|
ERR_FAIL_COND(p_event.is_null());
|
||||||
|
|
||||||
Ref<InputEventMouseMotion> mm = p_event;
|
Ref<InputEventMouseMotion> mm = p_event;
|
||||||
@ -164,7 +164,7 @@ void Tabs::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
|
|
||||||
if (rb_pressing && !mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_LEFT) {
|
if (rb_pressing && !mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_LEFT) {
|
||||||
if (rb_hover != -1) {
|
if (rb_hover != -1) {
|
||||||
//pressed
|
// pressed
|
||||||
emit_signal(SNAME("tab_rmb_clicked"), rb_hover);
|
emit_signal(SNAME("tab_rmb_clicked"), rb_hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ void Tabs::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
|
|
||||||
if (cb_pressing && !mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_LEFT) {
|
if (cb_pressing && !mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_LEFT) {
|
||||||
if (cb_hover != -1) {
|
if (cb_hover != -1) {
|
||||||
//pressed
|
// pressed
|
||||||
emit_signal(SNAME("tab_closed"), cb_hover);
|
emit_signal(SNAME("tab_closed"), cb_hover);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,7 +252,7 @@ void Tabs::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::_shape(int p_tab) {
|
void TabBar::_shape(int p_tab) {
|
||||||
Ref<Font> font = get_theme_font(SNAME("font"));
|
Ref<Font> font = get_theme_font(SNAME("font"));
|
||||||
int font_size = get_theme_font_size(SNAME("font_size"));
|
int font_size = get_theme_font_size(SNAME("font_size"));
|
||||||
|
|
||||||
@ -268,7 +268,7 @@ void Tabs::_shape(int p_tab) {
|
|||||||
tabs.write[p_tab].text_buf->add_string(tabs.write[p_tab].xl_text, font, font_size, tabs[p_tab].opentype_features, (tabs[p_tab].language != "") ? tabs[p_tab].language : TranslationServer::get_singleton()->get_tool_locale());
|
tabs.write[p_tab].text_buf->add_string(tabs.write[p_tab].xl_text, font, font_size, tabs[p_tab].opentype_features, (tabs[p_tab].language != "") ? tabs[p_tab].language : TranslationServer::get_singleton()->get_tool_locale());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::_notification(int p_what) {
|
void TabBar::_notification(int p_what) {
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
case NOTIFICATION_LAYOUT_DIRECTION_CHANGED: {
|
case NOTIFICATION_LAYOUT_DIRECTION_CHANGED: {
|
||||||
_update_cache();
|
_update_cache();
|
||||||
@ -505,11 +505,11 @@ void Tabs::_notification(int p_what) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_tab_count() const {
|
int TabBar::get_tab_count() const {
|
||||||
return tabs.size();
|
return tabs.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_current_tab(int p_current) {
|
void TabBar::set_current_tab(int p_current) {
|
||||||
if (current == p_current) {
|
if (current == p_current) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -524,27 +524,27 @@ void Tabs::set_current_tab(int p_current) {
|
|||||||
emit_signal(SNAME("tab_changed"), p_current);
|
emit_signal(SNAME("tab_changed"), p_current);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_current_tab() const {
|
int TabBar::get_current_tab() const {
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_previous_tab() const {
|
int TabBar::get_previous_tab() const {
|
||||||
return previous;
|
return previous;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_hovered_tab() const {
|
int TabBar::get_hovered_tab() const {
|
||||||
return hover;
|
return hover;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_tab_offset() const {
|
int TabBar::get_tab_offset() const {
|
||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tabs::get_offset_buttons_visible() const {
|
bool TabBar::get_offset_buttons_visible() const {
|
||||||
return buttons_visible;
|
return buttons_visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_title(int p_tab, const String &p_title) {
|
void TabBar::set_tab_title(int p_tab, const String &p_title) {
|
||||||
ERR_FAIL_INDEX(p_tab, tabs.size());
|
ERR_FAIL_INDEX(p_tab, tabs.size());
|
||||||
tabs.write[p_tab].text = p_title;
|
tabs.write[p_tab].text = p_title;
|
||||||
_shape(p_tab);
|
_shape(p_tab);
|
||||||
@ -552,12 +552,12 @@ void Tabs::set_tab_title(int p_tab, const String &p_title) {
|
|||||||
minimum_size_changed();
|
minimum_size_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
String Tabs::get_tab_title(int p_tab) const {
|
String TabBar::get_tab_title(int p_tab) const {
|
||||||
ERR_FAIL_INDEX_V(p_tab, tabs.size(), "");
|
ERR_FAIL_INDEX_V(p_tab, tabs.size(), "");
|
||||||
return tabs[p_tab].text;
|
return tabs[p_tab].text;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_text_direction(int p_tab, Control::TextDirection p_text_direction) {
|
void TabBar::set_tab_text_direction(int p_tab, Control::TextDirection p_text_direction) {
|
||||||
ERR_FAIL_INDEX(p_tab, tabs.size());
|
ERR_FAIL_INDEX(p_tab, tabs.size());
|
||||||
ERR_FAIL_COND((int)p_text_direction < -1 || (int)p_text_direction > 3);
|
ERR_FAIL_COND((int)p_text_direction < -1 || (int)p_text_direction > 3);
|
||||||
if (tabs[p_tab].text_direction != p_text_direction) {
|
if (tabs[p_tab].text_direction != p_text_direction) {
|
||||||
@ -567,19 +567,19 @@ void Tabs::set_tab_text_direction(int p_tab, Control::TextDirection p_text_direc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Control::TextDirection Tabs::get_tab_text_direction(int p_tab) const {
|
Control::TextDirection TabBar::get_tab_text_direction(int p_tab) const {
|
||||||
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Control::TEXT_DIRECTION_INHERITED);
|
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Control::TEXT_DIRECTION_INHERITED);
|
||||||
return tabs[p_tab].text_direction;
|
return tabs[p_tab].text_direction;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::clear_tab_opentype_features(int p_tab) {
|
void TabBar::clear_tab_opentype_features(int p_tab) {
|
||||||
ERR_FAIL_INDEX(p_tab, tabs.size());
|
ERR_FAIL_INDEX(p_tab, tabs.size());
|
||||||
tabs.write[p_tab].opentype_features.clear();
|
tabs.write[p_tab].opentype_features.clear();
|
||||||
_shape(p_tab);
|
_shape(p_tab);
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_opentype_feature(int p_tab, const String &p_name, int p_value) {
|
void TabBar::set_tab_opentype_feature(int p_tab, const String &p_name, int p_value) {
|
||||||
ERR_FAIL_INDEX(p_tab, tabs.size());
|
ERR_FAIL_INDEX(p_tab, tabs.size());
|
||||||
int32_t tag = TS->name_to_tag(p_name);
|
int32_t tag = TS->name_to_tag(p_name);
|
||||||
if (!tabs[p_tab].opentype_features.has(tag) || (int)tabs[p_tab].opentype_features[tag] != p_value) {
|
if (!tabs[p_tab].opentype_features.has(tag) || (int)tabs[p_tab].opentype_features[tag] != p_value) {
|
||||||
@ -589,7 +589,7 @@ void Tabs::set_tab_opentype_feature(int p_tab, const String &p_name, int p_value
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_tab_opentype_feature(int p_tab, const String &p_name) const {
|
int TabBar::get_tab_opentype_feature(int p_tab, const String &p_name) const {
|
||||||
ERR_FAIL_INDEX_V(p_tab, tabs.size(), -1);
|
ERR_FAIL_INDEX_V(p_tab, tabs.size(), -1);
|
||||||
int32_t tag = TS->name_to_tag(p_name);
|
int32_t tag = TS->name_to_tag(p_name);
|
||||||
if (!tabs[p_tab].opentype_features.has(tag)) {
|
if (!tabs[p_tab].opentype_features.has(tag)) {
|
||||||
@ -598,7 +598,7 @@ int Tabs::get_tab_opentype_feature(int p_tab, const String &p_name) const {
|
|||||||
return tabs[p_tab].opentype_features[tag];
|
return tabs[p_tab].opentype_features[tag];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_language(int p_tab, const String &p_language) {
|
void TabBar::set_tab_language(int p_tab, const String &p_language) {
|
||||||
ERR_FAIL_INDEX(p_tab, tabs.size());
|
ERR_FAIL_INDEX(p_tab, tabs.size());
|
||||||
if (tabs[p_tab].language != p_language) {
|
if (tabs[p_tab].language != p_language) {
|
||||||
tabs.write[p_tab].language = p_language;
|
tabs.write[p_tab].language = p_language;
|
||||||
@ -607,35 +607,35 @@ void Tabs::set_tab_language(int p_tab, const String &p_language) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String Tabs::get_tab_language(int p_tab) const {
|
String TabBar::get_tab_language(int p_tab) const {
|
||||||
ERR_FAIL_INDEX_V(p_tab, tabs.size(), "");
|
ERR_FAIL_INDEX_V(p_tab, tabs.size(), "");
|
||||||
return tabs[p_tab].language;
|
return tabs[p_tab].language;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_icon(int p_tab, const Ref<Texture2D> &p_icon) {
|
void TabBar::set_tab_icon(int p_tab, const Ref<Texture2D> &p_icon) {
|
||||||
ERR_FAIL_INDEX(p_tab, tabs.size());
|
ERR_FAIL_INDEX(p_tab, tabs.size());
|
||||||
tabs.write[p_tab].icon = p_icon;
|
tabs.write[p_tab].icon = p_icon;
|
||||||
update();
|
update();
|
||||||
minimum_size_changed();
|
minimum_size_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<Texture2D> Tabs::get_tab_icon(int p_tab) const {
|
Ref<Texture2D> TabBar::get_tab_icon(int p_tab) const {
|
||||||
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Ref<Texture2D>());
|
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Ref<Texture2D>());
|
||||||
return tabs[p_tab].icon;
|
return tabs[p_tab].icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_disabled(int p_tab, bool p_disabled) {
|
void TabBar::set_tab_disabled(int p_tab, bool p_disabled) {
|
||||||
ERR_FAIL_INDEX(p_tab, tabs.size());
|
ERR_FAIL_INDEX(p_tab, tabs.size());
|
||||||
tabs.write[p_tab].disabled = p_disabled;
|
tabs.write[p_tab].disabled = p_disabled;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tabs::get_tab_disabled(int p_tab) const {
|
bool TabBar::get_tab_disabled(int p_tab) const {
|
||||||
ERR_FAIL_INDEX_V(p_tab, tabs.size(), false);
|
ERR_FAIL_INDEX_V(p_tab, tabs.size(), false);
|
||||||
return tabs[p_tab].disabled;
|
return tabs[p_tab].disabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_right_button(int p_tab, const Ref<Texture2D> &p_right_button) {
|
void TabBar::set_tab_right_button(int p_tab, const Ref<Texture2D> &p_right_button) {
|
||||||
ERR_FAIL_INDEX(p_tab, tabs.size());
|
ERR_FAIL_INDEX(p_tab, tabs.size());
|
||||||
tabs.write[p_tab].right_button = p_right_button;
|
tabs.write[p_tab].right_button = p_right_button;
|
||||||
_update_cache();
|
_update_cache();
|
||||||
@ -643,12 +643,12 @@ void Tabs::set_tab_right_button(int p_tab, const Ref<Texture2D> &p_right_button)
|
|||||||
minimum_size_changed();
|
minimum_size_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<Texture2D> Tabs::get_tab_right_button(int p_tab) const {
|
Ref<Texture2D> TabBar::get_tab_right_button(int p_tab) const {
|
||||||
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Ref<Texture2D>());
|
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Ref<Texture2D>());
|
||||||
return tabs[p_tab].right_button;
|
return tabs[p_tab].right_button;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::_update_hover() {
|
void TabBar::_update_hover() {
|
||||||
if (!is_inside_tree()) {
|
if (!is_inside_tree()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -685,7 +685,7 @@ void Tabs::_update_hover() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::_update_cache() {
|
void TabBar::_update_cache() {
|
||||||
Ref<StyleBox> tab_disabled = get_theme_stylebox(SNAME("tab_disabled"));
|
Ref<StyleBox> tab_disabled = get_theme_stylebox(SNAME("tab_disabled"));
|
||||||
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
|
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
|
||||||
Ref<StyleBox> tab_selected = get_theme_stylebox(SNAME("tab_selected"));
|
Ref<StyleBox> tab_selected = get_theme_stylebox(SNAME("tab_selected"));
|
||||||
@ -748,7 +748,7 @@ void Tabs::_update_cache() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::_on_mouse_exited() {
|
void TabBar::_on_mouse_exited() {
|
||||||
rb_hover = -1;
|
rb_hover = -1;
|
||||||
cb_hover = -1;
|
cb_hover = -1;
|
||||||
hover = -1;
|
hover = -1;
|
||||||
@ -756,7 +756,7 @@ void Tabs::_on_mouse_exited() {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) {
|
void TabBar::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) {
|
||||||
Tab t;
|
Tab t;
|
||||||
t.text = p_str;
|
t.text = p_str;
|
||||||
t.xl_text = atr(p_str);
|
t.xl_text = atr(p_str);
|
||||||
@ -775,7 +775,7 @@ void Tabs::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) {
|
|||||||
minimum_size_changed();
|
minimum_size_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::clear_tabs() {
|
void TabBar::clear_tabs() {
|
||||||
tabs.clear();
|
tabs.clear();
|
||||||
current = 0;
|
current = 0;
|
||||||
previous = 0;
|
previous = 0;
|
||||||
@ -783,7 +783,7 @@ void Tabs::clear_tabs() {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::remove_tab(int p_idx) {
|
void TabBar::remove_tab(int p_idx) {
|
||||||
ERR_FAIL_INDEX(p_idx, tabs.size());
|
ERR_FAIL_INDEX(p_idx, tabs.size());
|
||||||
tabs.remove(p_idx);
|
tabs.remove(p_idx);
|
||||||
if (current >= p_idx) {
|
if (current >= p_idx) {
|
||||||
@ -805,7 +805,7 @@ void Tabs::remove_tab(int p_idx) {
|
|||||||
_ensure_no_over_offset();
|
_ensure_no_over_offset();
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant Tabs::get_drag_data(const Point2 &p_point) {
|
Variant TabBar::get_drag_data(const Point2 &p_point) {
|
||||||
if (!drag_to_rearrange_enabled) {
|
if (!drag_to_rearrange_enabled) {
|
||||||
return Variant();
|
return Variant();
|
||||||
}
|
}
|
||||||
@ -839,7 +839,7 @@ Variant Tabs::get_drag_data(const Point2 &p_point) {
|
|||||||
return drag_data;
|
return drag_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tabs::can_drop_data(const Point2 &p_point, const Variant &p_data) const {
|
bool TabBar::can_drop_data(const Point2 &p_point, const Variant &p_data) const {
|
||||||
if (!drag_to_rearrange_enabled) {
|
if (!drag_to_rearrange_enabled) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -855,9 +855,9 @@ bool Tabs::can_drop_data(const Point2 &p_point, const Variant &p_data) const {
|
|||||||
if (from_path == to_path) {
|
if (from_path == to_path) {
|
||||||
return true;
|
return true;
|
||||||
} else if (get_tabs_rearrange_group() != -1) {
|
} else if (get_tabs_rearrange_group() != -1) {
|
||||||
// drag and drop between other Tabs
|
// drag and drop between other TabBars
|
||||||
Node *from_node = get_node(from_path);
|
Node *from_node = get_node(from_path);
|
||||||
Tabs *from_tabs = Object::cast_to<Tabs>(from_node);
|
TabBar *from_tabs = Object::cast_to<TabBar>(from_node);
|
||||||
if (from_tabs && from_tabs->get_tabs_rearrange_group() == get_tabs_rearrange_group()) {
|
if (from_tabs && from_tabs->get_tabs_rearrange_group() == get_tabs_rearrange_group()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -866,7 +866,7 @@ bool Tabs::can_drop_data(const Point2 &p_point, const Variant &p_data) const {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::drop_data(const Point2 &p_point, const Variant &p_data) {
|
void TabBar::drop_data(const Point2 &p_point, const Variant &p_data) {
|
||||||
if (!drag_to_rearrange_enabled) {
|
if (!drag_to_rearrange_enabled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -892,7 +892,7 @@ void Tabs::drop_data(const Point2 &p_point, const Variant &p_data) {
|
|||||||
} else if (get_tabs_rearrange_group() != -1) {
|
} else if (get_tabs_rearrange_group() != -1) {
|
||||||
// drag and drop between Tabs
|
// drag and drop between Tabs
|
||||||
Node *from_node = get_node(from_path);
|
Node *from_node = get_node(from_path);
|
||||||
Tabs *from_tabs = Object::cast_to<Tabs>(from_node);
|
TabBar *from_tabs = Object::cast_to<TabBar>(from_node);
|
||||||
if (from_tabs && from_tabs->get_tabs_rearrange_group() == get_tabs_rearrange_group()) {
|
if (from_tabs && from_tabs->get_tabs_rearrange_group() == get_tabs_rearrange_group()) {
|
||||||
if (tab_from_id >= from_tabs->get_tab_count()) {
|
if (tab_from_id >= from_tabs->get_tab_count()) {
|
||||||
return;
|
return;
|
||||||
@ -912,7 +912,7 @@ void Tabs::drop_data(const Point2 &p_point, const Variant &p_data) {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_tab_idx_at_point(const Point2 &p_point) const {
|
int TabBar::get_tab_idx_at_point(const Point2 &p_point) const {
|
||||||
int hover_now = -1;
|
int hover_now = -1;
|
||||||
for (int i = offset; i <= max_drawn_tab; i++) {
|
for (int i = offset; i <= max_drawn_tab; i++) {
|
||||||
Rect2 rect = get_tab_rect(i);
|
Rect2 rect = get_tab_rect(i);
|
||||||
@ -924,17 +924,17 @@ int Tabs::get_tab_idx_at_point(const Point2 &p_point) const {
|
|||||||
return hover_now;
|
return hover_now;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_align(TabAlign p_align) {
|
void TabBar::set_tab_align(TabAlign p_align) {
|
||||||
ERR_FAIL_INDEX(p_align, ALIGN_MAX);
|
ERR_FAIL_INDEX(p_align, ALIGN_MAX);
|
||||||
tab_align = p_align;
|
tab_align = p_align;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
Tabs::TabAlign Tabs::get_tab_align() const {
|
TabBar::TabAlign TabBar::get_tab_align() const {
|
||||||
return tab_align;
|
return tab_align;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_clip_tabs(bool p_clip_tabs) {
|
void TabBar::set_clip_tabs(bool p_clip_tabs) {
|
||||||
if (clip_tabs == p_clip_tabs) {
|
if (clip_tabs == p_clip_tabs) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -943,11 +943,11 @@ void Tabs::set_clip_tabs(bool p_clip_tabs) {
|
|||||||
minimum_size_changed();
|
minimum_size_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tabs::get_clip_tabs() const {
|
bool TabBar::get_clip_tabs() const {
|
||||||
return clip_tabs;
|
return clip_tabs;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::move_tab(int from, int to) {
|
void TabBar::move_tab(int from, int to) {
|
||||||
if (from == to) {
|
if (from == to) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -963,7 +963,7 @@ void Tabs::move_tab(int from, int to) {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_tab_width(int p_idx) const {
|
int TabBar::get_tab_width(int p_idx) const {
|
||||||
ERR_FAIL_INDEX_V(p_idx, tabs.size(), 0);
|
ERR_FAIL_INDEX_V(p_idx, tabs.size(), 0);
|
||||||
|
|
||||||
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
|
Ref<StyleBox> tab_unselected = get_theme_stylebox(SNAME("tab_unselected"));
|
||||||
@ -1005,7 +1005,7 @@ int Tabs::get_tab_width(int p_idx) const {
|
|||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::_ensure_no_over_offset() {
|
void TabBar::_ensure_no_over_offset() {
|
||||||
if (!is_inside_tree()) {
|
if (!is_inside_tree()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1031,7 +1031,7 @@ void Tabs::_ensure_no_over_offset() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::ensure_tab_visible(int p_idx) {
|
void TabBar::ensure_tab_visible(int p_idx) {
|
||||||
if (!is_inside_tree()) {
|
if (!is_inside_tree()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1068,7 +1068,7 @@ void Tabs::ensure_tab_visible(int p_idx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect2 Tabs::get_tab_rect(int p_tab) const {
|
Rect2 TabBar::get_tab_rect(int p_tab) const {
|
||||||
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Rect2());
|
ERR_FAIL_INDEX_V(p_tab, tabs.size(), Rect2());
|
||||||
if (is_layout_rtl()) {
|
if (is_layout_rtl()) {
|
||||||
return Rect2(get_size().width - tabs[p_tab].ofs_cache - tabs[p_tab].size_cache, 0, tabs[p_tab].size_cache, get_size().height);
|
return Rect2(get_size().width - tabs[p_tab].ofs_cache - tabs[p_tab].size_cache, 0, tabs[p_tab].size_cache, get_size().height);
|
||||||
@ -1077,93 +1077,93 @@ Rect2 Tabs::get_tab_rect(int p_tab) const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tab_close_display_policy(CloseButtonDisplayPolicy p_policy) {
|
void TabBar::set_tab_close_display_policy(CloseButtonDisplayPolicy p_policy) {
|
||||||
ERR_FAIL_INDEX(p_policy, CLOSE_BUTTON_MAX);
|
ERR_FAIL_INDEX(p_policy, CLOSE_BUTTON_MAX);
|
||||||
cb_displaypolicy = p_policy;
|
cb_displaypolicy = p_policy;
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
Tabs::CloseButtonDisplayPolicy Tabs::get_tab_close_display_policy() const {
|
TabBar::CloseButtonDisplayPolicy TabBar::get_tab_close_display_policy() const {
|
||||||
return cb_displaypolicy;
|
return cb_displaypolicy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_min_width(int p_width) {
|
void TabBar::set_min_width(int p_width) {
|
||||||
min_width = p_width;
|
min_width = p_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_scrolling_enabled(bool p_enabled) {
|
void TabBar::set_scrolling_enabled(bool p_enabled) {
|
||||||
scrolling_enabled = p_enabled;
|
scrolling_enabled = p_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tabs::get_scrolling_enabled() const {
|
bool TabBar::get_scrolling_enabled() const {
|
||||||
return scrolling_enabled;
|
return scrolling_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_drag_to_rearrange_enabled(bool p_enabled) {
|
void TabBar::set_drag_to_rearrange_enabled(bool p_enabled) {
|
||||||
drag_to_rearrange_enabled = p_enabled;
|
drag_to_rearrange_enabled = p_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tabs::get_drag_to_rearrange_enabled() const {
|
bool TabBar::get_drag_to_rearrange_enabled() const {
|
||||||
return drag_to_rearrange_enabled;
|
return drag_to_rearrange_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_tabs_rearrange_group(int p_group_id) {
|
void TabBar::set_tabs_rearrange_group(int p_group_id) {
|
||||||
tabs_rearrange_group = p_group_id;
|
tabs_rearrange_group = p_group_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tabs::get_tabs_rearrange_group() const {
|
int TabBar::get_tabs_rearrange_group() const {
|
||||||
return tabs_rearrange_group;
|
return tabs_rearrange_group;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::set_select_with_rmb(bool p_enabled) {
|
void TabBar::set_select_with_rmb(bool p_enabled) {
|
||||||
select_with_rmb = p_enabled;
|
select_with_rmb = p_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tabs::get_select_with_rmb() const {
|
bool TabBar::get_select_with_rmb() const {
|
||||||
return select_with_rmb;
|
return select_with_rmb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tabs::_bind_methods() {
|
void TabBar::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("_update_hover"), &Tabs::_update_hover);
|
ClassDB::bind_method(D_METHOD("_update_hover"), &TabBar::_update_hover);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_count"), &Tabs::get_tab_count);
|
ClassDB::bind_method(D_METHOD("get_tab_count"), &TabBar::get_tab_count);
|
||||||
ClassDB::bind_method(D_METHOD("set_current_tab", "tab_idx"), &Tabs::set_current_tab);
|
ClassDB::bind_method(D_METHOD("set_current_tab", "tab_idx"), &TabBar::set_current_tab);
|
||||||
ClassDB::bind_method(D_METHOD("get_current_tab"), &Tabs::get_current_tab);
|
ClassDB::bind_method(D_METHOD("get_current_tab"), &TabBar::get_current_tab);
|
||||||
ClassDB::bind_method(D_METHOD("get_previous_tab"), &Tabs::get_previous_tab);
|
ClassDB::bind_method(D_METHOD("get_previous_tab"), &TabBar::get_previous_tab);
|
||||||
ClassDB::bind_method(D_METHOD("set_tab_title", "tab_idx", "title"), &Tabs::set_tab_title);
|
ClassDB::bind_method(D_METHOD("set_tab_title", "tab_idx", "title"), &TabBar::set_tab_title);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_title", "tab_idx"), &Tabs::get_tab_title);
|
ClassDB::bind_method(D_METHOD("get_tab_title", "tab_idx"), &TabBar::get_tab_title);
|
||||||
ClassDB::bind_method(D_METHOD("set_tab_text_direction", "tab_idx", "direction"), &Tabs::set_tab_text_direction);
|
ClassDB::bind_method(D_METHOD("set_tab_text_direction", "tab_idx", "direction"), &TabBar::set_tab_text_direction);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_text_direction", "tab_idx"), &Tabs::get_tab_text_direction);
|
ClassDB::bind_method(D_METHOD("get_tab_text_direction", "tab_idx"), &TabBar::get_tab_text_direction);
|
||||||
ClassDB::bind_method(D_METHOD("set_tab_opentype_feature", "tab_idx", "tag", "values"), &Tabs::set_tab_opentype_feature);
|
ClassDB::bind_method(D_METHOD("set_tab_opentype_feature", "tab_idx", "tag", "values"), &TabBar::set_tab_opentype_feature);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_opentype_feature", "tab_idx", "tag"), &Tabs::get_tab_opentype_feature);
|
ClassDB::bind_method(D_METHOD("get_tab_opentype_feature", "tab_idx", "tag"), &TabBar::get_tab_opentype_feature);
|
||||||
ClassDB::bind_method(D_METHOD("clear_tab_opentype_features", "tab_idx"), &Tabs::clear_tab_opentype_features);
|
ClassDB::bind_method(D_METHOD("clear_tab_opentype_features", "tab_idx"), &TabBar::clear_tab_opentype_features);
|
||||||
ClassDB::bind_method(D_METHOD("set_tab_language", "tab_idx", "language"), &Tabs::set_tab_language);
|
ClassDB::bind_method(D_METHOD("set_tab_language", "tab_idx", "language"), &TabBar::set_tab_language);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_language", "tab_idx"), &Tabs::get_tab_language);
|
ClassDB::bind_method(D_METHOD("get_tab_language", "tab_idx"), &TabBar::get_tab_language);
|
||||||
ClassDB::bind_method(D_METHOD("set_tab_icon", "tab_idx", "icon"), &Tabs::set_tab_icon);
|
ClassDB::bind_method(D_METHOD("set_tab_icon", "tab_idx", "icon"), &TabBar::set_tab_icon);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_icon", "tab_idx"), &Tabs::get_tab_icon);
|
ClassDB::bind_method(D_METHOD("get_tab_icon", "tab_idx"), &TabBar::get_tab_icon);
|
||||||
ClassDB::bind_method(D_METHOD("set_tab_disabled", "tab_idx", "disabled"), &Tabs::set_tab_disabled);
|
ClassDB::bind_method(D_METHOD("set_tab_disabled", "tab_idx", "disabled"), &TabBar::set_tab_disabled);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_disabled", "tab_idx"), &Tabs::get_tab_disabled);
|
ClassDB::bind_method(D_METHOD("get_tab_disabled", "tab_idx"), &TabBar::get_tab_disabled);
|
||||||
ClassDB::bind_method(D_METHOD("remove_tab", "tab_idx"), &Tabs::remove_tab);
|
ClassDB::bind_method(D_METHOD("remove_tab", "tab_idx"), &TabBar::remove_tab);
|
||||||
ClassDB::bind_method(D_METHOD("add_tab", "title", "icon"), &Tabs::add_tab, DEFVAL(""), DEFVAL(Ref<Texture2D>()));
|
ClassDB::bind_method(D_METHOD("add_tab", "title", "icon"), &TabBar::add_tab, DEFVAL(""), DEFVAL(Ref<Texture2D>()));
|
||||||
ClassDB::bind_method(D_METHOD("set_tab_align", "align"), &Tabs::set_tab_align);
|
ClassDB::bind_method(D_METHOD("set_tab_align", "align"), &TabBar::set_tab_align);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_align"), &Tabs::get_tab_align);
|
ClassDB::bind_method(D_METHOD("get_tab_align"), &TabBar::get_tab_align);
|
||||||
ClassDB::bind_method(D_METHOD("set_clip_tabs", "clip_tabs"), &Tabs::set_clip_tabs);
|
ClassDB::bind_method(D_METHOD("set_clip_tabs", "clip_tabs"), &TabBar::set_clip_tabs);
|
||||||
ClassDB::bind_method(D_METHOD("get_clip_tabs"), &Tabs::get_clip_tabs);
|
ClassDB::bind_method(D_METHOD("get_clip_tabs"), &TabBar::get_clip_tabs);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_offset"), &Tabs::get_tab_offset);
|
ClassDB::bind_method(D_METHOD("get_tab_offset"), &TabBar::get_tab_offset);
|
||||||
ClassDB::bind_method(D_METHOD("get_offset_buttons_visible"), &Tabs::get_offset_buttons_visible);
|
ClassDB::bind_method(D_METHOD("get_offset_buttons_visible"), &TabBar::get_offset_buttons_visible);
|
||||||
ClassDB::bind_method(D_METHOD("ensure_tab_visible", "idx"), &Tabs::ensure_tab_visible);
|
ClassDB::bind_method(D_METHOD("ensure_tab_visible", "idx"), &TabBar::ensure_tab_visible);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_rect", "tab_idx"), &Tabs::get_tab_rect);
|
ClassDB::bind_method(D_METHOD("get_tab_rect", "tab_idx"), &TabBar::get_tab_rect);
|
||||||
ClassDB::bind_method(D_METHOD("move_tab", "from", "to"), &Tabs::move_tab);
|
ClassDB::bind_method(D_METHOD("move_tab", "from", "to"), &TabBar::move_tab);
|
||||||
ClassDB::bind_method(D_METHOD("set_tab_close_display_policy", "policy"), &Tabs::set_tab_close_display_policy);
|
ClassDB::bind_method(D_METHOD("set_tab_close_display_policy", "policy"), &TabBar::set_tab_close_display_policy);
|
||||||
ClassDB::bind_method(D_METHOD("get_tab_close_display_policy"), &Tabs::get_tab_close_display_policy);
|
ClassDB::bind_method(D_METHOD("get_tab_close_display_policy"), &TabBar::get_tab_close_display_policy);
|
||||||
ClassDB::bind_method(D_METHOD("set_scrolling_enabled", "enabled"), &Tabs::set_scrolling_enabled);
|
ClassDB::bind_method(D_METHOD("set_scrolling_enabled", "enabled"), &TabBar::set_scrolling_enabled);
|
||||||
ClassDB::bind_method(D_METHOD("get_scrolling_enabled"), &Tabs::get_scrolling_enabled);
|
ClassDB::bind_method(D_METHOD("get_scrolling_enabled"), &TabBar::get_scrolling_enabled);
|
||||||
ClassDB::bind_method(D_METHOD("set_drag_to_rearrange_enabled", "enabled"), &Tabs::set_drag_to_rearrange_enabled);
|
ClassDB::bind_method(D_METHOD("set_drag_to_rearrange_enabled", "enabled"), &TabBar::set_drag_to_rearrange_enabled);
|
||||||
ClassDB::bind_method(D_METHOD("get_drag_to_rearrange_enabled"), &Tabs::get_drag_to_rearrange_enabled);
|
ClassDB::bind_method(D_METHOD("get_drag_to_rearrange_enabled"), &TabBar::get_drag_to_rearrange_enabled);
|
||||||
ClassDB::bind_method(D_METHOD("set_tabs_rearrange_group", "group_id"), &Tabs::set_tabs_rearrange_group);
|
ClassDB::bind_method(D_METHOD("set_tabs_rearrange_group", "group_id"), &TabBar::set_tabs_rearrange_group);
|
||||||
ClassDB::bind_method(D_METHOD("get_tabs_rearrange_group"), &Tabs::get_tabs_rearrange_group);
|
ClassDB::bind_method(D_METHOD("get_tabs_rearrange_group"), &TabBar::get_tabs_rearrange_group);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_select_with_rmb", "enabled"), &Tabs::set_select_with_rmb);
|
ClassDB::bind_method(D_METHOD("set_select_with_rmb", "enabled"), &TabBar::set_select_with_rmb);
|
||||||
ClassDB::bind_method(D_METHOD("get_select_with_rmb"), &Tabs::get_select_with_rmb);
|
ClassDB::bind_method(D_METHOD("get_select_with_rmb"), &TabBar::get_select_with_rmb);
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab")));
|
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab")));
|
||||||
ADD_SIGNAL(MethodInfo("tab_rmb_clicked", PropertyInfo(Variant::INT, "tab")));
|
ADD_SIGNAL(MethodInfo("tab_rmb_clicked", PropertyInfo(Variant::INT, "tab")));
|
||||||
@ -1190,6 +1190,6 @@ void Tabs::_bind_methods() {
|
|||||||
BIND_ENUM_CONSTANT(CLOSE_BUTTON_MAX);
|
BIND_ENUM_CONSTANT(CLOSE_BUTTON_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
Tabs::Tabs() {
|
TabBar::TabBar() {
|
||||||
connect("mouse_exited", callable_mp(this, &Tabs::_on_mouse_exited));
|
connect("mouse_exited", callable_mp(this, &TabBar::_on_mouse_exited));
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* tabs.h */
|
/* tab_bar.h */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* This file is part of: */
|
/* This file is part of: */
|
||||||
/* GODOT ENGINE */
|
/* GODOT ENGINE */
|
||||||
@ -28,14 +28,14 @@
|
|||||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
#ifndef TABS_H
|
#ifndef TAB_BAR_H
|
||||||
#define TABS_H
|
#define TAB_BAR_H
|
||||||
|
|
||||||
#include "scene/gui/control.h"
|
#include "scene/gui/control.h"
|
||||||
#include "scene/resources/text_line.h"
|
#include "scene/resources/text_line.h"
|
||||||
|
|
||||||
class Tabs : public Control {
|
class TabBar : public Control {
|
||||||
GDCLASS(Tabs, Control);
|
GDCLASS(TabBar, Control);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum TabAlign {
|
enum TabAlign {
|
||||||
@ -187,10 +187,10 @@ public:
|
|||||||
Rect2 get_tab_rect(int p_tab) const;
|
Rect2 get_tab_rect(int p_tab) const;
|
||||||
Size2 get_minimum_size() const override;
|
Size2 get_minimum_size() const override;
|
||||||
|
|
||||||
Tabs();
|
TabBar();
|
||||||
};
|
};
|
||||||
|
|
||||||
VARIANT_ENUM_CAST(Tabs::TabAlign);
|
VARIANT_ENUM_CAST(TabBar::TabAlign);
|
||||||
VARIANT_ENUM_CAST(Tabs::CloseButtonDisplayPolicy);
|
VARIANT_ENUM_CAST(TabBar::CloseButtonDisplayPolicy);
|
||||||
|
|
||||||
#endif // TABS_H
|
#endif // TAB_BAR_H
|
@ -115,8 +115,8 @@
|
|||||||
#include "scene/gui/spin_box.h"
|
#include "scene/gui/spin_box.h"
|
||||||
#include "scene/gui/split_container.h"
|
#include "scene/gui/split_container.h"
|
||||||
#include "scene/gui/subviewport_container.h"
|
#include "scene/gui/subviewport_container.h"
|
||||||
|
#include "scene/gui/tab_bar.h"
|
||||||
#include "scene/gui/tab_container.h"
|
#include "scene/gui/tab_container.h"
|
||||||
#include "scene/gui/tabs.h"
|
|
||||||
#include "scene/gui/text_edit.h"
|
#include "scene/gui/text_edit.h"
|
||||||
#include "scene/gui/texture_button.h"
|
#include "scene/gui/texture_button.h"
|
||||||
#include "scene/gui/texture_progress_bar.h"
|
#include "scene/gui/texture_progress_bar.h"
|
||||||
@ -262,7 +262,7 @@ static Ref<ResourceFormatLoaderShader> resource_loader_shader;
|
|||||||
void register_scene_types() {
|
void register_scene_types() {
|
||||||
SceneStringNames::create();
|
SceneStringNames::create();
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
Node::init_node_hrcr();
|
Node::init_node_hrcr();
|
||||||
|
|
||||||
@ -287,7 +287,7 @@ void register_scene_types() {
|
|||||||
resource_loader_shader.instantiate();
|
resource_loader_shader.instantiate();
|
||||||
ResourceLoader::add_resource_format_loader(resource_loader_shader, true);
|
ResourceLoader::add_resource_format_loader(resource_loader_shader, true);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_CLASS(Object);
|
GDREGISTER_CLASS(Object);
|
||||||
|
|
||||||
@ -309,7 +309,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(ButtonGroup);
|
GDREGISTER_CLASS(ButtonGroup);
|
||||||
GDREGISTER_VIRTUAL_CLASS(BaseButton);
|
GDREGISTER_VIRTUAL_CLASS(BaseButton);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_CLASS(Control);
|
GDREGISTER_CLASS(Control);
|
||||||
GDREGISTER_CLASS(Button);
|
GDREGISTER_CLASS(Button);
|
||||||
@ -330,7 +330,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(Panel);
|
GDREGISTER_CLASS(Panel);
|
||||||
GDREGISTER_VIRTUAL_CLASS(Range);
|
GDREGISTER_VIRTUAL_CLASS(Range);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_CLASS(TextureRect);
|
GDREGISTER_CLASS(TextureRect);
|
||||||
GDREGISTER_CLASS(ColorRect);
|
GDREGISTER_CLASS(ColorRect);
|
||||||
@ -338,7 +338,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(ReferenceRect);
|
GDREGISTER_CLASS(ReferenceRect);
|
||||||
GDREGISTER_CLASS(AspectRatioContainer);
|
GDREGISTER_CLASS(AspectRatioContainer);
|
||||||
GDREGISTER_CLASS(TabContainer);
|
GDREGISTER_CLASS(TabContainer);
|
||||||
GDREGISTER_CLASS(Tabs);
|
GDREGISTER_CLASS(TabBar);
|
||||||
GDREGISTER_VIRTUAL_CLASS(Separator);
|
GDREGISTER_VIRTUAL_CLASS(Separator);
|
||||||
GDREGISTER_CLASS(HSeparator);
|
GDREGISTER_CLASS(HSeparator);
|
||||||
GDREGISTER_CLASS(VSeparator);
|
GDREGISTER_CLASS(VSeparator);
|
||||||
@ -352,7 +352,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(ScrollContainer);
|
GDREGISTER_CLASS(ScrollContainer);
|
||||||
GDREGISTER_CLASS(PanelContainer);
|
GDREGISTER_CLASS(PanelContainer);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_CLASS(TextureProgressBar);
|
GDREGISTER_CLASS(TextureProgressBar);
|
||||||
GDREGISTER_CLASS(ItemList);
|
GDREGISTER_CLASS(ItemList);
|
||||||
@ -391,7 +391,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(GraphNode);
|
GDREGISTER_CLASS(GraphNode);
|
||||||
GDREGISTER_CLASS(GraphEdit);
|
GDREGISTER_CLASS(GraphEdit);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
bool swap_cancel_ok = false;
|
bool swap_cancel_ok = false;
|
||||||
if (DisplayServer::get_singleton()) {
|
if (DisplayServer::get_singleton()) {
|
||||||
@ -431,9 +431,9 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(AnimationNodeTimeSeek);
|
GDREGISTER_CLASS(AnimationNodeTimeSeek);
|
||||||
GDREGISTER_CLASS(AnimationNodeTransition);
|
GDREGISTER_CLASS(AnimationNodeTransition);
|
||||||
|
|
||||||
GDREGISTER_CLASS(ShaderGlobalsOverride); //can be used in any shader
|
GDREGISTER_CLASS(ShaderGlobalsOverride); // can be used in any shader
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
/* REGISTER 3D */
|
/* REGISTER 3D */
|
||||||
|
|
||||||
@ -486,9 +486,9 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(Position3D);
|
GDREGISTER_CLASS(Position3D);
|
||||||
|
|
||||||
GDREGISTER_CLASS(RootMotionView);
|
GDREGISTER_CLASS(RootMotionView);
|
||||||
ClassDB::set_class_enabled("RootMotionView", false); //disabled by default, enabled by editor
|
ClassDB::set_class_enabled("RootMotionView", false); // disabled by default, enabled by editor
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_VIRTUAL_CLASS(CollisionObject3D);
|
GDREGISTER_VIRTUAL_CLASS(CollisionObject3D);
|
||||||
GDREGISTER_VIRTUAL_CLASS(PhysicsBody3D);
|
GDREGISTER_VIRTUAL_CLASS(PhysicsBody3D);
|
||||||
@ -533,7 +533,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(NavigationAgent3D);
|
GDREGISTER_CLASS(NavigationAgent3D);
|
||||||
GDREGISTER_CLASS(NavigationObstacle3D);
|
GDREGISTER_CLASS(NavigationObstacle3D);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* REGISTER SHADER */
|
/* REGISTER SHADER */
|
||||||
@ -673,7 +673,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(OccluderPolygon2D);
|
GDREGISTER_CLASS(OccluderPolygon2D);
|
||||||
GDREGISTER_CLASS(BackBufferCopy);
|
GDREGISTER_CLASS(BackBufferCopy);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_CLASS(Camera2D);
|
GDREGISTER_CLASS(Camera2D);
|
||||||
GDREGISTER_CLASS(AudioListener2D);
|
GDREGISTER_CLASS(AudioListener2D);
|
||||||
@ -705,7 +705,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(PhysicalBone2D);
|
GDREGISTER_CLASS(PhysicalBone2D);
|
||||||
GDREGISTER_CLASS(SkeletonModification2DPhysicalBones);
|
GDREGISTER_CLASS(SkeletonModification2DPhysicalBones);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
/* REGISTER RESOURCES */
|
/* REGISTER RESOURCES */
|
||||||
|
|
||||||
@ -746,7 +746,7 @@ void register_scene_types() {
|
|||||||
|
|
||||||
GDREGISTER_CLASS(MeshLibrary);
|
GDREGISTER_CLASS(MeshLibrary);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_VIRTUAL_CLASS(Shape3D);
|
GDREGISTER_VIRTUAL_CLASS(Shape3D);
|
||||||
GDREGISTER_CLASS(SeparationRayShape3D);
|
GDREGISTER_CLASS(SeparationRayShape3D);
|
||||||
@ -768,7 +768,7 @@ void register_scene_types() {
|
|||||||
ClassDB::register_class<SkeletonModification3DTwoBoneIK>();
|
ClassDB::register_class<SkeletonModification3DTwoBoneIK>();
|
||||||
ClassDB::register_class<SkeletonModification3DStackHolder>();
|
ClassDB::register_class<SkeletonModification3DStackHolder>();
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_CLASS(VelocityTracker3D);
|
GDREGISTER_CLASS(VelocityTracker3D);
|
||||||
#endif
|
#endif
|
||||||
@ -823,7 +823,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(BitMap);
|
GDREGISTER_CLASS(BitMap);
|
||||||
GDREGISTER_CLASS(Gradient);
|
GDREGISTER_CLASS(Gradient);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_CLASS(AudioStreamPlayer);
|
GDREGISTER_CLASS(AudioStreamPlayer);
|
||||||
GDREGISTER_CLASS(AudioStreamPlayer2D);
|
GDREGISTER_CLASS(AudioStreamPlayer2D);
|
||||||
@ -833,7 +833,7 @@ void register_scene_types() {
|
|||||||
GDREGISTER_VIRTUAL_CLASS(VideoStream);
|
GDREGISTER_VIRTUAL_CLASS(VideoStream);
|
||||||
GDREGISTER_CLASS(AudioStreamSample);
|
GDREGISTER_CLASS(AudioStreamSample);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_VIRTUAL_CLASS(Shape2D);
|
GDREGISTER_VIRTUAL_CLASS(Shape2D);
|
||||||
GDREGISTER_CLASS(WorldBoundaryShape2D);
|
GDREGISTER_CLASS(WorldBoundaryShape2D);
|
||||||
@ -854,13 +854,13 @@ void register_scene_types() {
|
|||||||
GDREGISTER_CLASS(NavigationAgent2D);
|
GDREGISTER_CLASS(NavigationAgent2D);
|
||||||
GDREGISTER_CLASS(NavigationObstacle2D);
|
GDREGISTER_CLASS(NavigationObstacle2D);
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
GDREGISTER_VIRTUAL_CLASS(SceneState);
|
GDREGISTER_VIRTUAL_CLASS(SceneState);
|
||||||
GDREGISTER_CLASS(PackedScene);
|
GDREGISTER_CLASS(PackedScene);
|
||||||
|
|
||||||
GDREGISTER_CLASS(SceneTree);
|
GDREGISTER_CLASS(SceneTree);
|
||||||
GDREGISTER_VIRTUAL_CLASS(SceneTreeTimer); //sorry, you can't create it
|
GDREGISTER_VIRTUAL_CLASS(SceneTreeTimer); // sorry, you can't create it
|
||||||
|
|
||||||
#ifndef DISABLE_DEPRECATED
|
#ifndef DISABLE_DEPRECATED
|
||||||
// Dropped in 4.0, near approximation.
|
// Dropped in 4.0, near approximation.
|
||||||
@ -1008,7 +1008,7 @@ void register_scene_types() {
|
|||||||
|
|
||||||
#endif /* DISABLE_DEPRECATED */
|
#endif /* DISABLE_DEPRECATED */
|
||||||
|
|
||||||
OS::get_singleton()->yield(); //may take time to init
|
OS::get_singleton()->yield(); // may take time to init
|
||||||
|
|
||||||
for (int i = 0; i < 20; i++) {
|
for (int i = 0; i < 20; i++) {
|
||||||
GLOBAL_DEF_BASIC(vformat("layer_names/2d_render/layer_%d", i + 1), "");
|
GLOBAL_DEF_BASIC(vformat("layer_names/2d_render/layer_%d", i + 1), "");
|
||||||
@ -1086,7 +1086,7 @@ void unregister_scene_types() {
|
|||||||
ResourceLoader::remove_resource_format_loader(resource_loader_shader);
|
ResourceLoader::remove_resource_format_loader(resource_loader_shader);
|
||||||
resource_loader_shader.unref();
|
resource_loader_shader.unref();
|
||||||
|
|
||||||
//StandardMaterial3D is not initialised when 3D is disabled, so it shouldn't be cleaned up either
|
// StandardMaterial3D is not initialised when 3D is disabled, so it shouldn't be cleaned up either
|
||||||
#ifndef _3D_DISABLED
|
#ifndef _3D_DISABLED
|
||||||
BaseMaterial3D::finish_shaders();
|
BaseMaterial3D::finish_shaders();
|
||||||
#endif // _3D_DISABLED
|
#endif // _3D_DISABLED
|
||||||
|
@ -785,30 +785,30 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||||||
theme->set_constant("icon_separation", "TabContainer", 4 * scale);
|
theme->set_constant("icon_separation", "TabContainer", 4 * scale);
|
||||||
theme->set_constant("outline_size", "TabContainer", 0);
|
theme->set_constant("outline_size", "TabContainer", 0);
|
||||||
|
|
||||||
// Tabs
|
// TabBar
|
||||||
|
|
||||||
theme->set_stylebox("tab_selected", "Tabs", sb_expand(make_stylebox(tab_current_png, 4, 3, 4, 1, 16, 3, 16, 2), 2, 2, 2, 2));
|
theme->set_stylebox("tab_selected", "TabBar", sb_expand(make_stylebox(tab_current_png, 4, 3, 4, 1, 16, 3, 16, 2), 2, 2, 2, 2));
|
||||||
theme->set_stylebox("tab_unselected", "Tabs", sb_expand(make_stylebox(tab_behind_png, 5, 4, 5, 1, 16, 5, 16, 2), 3, 3, 3, 3));
|
theme->set_stylebox("tab_unselected", "TabBar", sb_expand(make_stylebox(tab_behind_png, 5, 4, 5, 1, 16, 5, 16, 2), 3, 3, 3, 3));
|
||||||
theme->set_stylebox("tab_disabled", "Tabs", sb_expand(make_stylebox(tab_disabled_png, 5, 5, 5, 1, 16, 6, 16, 4), 3, 0, 3, 3));
|
theme->set_stylebox("tab_disabled", "TabBar", sb_expand(make_stylebox(tab_disabled_png, 5, 5, 5, 1, 16, 6, 16, 4), 3, 0, 3, 3));
|
||||||
theme->set_stylebox("close_bg_pressed", "Tabs", make_stylebox(button_pressed_png, 4, 4, 4, 4));
|
theme->set_stylebox("close_bg_pressed", "TabBar", make_stylebox(button_pressed_png, 4, 4, 4, 4));
|
||||||
theme->set_stylebox("close_bg_highlight", "Tabs", make_stylebox(button_normal_png, 4, 4, 4, 4));
|
theme->set_stylebox("close_bg_highlight", "TabBar", make_stylebox(button_normal_png, 4, 4, 4, 4));
|
||||||
|
|
||||||
theme->set_icon("increment", "Tabs", make_icon(scroll_button_right_png));
|
theme->set_icon("increment", "TabBar", make_icon(scroll_button_right_png));
|
||||||
theme->set_icon("increment_highlight", "Tabs", make_icon(scroll_button_right_hl_png));
|
theme->set_icon("increment_highlight", "TabBar", make_icon(scroll_button_right_hl_png));
|
||||||
theme->set_icon("decrement", "Tabs", make_icon(scroll_button_left_png));
|
theme->set_icon("decrement", "TabBar", make_icon(scroll_button_left_png));
|
||||||
theme->set_icon("decrement_highlight", "Tabs", make_icon(scroll_button_left_hl_png));
|
theme->set_icon("decrement_highlight", "TabBar", make_icon(scroll_button_left_hl_png));
|
||||||
theme->set_icon("close", "Tabs", make_icon(tab_close_png));
|
theme->set_icon("close", "TabBar", make_icon(tab_close_png));
|
||||||
|
|
||||||
theme->set_font("font", "Tabs", Ref<Font>());
|
theme->set_font("font", "TabBar", Ref<Font>());
|
||||||
theme->set_font_size("font_size", "Tabs", -1);
|
theme->set_font_size("font_size", "TabBar", -1);
|
||||||
|
|
||||||
theme->set_color("font_selected_color", "Tabs", control_font_hover_color);
|
theme->set_color("font_selected_color", "TabBar", control_font_hover_color);
|
||||||
theme->set_color("font_unselected_color", "Tabs", control_font_low_color);
|
theme->set_color("font_unselected_color", "TabBar", control_font_low_color);
|
||||||
theme->set_color("font_disabled_color", "Tabs", control_font_disabled_color);
|
theme->set_color("font_disabled_color", "TabBar", control_font_disabled_color);
|
||||||
theme->set_color("font_outline_color", "Tabs", Color(1, 1, 1));
|
theme->set_color("font_outline_color", "TabBar", Color(1, 1, 1));
|
||||||
|
|
||||||
theme->set_constant("hseparation", "Tabs", 4 * scale);
|
theme->set_constant("hseparation", "TabBar", 4 * scale);
|
||||||
theme->set_constant("outline_size", "Tabs", 0);
|
theme->set_constant("outline_size", "TabBar", 0);
|
||||||
|
|
||||||
// Separators
|
// Separators
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user