Add and adjust more scroll hints in the editor

This commit is contained in:
Michael Alexsander
2025-12-15 17:06:00 -03:00
parent 24333c4e3d
commit a45bdce763
12 changed files with 115 additions and 20 deletions

View File

@@ -754,10 +754,15 @@ FindInFilesPanel::FindInFilesPanel() {
vbc->add_child(hbc);
}
_results_mc = memnew(MarginContainer);
_results_mc->set_theme_type_variation("NoBorderHorizontal");
_results_mc->set_v_size_flags(SIZE_EXPAND_FILL);
vbc->add_child(_results_mc);
_results_display = memnew(Tree);
_results_display->set_accessibility_name(TTRC("Search Results"));
_results_display->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
_results_display->set_v_size_flags(SIZE_EXPAND_FILL);
_results_display->set_scroll_hint_mode(Tree::SCROLL_HINT_MODE_BOTH);
_results_display->connect(SceneStringName(item_selected), callable_mp(this, &FindInFilesPanel::_on_result_selected));
_results_display->connect("item_edited", callable_mp(this, &FindInFilesPanel::_on_item_edited));
_results_display->connect("button_clicked", callable_mp(this, &FindInFilesPanel::_on_button_clicked));
@@ -768,7 +773,7 @@ FindInFilesPanel::FindInFilesPanel() {
_results_display->add_theme_constant_override("inner_item_margin_left", 0);
_results_display->add_theme_constant_override("inner_item_margin_right", 0);
_results_display->create_item(); // Root
vbc->add_child(_results_display);
_results_mc->add_child(_results_display);
{
_replace_container = memnew(HBoxContainer);
@@ -862,6 +867,22 @@ void FindInFilesPanel::stop_search() {
_cancel_button->hide();
}
void FindInFilesPanel::update_layout(EditorDock::DockLayout p_layout) {
bool new_floating = (p_layout == EditorDock::DOCK_LAYOUT_FLOATING);
if (_floating == new_floating) {
return;
}
_floating = new_floating;
if (_floating) {
_results_mc->set_theme_type_variation("NoBorderHorizontalBottom");
_results_display->set_scroll_hint_mode(Tree::SCROLL_HINT_MODE_TOP);
} else {
_results_mc->set_theme_type_variation("NoBorderHorizontal");
_results_display->set_scroll_hint_mode(Tree::SCROLL_HINT_MODE_BOTH);
}
}
void FindInFilesPanel::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_THEME_CHANGED: {
@@ -1419,6 +1440,15 @@ void FindInFilesContainer::_on_find_in_files_close_button_clicked(FindInFilesPan
}
}
void FindInFilesContainer::update_layout(EditorDock::DockLayout p_layout) {
for (Node *node : _tabs->iterate_children()) {
FindInFilesPanel *panel = Object::cast_to<FindInFilesPanel>(node);
if (panel) {
panel->update_layout(p_layout);
}
}
}
void FindInFilesContainer::_on_tab_close_pressed(int p_tab) {
FindInFilesPanel *panel = Object::cast_to<FindInFilesPanel>(_tabs->get_tab_control(p_tab));
if (panel) {

View File

@@ -187,6 +187,8 @@ public:
void start_search();
void stop_search();
void update_layout(EditorDock::DockLayout p_layout);
protected:
static void _bind_methods();
@@ -244,6 +246,9 @@ private:
HBoxContainer *_replace_container = nullptr;
LineEdit *_replace_line_edit = nullptr;
Button *_replace_all_button = nullptr;
bool _floating = false;
MarginContainer *_results_mc = nullptr;
};
class PopupMenu;
@@ -285,6 +290,8 @@ protected:
void _on_find_in_files_modified_files(const PackedStringArray &p_paths);
void _on_find_in_files_close_button_clicked(FindInFilesPanel *p_panel);
virtual void update_layout(EditorDock::DockLayout p_layout) override;
public:
FindInFilesContainer();