Fix new quick open dialog to be showed at the center of the screen
This commit is contained in:
parent
bcc061edae
commit
5eeebb3e37
@ -38,6 +38,9 @@
|
|||||||
|
|
||||||
EditorCommandPalette *EditorCommandPalette::singleton = nullptr;
|
EditorCommandPalette *EditorCommandPalette::singleton = nullptr;
|
||||||
|
|
||||||
|
static Rect2i prev_rect = Rect2i();
|
||||||
|
static bool was_showed = false;
|
||||||
|
|
||||||
float EditorCommandPalette::_score_path(const String &p_search, const String &p_path) {
|
float EditorCommandPalette::_score_path(const String &p_search, const String &p_path) {
|
||||||
float score = 0.9f + .1f * (p_search.length() / (float)p_path.length());
|
float score = 0.9f + .1f * (p_search.length() / (float)p_path.length());
|
||||||
|
|
||||||
@ -145,6 +148,17 @@ void EditorCommandPalette::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("remove_command", "key_name"), &EditorCommandPalette::remove_command);
|
ClassDB::bind_method(D_METHOD("remove_command", "key_name"), &EditorCommandPalette::remove_command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EditorCommandPalette::_notification(int p_what) {
|
||||||
|
switch (p_what) {
|
||||||
|
case NOTIFICATION_VISIBILITY_CHANGED: {
|
||||||
|
if (!is_visible()) {
|
||||||
|
prev_rect = Rect2i(get_position(), get_size());
|
||||||
|
was_showed = true;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void EditorCommandPalette::_sbox_input(const Ref<InputEvent> &p_ie) {
|
void EditorCommandPalette::_sbox_input(const Ref<InputEvent> &p_ie) {
|
||||||
Ref<InputEventKey> k = p_ie;
|
Ref<InputEventKey> k = p_ie;
|
||||||
if (k.is_valid()) {
|
if (k.is_valid()) {
|
||||||
@ -171,12 +185,10 @@ void EditorCommandPalette::_confirmed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EditorCommandPalette::open_popup() {
|
void EditorCommandPalette::open_popup() {
|
||||||
static bool was_showed = false;
|
if (was_showed) {
|
||||||
if (!was_showed) {
|
popup(prev_rect);
|
||||||
was_showed = true;
|
|
||||||
popup_centered_clamped(Size2(600, 440) * EDSCALE, 0.8f);
|
|
||||||
} else {
|
} else {
|
||||||
show();
|
popup_centered_clamped(Size2(600, 440) * EDSCALE, 0.8f);
|
||||||
}
|
}
|
||||||
|
|
||||||
command_search_box->clear();
|
command_search_box->clear();
|
||||||
|
@ -91,6 +91,7 @@ class EditorCommandPalette : public ConfirmationDialog {
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
void _notification(int p_what);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void open_popup();
|
void open_popup();
|
||||||
|
@ -34,23 +34,24 @@
|
|||||||
#include "editor/editor_node.h"
|
#include "editor/editor_node.h"
|
||||||
#include "editor/editor_scale.h"
|
#include "editor/editor_scale.h"
|
||||||
|
|
||||||
void EditorQuickOpen::popup_dialog(const String &p_base, bool p_enable_multi, bool p_dontclear) {
|
static Rect2i prev_rect = Rect2i();
|
||||||
|
static bool was_showed = false;
|
||||||
|
|
||||||
|
void EditorQuickOpen::popup_dialog(const String &p_base, bool p_enable_multi, bool p_dont_clear) {
|
||||||
base_type = p_base;
|
base_type = p_base;
|
||||||
allow_multi_select = p_enable_multi;
|
allow_multi_select = p_enable_multi;
|
||||||
search_options->set_select_mode(allow_multi_select ? Tree::SELECT_MULTI : Tree::SELECT_SINGLE);
|
search_options->set_select_mode(allow_multi_select ? Tree::SELECT_MULTI : Tree::SELECT_SINGLE);
|
||||||
|
|
||||||
static bool was_showed = false;
|
if (was_showed) {
|
||||||
if (!was_showed) {
|
popup(prev_rect);
|
||||||
was_showed = true;
|
|
||||||
popup_centered_clamped(Size2(600, 440) * EDSCALE, 0.8f);
|
|
||||||
} else {
|
} else {
|
||||||
show();
|
popup_centered_clamped(Size2(600, 440) * EDSCALE, 0.8f);
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->get_filesystem();
|
EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->get_filesystem();
|
||||||
_build_search_cache(efsd);
|
_build_search_cache(efsd);
|
||||||
|
|
||||||
if (p_dontclear) {
|
if (p_dont_clear) {
|
||||||
search_box->select_all();
|
search_box->select_all();
|
||||||
_update_search();
|
_update_search();
|
||||||
} else {
|
} else {
|
||||||
@ -251,6 +252,13 @@ void EditorQuickOpen::_notification(int p_what) {
|
|||||||
search_box->set_clear_button_enabled(true);
|
search_box->set_clear_button_enabled(true);
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
|
case NOTIFICATION_VISIBILITY_CHANGED: {
|
||||||
|
if (!is_visible()) {
|
||||||
|
prev_rect = Rect2i(get_position(), get_size());
|
||||||
|
was_showed = true;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
case NOTIFICATION_EXIT_TREE: {
|
case NOTIFICATION_EXIT_TREE: {
|
||||||
disconnect("confirmed", callable_mp(this, &EditorQuickOpen::_confirmed));
|
disconnect("confirmed", callable_mp(this, &EditorQuickOpen::_confirmed));
|
||||||
} break;
|
} break;
|
||||||
|
Loading…
Reference in New Issue
Block a user