Analyser le menu Services
Chacha
Membre
J'aimerais analyser le contenu du menu Services au démarrage d'une application, pour inspecter les raccourcis clavier déjà attribués. "Fastoche", me direz-vous primesautièrement, il suffit d'appeler la méthode -(NSMenu*)servicesMenu de NSApplication.
Et bien non, vous rétorquerai-je, car il se trouve que d'après mes essais, cette méthode ne me renvoie le bon menu qu'après que l'utilisateur l'a affiché au moins une fois en cliquant dessus ! (ça le faisait déjà sous Tiger, c'est toujours le cas sous Leopard, même avec un NSUpdateDynamicServices() qui marche, maintenant)
Cela contredit d'ailleurs la documentation :
Auriez-vous une idée pour bluffer le système et lui faire croire discrètement (on va éviter l'AppleScript) que le menu doit être calculé ?
Dans la même documentation, on lit :
Ce qui laisse à penser qu'il faut chercher du côté de validRequestorForSendType:returnType, mais je n'ai pas réussi à faire quoi que ce soit.
+
Chacha
Et bien non, vous rétorquerai-je, car il se trouve que d'après mes essais, cette méthode ne me renvoie le bon menu qu'après que l'utilisateur l'a affiché au moins une fois en cliquant dessus ! (ça le faisait déjà sous Tiger, c'est toujours le cas sous Leopard, même avec un NSUpdateDynamicServices() qui marche, maintenant)
Cela contredit d'ailleurs la documentation :
ADC Home > Reference Library > Guides > Carbon > Interapplication Communication > Setting Up Your Carbon Application to Use the Services Menu > Application Services Concepts > Items in the Services Menu
(...)The Services menu for an application is populated with items when the application starts up, but items in the menu aren't enabled until the user chooses Services from the application menu(...)
Auriez-vous une idée pour bluffer le système et lui faire croire discrètement (on va éviter l'AppleScript) que le menu doit être calculé ?
Dans la même documentation, on lit :
Choosing Services causes the current responder chain to be searched for objects that can provide or receive data of the types used by each service listed in the Services menu. If an object is found that can use a given service, the service's menu item is enabled. Menu items for which no suitable object is found are dimmed, unavailable for the user.
Ce qui laisse à penser qu'il faut chercher du côté de validRequestorForSendType:returnType, mais je n'ai pas réussi à faire quoi que ce soit.
+
Chacha
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses