Redesign InputEvent editor plugin
- Use vertical layout and add text wrapping - Fix Window.popup_centered() rect calculation
This commit is contained in:
parent
43f94c95aa
commit
0b0a74e135
|
@ -589,8 +589,6 @@ void InputEventConfigurationDialog::_notification(int p_what) {
|
|||
icon_cache.joypad_button = get_theme_icon(SNAME("JoyButton"), SNAME("EditorIcons"));
|
||||
icon_cache.joypad_axis = get_theme_icon(SNAME("JoyAxis"), SNAME("EditorIcons"));
|
||||
|
||||
mouse_detection_rect->set_color(get_theme_color(SNAME("dark_color_2"), SNAME("Editor")));
|
||||
|
||||
_update_input_list();
|
||||
} break;
|
||||
}
|
||||
|
@ -624,7 +622,7 @@ void InputEventConfigurationDialog::popup_and_configure(const Ref<InputEvent> &p
|
|||
device_id_option->select(0);
|
||||
}
|
||||
|
||||
popup_centered();
|
||||
popup_centered(Size2(0, 400) * EDSCALE);
|
||||
}
|
||||
|
||||
Ref<InputEvent> InputEventConfigurationDialog::get_event() const {
|
||||
|
@ -656,8 +654,8 @@ InputEventConfigurationDialog::InputEventConfigurationDialog() {
|
|||
event_as_text = memnew(Label);
|
||||
event_as_text->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
|
||||
vb->add_child(event_as_text);
|
||||
// Mouse button detection rect (Mouse button event outside this ColorRect will be ignored)
|
||||
mouse_detection_rect = memnew(ColorRect);
|
||||
// Mouse button detection rect (Mouse button event outside this rect will be ignored)
|
||||
mouse_detection_rect = memnew(Panel);
|
||||
mouse_detection_rect->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
vb->add_child(mouse_detection_rect);
|
||||
tab_container->add_child(vb);
|
||||
|
@ -1171,7 +1169,7 @@ void ActionMapEditor::update_action_list(const Vector<ActionInfo> &p_action_info
|
|||
|
||||
void ActionMapEditor::show_message(const String &p_message) {
|
||||
message->set_text(p_message);
|
||||
message->popup_centered(Size2(300, 100) * EDSCALE);
|
||||
message->popup_centered();
|
||||
}
|
||||
|
||||
void ActionMapEditor::use_external_search_box(LineEdit *p_searchbox) {
|
||||
|
|
|
@ -67,7 +67,7 @@ private:
|
|||
|
||||
// Listening for input
|
||||
Label *event_as_text = nullptr;
|
||||
ColorRect *mouse_detection_rect = nullptr;
|
||||
Panel *mouse_detection_rect = nullptr;
|
||||
|
||||
// List of All Key/Mouse/Joypad input options.
|
||||
int allowed_input_types;
|
||||
|
|
|
@ -33,6 +33,15 @@
|
|||
void InputEventConfigContainer::_bind_methods() {
|
||||
}
|
||||
|
||||
void InputEventConfigContainer::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_ENTER_TREE:
|
||||
case NOTIFICATION_THEME_CHANGED: {
|
||||
open_config_button->set_icon(get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")));
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
void InputEventConfigContainer::_configure_pressed() {
|
||||
config_dialog->popup_and_configure(input_event);
|
||||
}
|
||||
|
@ -47,12 +56,6 @@ void InputEventConfigContainer::_config_dialog_confirmed() {
|
|||
_event_changed();
|
||||
}
|
||||
|
||||
Size2 InputEventConfigContainer::get_minimum_size() const {
|
||||
// Don't bother with a minimum x size for the control - we don't want the inspector
|
||||
// to jump in size if a long text is placed in the label (e.g. Joypad Axis description)
|
||||
return Size2(0, HBoxContainer::get_minimum_size().y);
|
||||
}
|
||||
|
||||
void InputEventConfigContainer::set_event(const Ref<InputEvent> &p_event) {
|
||||
Ref<InputEventKey> k = p_event;
|
||||
Ref<InputEventMouseButton> m = p_event;
|
||||
|
@ -75,29 +78,26 @@ void InputEventConfigContainer::set_event(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
InputEventConfigContainer::InputEventConfigContainer() {
|
||||
MarginContainer *mc = memnew(MarginContainer);
|
||||
mc->add_theme_constant_override("margin_left", 10);
|
||||
mc->add_theme_constant_override("margin_right", 10);
|
||||
mc->add_theme_constant_override("margin_top", 10);
|
||||
mc->add_theme_constant_override("margin_bottom", 10);
|
||||
add_child(mc);
|
||||
|
||||
HBoxContainer *hb = memnew(HBoxContainer);
|
||||
mc->add_child(hb);
|
||||
input_event_text = memnew(Label);
|
||||
input_event_text->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
input_event_text->set_autowrap_mode(Label::AutowrapMode::AUTOWRAP_WORD_SMART);
|
||||
input_event_text->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
|
||||
add_child(input_event_text);
|
||||
|
||||
open_config_button = memnew(Button);
|
||||
open_config_button->set_text(TTR("Configure"));
|
||||
open_config_button->connect("pressed", callable_mp(this, &InputEventConfigContainer::_configure_pressed));
|
||||
hb->add_child(open_config_button);
|
||||
add_child(open_config_button);
|
||||
|
||||
input_event_text = memnew(Label);
|
||||
hb->add_child(input_event_text);
|
||||
add_child(memnew(Control));
|
||||
|
||||
config_dialog = memnew(InputEventConfigurationDialog);
|
||||
config_dialog->connect("confirmed", callable_mp(this, &InputEventConfigContainer::_config_dialog_confirmed));
|
||||
add_child(config_dialog);
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
|
||||
bool EditorInspectorPluginInputEvent::can_handle(Object *p_object) {
|
||||
Ref<InputEventKey> k = Ref<InputEventKey>(p_object);
|
||||
Ref<InputEventMouseButton> m = Ref<InputEventMouseButton>(p_object);
|
||||
|
@ -115,6 +115,8 @@ void EditorInspectorPluginInputEvent::parse_begin(Object *p_object) {
|
|||
add_custom_control(picker_controls);
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
|
||||
InputEventEditorPlugin::InputEventEditorPlugin() {
|
||||
Ref<EditorInspectorPluginInputEvent> plugin;
|
||||
plugin.instantiate();
|
||||
|
|
|
@ -35,8 +35,8 @@
|
|||
#include "editor/editor_inspector.h"
|
||||
#include "editor/editor_plugin.h"
|
||||
|
||||
class InputEventConfigContainer : public HBoxContainer {
|
||||
GDCLASS(InputEventConfigContainer, HBoxContainer);
|
||||
class InputEventConfigContainer : public VBoxContainer {
|
||||
GDCLASS(InputEventConfigContainer, VBoxContainer);
|
||||
|
||||
Label *input_event_text = nullptr;
|
||||
Button *open_config_button = nullptr;
|
||||
|
@ -50,10 +50,10 @@ class InputEventConfigContainer : public HBoxContainer {
|
|||
void _event_changed();
|
||||
|
||||
protected:
|
||||
void _notification(int p_what);
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
virtual Size2 get_minimum_size() const override;
|
||||
void set_event(const Ref<InputEvent> &p_event);
|
||||
|
||||
InputEventConfigContainer();
|
||||
|
|
|
@ -1066,11 +1066,9 @@ void Window::popup_centered(const Size2i &p_minsize) {
|
|||
}
|
||||
|
||||
Rect2i popup_rect;
|
||||
if (p_minsize == Size2i()) {
|
||||
popup_rect.size = _get_contents_minimum_size();
|
||||
} else {
|
||||
popup_rect.size = p_minsize;
|
||||
}
|
||||
Size2 contents_minsize = _get_contents_minimum_size();
|
||||
popup_rect.size.x = MAX(p_minsize.x, contents_minsize.x);
|
||||
popup_rect.size.y = MAX(p_minsize.y, contents_minsize.y);
|
||||
popup_rect.position = parent_rect.position + (parent_rect.size - popup_rect.size) / 2;
|
||||
|
||||
popup(popup_rect);
|
||||
|
|
Loading…
Reference in New Issue