musescore / MuseScore

MuseScore is an open source and free music notation software. For support, contribution, bug reports, visit MuseScore.org. Fork and make pull requests!
https://musescore.org
Other
12.08k stars 2.61k forks source link

Non-modal plug-in “window” without Qtquick.dialogs #22084

Closed TeeDeeY closed 5 months ago

TeeDeeY commented 5 months ago

When using qt6.2.4, plugins supposedly can’t use qtquick.dialogs any more.

My prior plug-in dialog was not modal (it was floating) and allowed switching back and forth between the score and the dialog box.

When I made a revised plug-in (edit: MuseScore 4.4 Master using Qt 6.2.4) without using “.dialogs”, the new window would not give up control.

How do I made a plug-in window that is not modal (I want a floating window )?

Thanks

TeeDeeY commented 5 months ago

Using Window { }, I can have a nonmodal window but I have to explore how to make it work in Qt5 and Qt6. Edit: seems like maybe not applicable as a dialog replacement. Investigating.

TeeDeeY commented 5 months ago

“Dialog” type is not required to have a non-modal window in Qt5. The default seems to be non-modal.

A qt6 build of the master directory for v4.4 gives the modal behavior.

TeeDeeY commented 5 months ago

I tried the default lily pond lyrics plug-in in ms 4.4. The modal mode blocked seeing the score being changed. My plug-in isn’t the only one affected.

igorkorsukov commented 5 months ago

@TeeDeeY Thank you for bringing this to our attention. Next week I will try to make it possible to configure the dialog so that it is not modal.

igorkorsukov commented 5 months ago

@TeeDeeY Now all dialogs with plugins are not modal by default. For extensions of the new format, we can specify a modality (also not modal by default). (documentation about extensions of the new format will come later)

TeeDeeY commented 5 months ago

Thanks for making the changes. I hope the updated plug-in/extension system allows working across multiple instances of the program (multi Score) and access to the full (all items, nothing removed) copy/paste buffer. :-)

Being able to use add() to add a tempo, rehearsal mark, or similar item onto a segment-offset where no preexisting segment exists would be nice. For instance, since tempos can be inserted from a lower staff and then gravitate to the top, and then can have no relationship with the top staff segment structure, copying/adding using a plug-in requires workarounds.