Make tab containers in editor, project settings, and export dialog, to use hidden tabs for min size computation.

This commit is contained in:
azagaya 2019-01-26 15:41:36 -03:00
parent b203f80dfc
commit fa6f86b886
5 changed files with 25 additions and 4 deletions

View File

@ -889,7 +889,8 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj, Map<RES, bool>
ret_changed = true; ret_changed = true;
} }
} break; } break;
default: {} default: {
}
} }
} }
@ -5102,6 +5103,7 @@ EditorNode::EditorNode() {
dock_slot[i]->set_drag_to_rearrange_enabled(true); dock_slot[i]->set_drag_to_rearrange_enabled(true);
dock_slot[i]->set_tabs_rearrange_group(1); dock_slot[i]->set_tabs_rearrange_group(1);
dock_slot[i]->connect("tab_changed", this, "_dock_tab_changed"); dock_slot[i]->connect("tab_changed", this, "_dock_tab_changed");
dock_slot[i]->set_use_hidden_tabs_for_min_size(true);
} }
dock_drag_timer = memnew(Timer); dock_drag_timer = memnew(Timer);

View File

@ -1115,6 +1115,7 @@ ProjectExportDialog::ProjectExportDialog() {
sections = memnew(TabContainer); sections = memnew(TabContainer);
sections->set_tab_align(TabContainer::ALIGN_LEFT); sections->set_tab_align(TabContainer::ALIGN_LEFT);
sections->set_use_hidden_tabs_for_min_size(true);
settings_vb->add_child(sections); settings_vb->add_child(sections);
sections->set_v_size_flags(SIZE_EXPAND_FILL); sections->set_v_size_flags(SIZE_EXPAND_FILL);

View File

@ -294,7 +294,8 @@ void ProjectSettingsEditor::_device_input_add() {
ie = jb; ie = jb;
} break; } break;
default: {} default: {
}
} }
if (idx < 0 || idx >= events.size()) { if (idx < 0 || idx >= events.size()) {
@ -519,7 +520,8 @@ void ProjectSettingsEditor::_add_item(int p_item, Ref<InputEvent> p_exiting_even
} }
} break; } break;
default: {} default: {
}
} }
} }
@ -1679,6 +1681,7 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
tab_container = memnew(TabContainer); tab_container = memnew(TabContainer);
tab_container->set_tab_align(TabContainer::ALIGN_LEFT); tab_container->set_tab_align(TabContainer::ALIGN_LEFT);
tab_container->set_use_hidden_tabs_for_min_size(true);
add_child(tab_container); add_child(tab_container);
VBoxContainer *props_base = memnew(VBoxContainer); VBoxContainer *props_base = memnew(VBoxContainer);

View File

