Fix ColorPicker load/save swatches button interactions

This commit is contained in:
Giganzo
2025-01-22 19:23:29 +01:00
parent b0655dc86f
commit a36f064204
2 changed files with 6 additions and 22 deletions

View File

@ -1770,13 +1770,6 @@ void ColorPicker::_pick_finished() {
} }
void ColorPicker::_update_menu_items() { void ColorPicker::_update_menu_items() {
if (!options_menu) {
options_menu = memnew(PopupMenu);
add_child(options_menu, false, INTERNAL_MODE_FRONT);
options_menu->force_parent_owned();
options_menu->connect("id_pressed", callable_mp(this, &ColorPicker::_options_menu_cbk));
}
options_menu->clear(); options_menu->clear();
options_menu->reset_size(); options_menu->reset_size();
@ -1802,16 +1795,6 @@ void ColorPicker::_update_menu_items() {
} }
} }
void ColorPicker::_update_menu() {
_update_menu_items();
Rect2 gt = menu_btn->get_screen_rect();
menu_btn->reset_size();
int min_size = menu_btn->get_minimum_size().width;
Vector2 popup_pos = gt.get_end() - Vector2(min_size, 0);
options_menu->set_position(popup_pos);
options_menu->popup();
}
void ColorPicker::_options_menu_cbk(int p_which) { void ColorPicker::_options_menu_cbk(int p_which) {
if (!file_dialog) { if (!file_dialog) {
file_dialog = memnew(FileDialog); file_dialog = memnew(FileDialog);
@ -2369,13 +2352,15 @@ ColorPicker::ColorPicker() {
btn_preset->connect(SceneStringName(toggled), callable_mp(this, &ColorPicker::_show_hide_preset).bind(btn_preset, preset_container)); btn_preset->connect(SceneStringName(toggled), callable_mp(this, &ColorPicker::_show_hide_preset).bind(btn_preset, preset_container));
palette_box->add_child(btn_preset); palette_box->add_child(btn_preset);
menu_btn = memnew(Button); menu_btn = memnew(MenuButton);
menu_btn->set_flat(true); menu_btn->set_flat(true);
menu_btn->set_tooltip_text(ETR("Show all options available.")); menu_btn->set_tooltip_text(ETR("Show all options available."));
menu_btn->set_focus_mode(FOCUS_NONE); menu_btn->connect("about_to_popup", callable_mp(this, &ColorPicker::_update_menu_items));
menu_btn->connect(SceneStringName(pressed), callable_mp(this, &ColorPicker::_update_menu));
palette_box->add_child(menu_btn); palette_box->add_child(menu_btn);
options_menu = menu_btn->get_popup();
options_menu->connect(SceneStringName(id_pressed), callable_mp(this, &ColorPicker::_options_menu_cbk));
palette_name = memnew(Label); palette_name = memnew(Label);
palette_name->hide(); palette_name->hide();
palette_name->set_mouse_filter(MOUSE_FILTER_PASS); palette_name->set_mouse_filter(MOUSE_FILTER_PASS);

View File

@ -144,7 +144,7 @@ private:
TextureRect *picker_texture_rect = nullptr; TextureRect *picker_texture_rect = nullptr;
Color picker_color; Color picker_color;
FileDialog *file_dialog = nullptr; FileDialog *file_dialog = nullptr;
Button *menu_btn = nullptr; MenuButton *menu_btn = nullptr;
PopupMenu *options_menu = nullptr; PopupMenu *options_menu = nullptr;
MarginContainer *internal_margin = nullptr; MarginContainer *internal_margin = nullptr;
@ -305,7 +305,6 @@ private:
void _target_gui_input(const Ref<InputEvent> &p_event); void _target_gui_input(const Ref<InputEvent> &p_event);
void _pick_finished(); void _pick_finished();
void _update_menu_items(); void _update_menu_items();
void _update_menu();
void _options_menu_cbk(int p_which); void _options_menu_cbk(int p_which);
// Legacy color picking. // Legacy color picking.