OVH Cloud OVH Cloud

[RubyCocoa] ouvrir et fermer une sheet et ré-accéder à mainWindow

2 réponses
Avatar
pere.noel
j'arrive bien à ouvrir et fermer une sheet mais une fois fait je n'ai
plus accès ni au boutons de mainWindow ni au mainmenu...

mon code d'ouverture :

def prefsSheetOpen(sender)
OSX::NSApp().beginSheet_modalForWindow_modalDelegate_didEndSelector_cont
extInfo(@prefsSheet, @mainWindow, self, nil, nil)
OSX::NSApp().runModalForWindow(@prefsSheet)
end

et celui de femeture :


def prefsSheetSave(sender)
p "prefsSheetSave"
OSX::NSApp().endSheet(@prefsSheet)
@prefsSheet.close()
p "prefsSheetSave finished"
end

elle se ferme donc correctement et j'ai bien les deux messages :
"prefsSheetSave"
"prefsSheetSave finished"
au "Run Log"

je suppose que je dois faire quelque chose en + pour réobtenir accès à
mainWindow ???

--
une bévue

2 réponses

Avatar
luc
Une bévue wrote:

je suppose que je dois faire quelque chose en + pour réobtenir accès à
mainWindow ???


Oui.

La session modale tourne toujours et bloque donc la runloop principale.
Tu dois contrebalancer le 'runModalForWindow' par un 'stopModal' (le
plus simple, il y a aussi 'stopModalWithCode:' ou 'abortModal'), juste
après le '@prefsSheet.close' par exemple.

--
Luc Heinrich

Avatar
pere.noel
Luc Heinrich wrote:

La session modale tourne toujours et bloque donc la runloop principale.
Tu dois contrebalancer le 'runModalForWindow' par un 'stopModal' (le
plus simple, il y a aussi 'stopModalWithCode:' ou 'abortModal'), juste
après le '@prefsSheet.close' par exemple.


bon, c'est ce que j'avais "intuité", mais, c'est curieux en Cocoa-Java
je n'avais pas à faire ça...
en tout cas merci le "OSX::NSApp().stopModal()" marche impec.

à l'instant quelqu'un a posté une réponse sur la mail-list rubycocoa.

il me donne une autre solution :

ne pas utiliser OSX::NSApp().runModalForWindow(@prefsSheet)
qui est inutile et ça roule...
--
une bévue