@ -791,7 +791,7 @@ Size2 TabContainer::get_minimum_size() const {
Control *c = tabs[i]; Control *c = tabs[i];
if (!c->is_visible_in_tree()) if (!c->is_visible_in_tree() && !use_hidden_tabs_for_min_size)
continue; continue;
Size2 cms = c->get_combined_minimum_size(); Size2 cms = c->get_combined_minimum_size();
@ -838,6 +838,13 @@ int TabContainer::get_tabs_rearrange_group() const {
return tabs_rearrange_group; return tabs_rearrange_group;
} }
void TabContainer::set_use_hidden_tabs_for_min_size(bool p_use_hidden_tabs) {
use_hidden_tabs_for_min_size = p_use_hidden_tabs;
}
bool TabContainer::get_use_hidden_tabs_for_min_size() const {
return use_hidden_tabs_for_min_size;
}
void TabContainer::_bind_methods() { void TabContainer::_bind_methods() {
ClassDB::bind_method(D_METHOD("_gui_input"), &TabContainer::_gui_input); ClassDB::bind_method(D_METHOD("_gui_input"), &TabContainer::_gui_input);
@ -864,6 +871,9 @@ void TabContainer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_tabs_rearrange_group", "group_id"), &TabContainer::set_tabs_rearrange_group); ClassDB::bind_method(D_METHOD("set_tabs_rearrange_group", "group_id"), &TabContainer::set_tabs_rearrange_group);
ClassDB::bind_method(D_METHOD("get_tabs_rearrange_group"), &TabContainer::get_tabs_rearrange_group); ClassDB::bind_method(D_METHOD("get_tabs_rearrange_group"), &TabContainer::get_tabs_rearrange_group);
ClassDB::bind_method(D_METHOD("set_use_hidden_tabs_for_min_size", "enabled"), &TabContainer::set_use_hidden_tabs_for_min_size);
ClassDB::bind_method(D_METHOD("get_use_hidden_tabs_for_min_size"), &TabContainer::get_use_hidden_tabs_for_min_size);
ClassDB::bind_method(D_METHOD("_child_renamed_callback"), &TabContainer::_child_renamed_callback); ClassDB::bind_method(D_METHOD("_child_renamed_callback"), &TabContainer::_child_renamed_callback);
ClassDB::bind_method(D_METHOD("_on_theme_changed"), &TabContainer::_on_theme_changed); ClassDB::bind_method(D_METHOD("_on_theme_changed"), &TabContainer::_on_theme_changed);
ClassDB::bind_method(D_METHOD("_update_current_tab"), &TabContainer::_update_current_tab); ClassDB::bind_method(D_METHOD("_update_current_tab"), &TabContainer::_update_current_tab);
@ -876,6 +886,7 @@ void TabContainer::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "current_tab", PROPERTY_HINT_RANGE, "-1,4096,1", PROPERTY_USAGE_EDITOR), "set_current_tab", "get_current_tab"); ADD_PROPERTY(PropertyInfo(Variant::INT, "current_tab", PROPERTY_HINT_RANGE, "-1,4096,1", PROPERTY_USAGE_EDITOR), "set_current_tab", "get_current_tab");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "tabs_visible"), "set_tabs_visible", "are_tabs_visible"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "tabs_visible"), "set_tabs_visible", "are_tabs_visible");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "drag_to_rearrange_enabled"), "set_drag_to_rearrange_enabled", "get_drag_to_rearrange_enabled"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "drag_to_rearrange_enabled"), "set_drag_to_rearrange_enabled", "get_drag_to_rearrange_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_hidden_tabs_for_min_size"), "set_use_hidden_tabs_for_min_size", "get_use_hidden_tabs_for_min_size");
BIND_ENUM_CONSTANT(ALIGN_LEFT); BIND_ENUM_CONSTANT(ALIGN_LEFT);
BIND_ENUM_CONSTANT(ALIGN_CENTER); BIND_ENUM_CONSTANT(ALIGN_CENTER);
@ -896,4 +907,5 @@ TabContainer::TabContainer() {
popup = NULL; popup = NULL;
drag_to_rearrange_enabled = false; drag_to_rearrange_enabled = false;
tabs_rearrange_group = -1; tabs_rearrange_group = -1;
use_hidden_tabs_for_min_size = false;
} }

View File

@ -59,6 +59,7 @@ private:
int _get_top_margin() const; int _get_top_margin() const;
Popup *popup; Popup *popup;
bool drag_to_rearrange_enabled; bool drag_to_rearrange_enabled;
bool use_hidden_tabs_for_min_size;
int tabs_rearrange_group; int tabs_rearrange_group;
Vector<Control *> _get_tabs() const; Vector<Control *> _get_tabs() const;
@ -115,6 +116,8 @@ public:
bool get_drag_to_rearrange_enabled() const; bool get_drag_to_rearrange_enabled() const;
void set_tabs_rearrange_group(int p_group_id); void set_tabs_rearrange_group(int p_group_id);
int get_tabs_rearrange_group() const; int get_tabs_rearrange_group() const;
void set_use_hidden_tabs_for_min_size(bool p_use_hidden_tabs);
bool get_use_hidden_tabs_for_min_size() const;
TabContainer(); TabContainer();
}; };