-
-
Notifications
You must be signed in to change notification settings - Fork 21.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SpriteFrames Editor: Fix Frame Duration applied to wrong frame when switching frame #79872
Conversation
@@ -1876,8 +1874,8 @@ SpriteFramesEditor::SpriteFramesEditor() { | |||
frame_list->set_max_text_lines(2); | |||
SET_DRAG_FORWARDING_GCD(frame_list, SpriteFramesEditor); | |||
frame_list->connect("gui_input", callable_mp(this, &SpriteFramesEditor::_frame_list_gui_input)); | |||
frame_list->connect("item_selected", callable_mp(this, &SpriteFramesEditor::_frame_list_item_selected)); | |||
|
|||
// HACK: The item_selected signal is emitted before the Frame Duration spinbox loses focus and applies the change. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh no a hack.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To me, the deferred connection looks like a hack that could cause other issues. See #79695.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can avoid this if we track which frame was selected when focus was gain and update that frame on focus loss, not the one currently selected. See #79692 (comment).
@@ -1192,7 +1190,7 @@ void SpriteFramesEditor::_update_library(bool p_skip_selector) { | |||
|
|||
updating = true; | |||
|
|||
frame_duration->set_value(1.0); // Default. | |||
frame_duration->set_value_no_signal(1.0); // Default. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should the same be done to SpriteFramesEditor::_frame_list_item_selected
? Then you can probably remove the updating guards in it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Then you can probably remove the updating guards in it.
Probably yes, but I wouldn't want to add any regressions. We'll probably refactor this plugin at some point and remove the obscurity in the code execution order.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! |
Fix frame duration change applied to last frame when switching frame while editing value of Frame Duration spinbox.
Other changes:
UndoRedo
merging mode of the Frame Duration field to be consistent with the FPS field (I think it was my copy-paste mistake).*_no_signal()
methods in_update_library()
for Frame Duration control.